Merge branch 'cb/ci-build-pedantic'

CI update.

* cb/ci-build-pedantic:
  ci: run a pedantic build as part of the GitHub workflow
diff --git a/.cirrus.yml b/.cirrus.yml
index c2f5fe3..e114ffe 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -2,8 +2,15 @@
   CIRRUS_CLONE_DEPTH: 1
 
 freebsd_12_task:
+  env:
+    GIT_PROVE_OPTS: "--timer --jobs 10"
+    GIT_TEST_OPTS: "--no-chain-lint --no-bin-wrappers"
+    MAKEFLAGS: "-j4"
+    DEFAULT_TEST_TARGET: prove
+    DEVELOPER: 1
   freebsd_instance:
-    image: freebsd-12-1-release-amd64
+    image_family: freebsd-12-2
+    memory: 2G
   install_script:
     pkg install -y gettext gmake perl5
   create_user_script:
diff --git a/.github/workflows/check-whitespace.yml b/.github/workflows/check-whitespace.yml
index f148305..8c4358d 100644
--- a/.github/workflows/check-whitespace.yml
+++ b/.github/workflows/check-whitespace.yml
@@ -12,15 +12,9 @@
   check-whitespace:
     runs-on: ubuntu-latest
     steps:
-    - name: Set commit count
-      shell: bash
-      run: echo "COMMIT_DEPTH=$((1+$COMMITS))" >>$GITHUB_ENV
-      env:
-        COMMITS: ${{ github.event.pull_request.commits }}
-
     - uses: actions/checkout@v2
       with:
-        fetch-depth: ${{ env.COMMIT_DEPTH }}
+        fetch-depth: 0
 
     - name: git log --check
       id: check_out
@@ -47,25 +41,9 @@
             echo "${dash} ${etc}"
             ;;
           esac
-        done <<< $(git log --check --pretty=format:"---% h% s" -${{github.event.pull_request.commits}})
+        done <<< $(git log --check --pretty=format:"---% h% s" ${{github.event.pull_request.base.sha}}..)
 
         if test -n "${log}"
         then
-          echo "::set-output name=checkout::"${log}""
           exit 2
         fi
-
-    - name: Add Check Output as Comment
-      uses: actions/github-script@v3
-      id: add-comment
-      env:
-        log: ${{ steps.check_out.outputs.checkout }}
-      with:
-        script: |
-            await github.issues.createComment({
-              issue_number: context.issue.number,
-              owner: context.repo.owner,
-              repo: context.repo.repo,
-              body: `Whitespace errors found in workflow ${{ github.workflow }}:\n\n\`\`\`\n${process.env.log.replace(/\\n/g, "\n")}\n\`\`\``
-            })
-      if: ${{ failure() }}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index b935619..b053b01 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -81,44 +81,21 @@
     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
+    - uses: actions/checkout@v2
+    - uses: git-for-windows/setup-git-for-windows-sdk@v1
     - name: build
-      shell: powershell
+      shell: bash
       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
+      run: ci/make-test-artifacts.sh artifacts
+    - name: zip up tracked files
+      run: git archive -o artifacts/tracked.tar.gz HEAD
+    - name: upload tracked files and build artifacts
+      uses: actions/upload-artifact@v2
       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]
@@ -127,37 +104,25 @@
       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
+    - name: download tracked files and build artifacts
+      uses: actions/download-artifact@v2
       with:
         name: windows-artifacts
         path: ${{github.workspace}}
-    - name: extract build artifacts
+    - name: extract tracked files and 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/
+      run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
+    - uses: git-for-windows/setup-git-for-windows-sdk@v1
     - 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
-        "@
+      shell: bash
+      run: 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
+      shell: bash
+      run: ci/print-test-failures.sh
     - name: Upload failed tests' directories
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
-      uses: actions/upload-artifact@v1
+      uses: actions/upload-artifact@v2
       with:
         name: failed-tests-windows
         path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -165,27 +130,12 @@
     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
+    - uses: actions/checkout@v2
+    - uses: git-for-windows/setup-git-for-windows-sdk@v1
     - name: initialize vcpkg
       uses: actions/checkout@v2
       with:
@@ -203,75 +153,60 @@
     - name: add msbuild to PATH
       uses: microsoft/setup-msbuild@v1
     - name: copy dlls to root
-      shell: powershell
-      run: |
-        & compat\vcbuild\vcpkg_copy_dlls.bat release
-        if (!$?) { exit(1) }
+      shell: cmd
+      run: compat\vcbuild\vcpkg_copy_dlls.bat release
     - name: generate Visual Studio solution
       shell: bash
       run: |
         cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
-        -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
+        -DNO_GETTEXT=YesPlease -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
     - name: MSBuild
       run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
     - name: bundle artifact tar
-      shell: powershell
+      shell: bash
       env:
         MSVC: 1
         VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
       run: |
-        & 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
+        mkdir -p artifacts &&
+        eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
+    - name: zip up tracked files
+      run: git archive -o artifacts/tracked.tar.gz HEAD
+    - name: upload tracked files and build artifacts
+      uses: actions/upload-artifact@v2
       with:
         name: vs-artifacts
         path: artifacts
   vs-test:
     runs-on: windows-latest
-    needs: [vs-build, windows-build]
+    needs: vs-build
     strategy:
       fail-fast: false
       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
+    - uses: git-for-windows/setup-git-for-windows-sdk@v1
+    - name: download tracked files and build artifacts
+      uses: actions/download-artifact@v2
       with:
         name: vs-artifacts
         path: ${{github.workspace}}
-    - name: extract build artifacts
+    - name: extract tracked files and build artifacts
       shell: bash
-      run: tar xf artifacts.tar.gz
+      run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
     - name: test
-      shell: powershell
+      shell: bash
       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
-
-          ci/run-test-slice.sh ${{matrix.nr}} 10
-        "@
+      run: 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
+      shell: bash
+      run: ci/print-test-failures.sh
     - name: Upload failed tests' directories
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
-      uses: actions/upload-artifact@v1
+      uses: actions/upload-artifact@v2
       with:
         name: failed-tests-windows
         path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -302,14 +237,14 @@
       jobname: ${{matrix.vector.jobname}}
     runs-on: ${{matrix.vector.pool}}
     steps:
-    - uses: actions/checkout@v1
+    - uses: actions/checkout@v2
     - 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
+      uses: actions/upload-artifact@v2
       with:
         name: failed-tests-${{matrix.vector.jobname}}
         path: ${{env.FAILED_TEST_ARTIFACTS}}
@@ -349,9 +284,29 @@
       jobname: StaticAnalysis
     runs-on: ubuntu-18.04
     steps:
-    - uses: actions/checkout@v1
+    - uses: actions/checkout@v2
     - run: ci/install-dependencies.sh
     - run: ci/run-static-analysis.sh
+  sparse:
+    needs: ci-config
+    if: needs.ci-config.outputs.enabled == 'yes'
+    env:
+      jobname: sparse
+    runs-on: ubuntu-20.04
+    steps:
+    - name: Download a current `sparse` package
+      # Ubuntu's `sparse` version is too old for us
+      uses: git-for-windows/get-azure-pipelines-artifact@v0
+      with:
+        repository: git/git
+        definitionId: 10
+        artifact: sparse-20.04
+    - name: Install the current `sparse` package
+      run: sudo dpkg -i sparse-20.04/sparse_*.deb
+    - uses: actions/checkout@v2
+    - name: Install other dependencies
+      run: ci/install-dependencies.sh
+    - run: make sparse
   documentation:
     needs: ci-config
     if: needs.ci-config.outputs.enabled == 'yes'
@@ -359,6 +314,6 @@
       jobname: Documentation
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v1
+    - uses: actions/checkout@v2
     - run: ci/install-dependencies.sh
     - run: ci/test-documentation.sh
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index e3af089..711cb91 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -551,6 +551,51 @@
  documentation, please see the documentation-related advice in the
  Documentation/SubmittingPatches file).
 
+ In order to ensure the documentation is inclusive, avoid assuming
+ that an unspecified example person is male or female, and think
+ twice before using "he", "him", "she", or "her".  Here are some
+ tips to avoid use of gendered pronouns:
+
+  - Prefer succinctness and matter-of-factly describing functionality
+    in the abstract.  E.g.
+
+     --short:: Emit output in the short-format.
+
+    and avoid something like these overly verbose alternatives:
+
+     --short:: Use this to emit output in the short-format.
+     --short:: You can use this to get output in the short-format.
+     --short:: A user who prefers shorter output could....
+     --short:: Should a person and/or program want shorter output, he
+               she/they/it can...
+
+    This practice often eliminates the need to involve human actors in
+    your description, but it is a good practice regardless of the
+    avoidance of gendered pronouns.
+
+  - When it becomes awkward to stick to this style, prefer "you" when
+    addressing the the hypothetical user, and possibly "we" when
+    discussing how the program might react to the user.  E.g.
+
+      You can use this option instead of --xyz, but we might remove
+      support for it in future versions.
+
+    while keeping in mind that you can probably be less verbose, e.g.
+
+      Use this instead of --xyz. This option might be removed in future
+      versions.
+
+  - If you still need to refer to an example person that is
+    third-person singular, you may resort to "singular they" to avoid
+    "he/she/him/her", e.g.
+
+      A contributor asks their upstream to pull from them.
+
+    Note that this sounds ungrammatical and unnatural to those who
+    learned that "they" is only used for third-person plural, e.g.
+    those who learn English as a second language in some parts of the
+    world.
+
  Every user-visible change should be reflected in the documentation.
  The same general rule as for code applies -- imitate the existing
  conventions.
diff --git a/Documentation/MyFirstContribution.txt b/Documentation/MyFirstContribution.txt
index af0a9da..015cf24 100644
--- a/Documentation/MyFirstContribution.txt
+++ b/Documentation/MyFirstContribution.txt
@@ -47,7 +47,7 @@
 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
+==== https://web.libera.chat/#git-devel[#git-devel] on Libera Chat
 
 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
@@ -827,7 +827,7 @@
 (https://github.com/gitgitgadget/git/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+%22%2Fallow%22[Search:
 is:pr is:open "/allow"]), in which case both the author and the person who
 granted the `/allow` can now `/allow` you, or by inquiring on the
-https://webchat.freenode.net/#git-devel[#git-devel] IRC channel on Freenode
+https://web.libera.chat/#git-devel[#git-devel] IRC channel on Libera Chat
 linking your pull request and asking for someone to `/allow` you.
 
 If the CI fails, you can update your changes with `git rebase -i` and push your
diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt
index 2d10eea..45eb84d 100644
--- a/Documentation/MyFirstObjectWalk.txt
+++ b/Documentation/MyFirstObjectWalk.txt
@@ -691,7 +691,7 @@
 referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
 `HEAD` in the `pending` list.)
 
-First, we'll need to `#include "list-objects-filter-options.h`" and set up the
+First, we'll need to `#include "list-objects-filter-options.h"` and set up the
 `struct list_objects_filter_options` at the top of the function.
 
 ----
@@ -779,7 +779,7 @@
 	while ((oid = oidset_iter_next(&oit)))
 		omitted_count++;
 
-	printf("commits %d\nblobs %d\ntags %d\ntrees%d\nomitted %d\n",
+	printf("commits %d\nblobs %d\ntags %d\ntrees %d\nomitted %d\n",
 		commit_count, blob_count, tag_count, tree_count, omitted_count);
 ----
 
diff --git a/Documentation/RelNotes/1.6.0.3.txt b/Documentation/RelNotes/1.6.0.3.txt
index ae05778..ad36c0f 100644
--- a/Documentation/RelNotes/1.6.0.3.txt
+++ b/Documentation/RelNotes/1.6.0.3.txt
@@ -50,7 +50,7 @@
   if the working tree is currently dirty.
 
 * "git for-each-ref --format=%(subject)" fixed for commits with no
-  no newline in the message body.
+  newline in the message body.
 
 * "git remote" fixed to protect printf from user input.
 
diff --git a/Documentation/RelNotes/1.8.4.txt b/Documentation/RelNotes/1.8.4.txt
index 255e185..2e75299 100644
--- a/Documentation/RelNotes/1.8.4.txt
+++ b/Documentation/RelNotes/1.8.4.txt
@@ -365,7 +365,7 @@
    (merge 2fbd4f9 mh/maint-lockfile-overflow later to maint).
 
  * Invocations of "git checkout" used internally by "git rebase" were
-   counted as "checkout", and affected later "git checkout -" to the
+   counted as "checkout", and affected later "git checkout -", which took
    the user to an unexpected place.
    (merge 3bed291 rr/rebase-checkout-reflog later to maint).
 
diff --git a/Documentation/RelNotes/2.29.0.txt b/Documentation/RelNotes/2.29.0.txt
index 06ba2f8..1f41302 100644
--- a/Documentation/RelNotes/2.29.0.txt
+++ b/Documentation/RelNotes/2.29.0.txt
@@ -184,8 +184,8 @@
    the ref backend in use, as its format is much richer than the
    normal refs, and written directly by "git fetch" as a plain file..
 
- * An unused binary has been discarded, and and a bunch of commands
-   have been turned into into built-in.
+ * An unused binary has been discarded, and a bunch of commands
+   have been turned into built-in.
 
  * A handful of places in in-tree code still relied on being able to
    execute the git subcommands, especially built-ins, in "git-foo"
diff --git a/Documentation/RelNotes/2.33.0.txt b/Documentation/RelNotes/2.33.0.txt
index 57443c7..893c18b 100644
--- a/Documentation/RelNotes/2.33.0.txt
+++ b/Documentation/RelNotes/2.33.0.txt
@@ -1,18 +1,6 @@
 Git 2.33 Release Notes
 ======================
 
-Backward compatibility notes
-----------------------------
-
- * The "-m" option in "git log -m" that does not specify which format,
-   if any, of diff is desired did not have any visible effect; it now
-   implies some form of diff (by default "--patch") is produced.
-
-   You can disable the diff output with "git log -m --no-patch", but
-   then there probably isn't much point in passing "-m" in the first
-   place ;-).
-
-
 Updates since Git 2.32
 ----------------------
 
@@ -24,9 +12,13 @@
    "smtp-server" that is meant to name the server to instead name the
    command to talk to the server.
 
- * The "-m" option in "git log -m" that does not specify which format,
-   if any, of diff is desired did not have any visible effect; it now
-   implies some form of diff (by default "--patch") is produced.
+ * The userdiff pattern for C# learned the token "record".
+
+ * "git rev-list" learns to omit the "commit <object-name>" header
+   lines from the output with the `--no-commit-header` option.
+
+ * "git worktree add --lock" learned to record why the worktree is
+   locked with a custom message.
 
 
 Performance, Internal Implementation, Development Support etc.
@@ -40,7 +32,60 @@
    reduce code duplication.
 
  * Repeated rename detections in a sequence of mergy operations have
-   been optimize out.
+   been optimized out for the 'ort' merge strategy.
+
+ * Preliminary clean-up of tests before the main reftable changes
+   hits the codebase.
+
+ * The backend for "diff -G/-S" has been updated to use pcre2 engine
+   when available.
+
+ * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
+
+ * Code cleanup around struct_type_init() functions.
+
+ * "git send-email" optimization.
+
+ * GitHub Actions / CI update.
+   (merge 0dc787a9f2 js/ci-windows-update later to maint).
+
+ * Object accesses in repositories with many alternate object store
+   have been optimized.
+
+ * "git log" has been optimized not to waste cycles to load ref
+   decoration data that may not be needed.
+
+ * Many "printf"-like helper functions we have have been annotated
+   with __attribute__() to catch placeholder/parameter mismatches.
+
+ * Tests that cover protocol bits have been updated and helpers
+   used there have been consolidated.
+
+ * The CI gained a new job to run "make sparse" check.
+
+ * "git status" codepath learned to work with sparsely populated index
+   without hydrating it fully.
+
+ * A guideline for gender neutral documentation has been added.
+
+ * Documentation on "git diff -l<n>" and diff.renameLimit have been
+   updated, and the defaults for these limits have been raised.
+
+ * The completion support used to offer alternate spelling of options
+   that exist only for compatibility, which has been corrected.
+
+ * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
+   been corrected.
+
+ * "git bundle" gained more test coverage.
+
+ * "git read-tree" had a codepath where blobs are fetched one-by-one
+   from the promisor remote, which has been corrected to fetch in bulk.
+
+ * Rewrite of "git submodule" in C continues.
+
+ * "git checkout" and "git commit" learn to work without unnecessarily
+   expanding sparse indexes.
 
 
 Fixes since v2.32
@@ -68,6 +113,127 @@
    the other side.
    (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
 
+ * The command line completion (in contrib/) learned that "git diff"
+   takes the "--anchored" option.
+   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
+
+ * "git-svn" tests assumed that "locale -a", which is used to pick an
+   available UTF-8 locale, is available everywhere.  A knob has been
+   introduced to allow testers to specify a suitable locale to use.
+   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
+
+ * Update "git subtree" to work better on Windows.
+   (merge 77f37de39f js/subtree-on-windows-fix later to maint).
+
+ * Remove multimail from contrib/
+   (merge f74d11471f js/no-more-multimail later to maint).
+
+ * Make the codebase MSAN clean.
+   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
+
+ * Work around inefficient glob substitution in older versions of bash
+   by rewriting parts of a test.
+   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).
+
+ * Avoid duplicated work while building reachability bitmaps.
+   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
+
+ * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
+   update, which got fixed.
+
+ * The side-band demultiplexer that is used to display progress output
+   from the remote end did not clear the line properly when the end of
+   line hits at a packet boundary, which has been corrected.
+
+ * Some test scripts assumed that readlink(1) was universally
+   installed and available, which is not the case.
+   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
+
+ * Recent update to completion script (in contrib/) broke those who
+   use the __git_complete helper to define completion to their custom
+   command.
+   (merge cea232194d fw/complete-cmd-idx-fix later to maint).
+
+ * Output from some of our tests were affected by the width of the
+   terminal that they were run in, which has been corrected by
+   exporting a fixed value in the COLUMNS environment.
+   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
+
+ * On Windows, mergetool has been taught to find kdiff3.exe just like
+   it finds winmerge.exe.
+   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
+
+ * When we cannot figure out how wide the terminal is, we use a
+   fallback value of 80 ourselves (which cannot be avoided), but when
+   we run the pager, we export it in COLUMNS, which forces the pager
+   to use the hardcoded value, even when the pager is perfectly
+   capable to figure it out itself.  Stop exporting COLUMNS when we
+   fall back on the hardcoded default value for our own use.
+   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
+
+ * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
+   use and did not ask for certain object traits.
+   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).
+
+ * Some code and doc clarification around "git push".
+
+ * The "union" conflict resultion variant misbehaved when used with
+   binary merge driver.
+   (merge 382b601acd jk/union-merge-binary later to maint).
+
+ * Prevent "git p4" from failing to submit changes to binary file.
+   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).
+
+ * "git grep --and -e foo" ought to have been diagnosed as an error
+   but instead segfaulted, which has been corrected.
+   (merge fe7fe62d8d rs/grep-parser-fix later to maint).
+
+ * The merge code had funny interactions between content based rename
+   detection and directory rename detection.
+   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
+
+ * When rebuilding the multi-pack index file reusing an existing one,
+   we used to blindly trust the existing file and ended up carrying
+   corrupted data into the updated file, which has been corrected.
+   (merge f89ecf7988 tb/midx-use-checksum later to maint).
+
+ * Update the location of system-side configuration file on Windows.
+   (merge e355307692 js/gfw-system-config-loc-fix later to maint).
+
+ * Code recently added to support common ancestry negotiation during
+   "git push" did not sanity check its arguments carefully enough.
+   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
+
+ * Update the documentation not to assume users are of certain gender
+   and adds to guidelines to do so.
+   (merge 46a237f42f ds/gender-neutral-doc later to maint).
+
+ * "git commit --allow-empty-message" won't abort the operation upon
+   an empty message, but the hint shown in the editor said otherwise.
+   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
+
+ * The code that gives an error message in "git multi-pack-index" when
+   no subcommand is given tried to print a NULL pointer as a strong,
+   which has been corrected.
+   (merge 88617d11f9 tb/reverse-midx later to maint).
+
+ * CI update.
+   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).
+
+ * Documentation fix for "git pull --rebase=no".
+   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
+
+ * A race between repacking and using pack bitmaps has been corrected.
+   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
+
+ * The local changes stashed by "git merge --autostash" were lost when
+   the merge failed in certain ways, which has been corrected.
+
+ * Windows rmdir() equivalent behaves differently from POSIX ones in
+   that when used on a symbolic link that points at a directory, the
+   target directory gets removed, which has been corrected.
+   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).
+
  * Other code cleanup, docfix, build fix, etc.
    (merge bfe35a6165 ah/doc-describe later to maint).
    (merge f302c1e4aa jc/clarify-revision-range later to maint).
@@ -76,3 +242,38 @@
    (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
    (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
    (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
+   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
+   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
+   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
+   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
+   (merge abcb66c614 ar/typofix later to maint).
+   (merge 9853830787 ah/graph-typofix later to maint).
+   (merge aac578492d ab/config-hooks-path-testfix later to maint).
+   (merge 98c7656a18 ar/more-typofix later to maint).
+   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
+   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
+   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
+   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
+   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
+   (merge b7b793d1e7 ab/progress-cleanup later to maint).
+   (merge d94f9b8e90 ba/object-info later to maint).
+   (merge 52ff891c03 ar/test-code-cleanup later to maint).
+   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
+   (merge ce24797d38 mr/cmake later to maint).
+   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
+   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
+   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
+   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
+   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
+   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
+   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
+   (merge b1d87fbaf1 jk/typofix later to maint).
+   (merge e04170697a ab/gitignore-discovery-doc later to maint).
+   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
+   (merge eb448631fb dl/diff-merge-base later to maint).
+   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
+   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
+   (merge 878b399734 pb/submodule-recurse-doc later to maint).
+   (merge 734283855f jk/config-env-doc later to maint).
+   (merge 482e1488a9 ab/getcwd-test later to maint).
+   (merge f0b922473e ar/doc-markup-fix later to maint).
diff --git a/Documentation/RelNotes/2.34.0.txt b/Documentation/RelNotes/2.34.0.txt
new file mode 100644
index 0000000..4cb0b8f
--- /dev/null
+++ b/Documentation/RelNotes/2.34.0.txt
@@ -0,0 +1,135 @@
+Git 2.34 Release Notes
+======================
+
+Updates since Git 2.33
+----------------------
+
+UI, Workflows & Features
+
+ * Pathname expansion (like "~username/") learned a way to specify a
+   location relative to Git installation (e.g. its $sharedir which is
+   $(prefix)/share), with "%(prefix)".
+
+ * Use `ort` instead of `recursive` as the default merge strategy.
+
+ * The userdiff pattern for "java" language has been updated.
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * "git bisect" spawned "git show-branch" only to pretty-print the
+   title of the commit after checking out the next version to be
+   tested; this has been rewritten in C.
+
+ * "git add" can work better with the sparse index.
+
+ * Support for ancient versions of cURL library (pre 7.19.4) has been
+   dropped.
+
+ * A handful of tests that assumed implementation details of files
+   backend for refs have been cleaned up.
+
+ * trace2 logs learned to show parent process name to see in what
+   context Git was invoked.
+
+ * Loading of ref tips to prepare for common ancestry negotiation in
+   "git fetch-pack" has been optimized by taking advantage of the
+   commit graph when available.
+
+ * Remind developers that the userdiff patterns should be kept simple
+   and permissive, assuming that the contents they apply are always
+   syntactically correct.
+
+ * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
+   that checking for the lack of a prerequisite would not work.  Avoid
+   the use of "if ! test_have_prereq X" in a test script.
+
+ * The revision traversal API has been optimized by taking advantage
+   of the commit-graph, when available, to determine if a commit is
+   reachable from any of the existing refs.
+
+
+Fixes since v2.33
+-----------------
+
+ * Input validation of "git pack-objects --stdin-packs" has been
+   corrected.
+   (merge 561fa03529 ab/pack-stdin-packs-fix later to maint).
+
+ * Bugfix for common ancestor negotiation recently introduced in "git
+   push" code path.
+   (merge 82823118b9 jt/push-negotiation-fixes later to maint).
+
+ * "git pull" had various corner cases that were not well thought out
+   around its --rebase backend, e.g. "git pull --ff-only" did not stop
+   but went ahead and rebased when the history on other side is not a
+   descendant of our history.  The series tries to fix them up.
+   (merge 6f843a3355 en/pull-conflicting-options later to maint).
+
+ * "git apply" miscounted the bytes and failed to read to the end of
+   binary hunks.
+   (merge 46d723ce57 jk/apply-binary-hunk-parsing-fix later to maint).
+
+ * "git range-diff" code clean-up.
+   (merge c4d5907324 jk/range-diff-fixes later to maint).
+
+ * "git commit --fixup" now works with "--edit" again, after it was
+   broken in v2.32.
+   (merge 8ef6aad664 jk/commit-edit-fixup-fix later to maint).
+
+ * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
+   new version has a blocker bug for that architecture.
+   (merge 3cf9bb36bf cb/ci-use-upload-artifacts-v1 later to maint).
+
+ * Checking out all the paths from HEAD during the last conflicted
+   step in "git rebase" and continuing would cause the step to be
+   skipped (which is expected), but leaves MERGE_MSG file behind in
+   $GIT_DIR and confuses the next "git commit", which has been
+   corrected.
+   (merge e5ee33e855 pw/rebase-skip-final-fix later to maint).
+
+ * Various bugs in "git rebase -r" have been fixed.
+   (merge f2563c9ef3 pw/rebase-r-fixes later to maint).
+
+ * mmap() imitation used to call xmalloc() that dies upon malloc()
+   failure, which has been corrected to just return an error to the
+   caller to be handled.
+   (merge 95b4ff3931 rs/git-mmap-uses-malloc later to maint).
+
+ * "git diff --relative" segfaulted and/or produced incorrect result
+   when there are unmerged paths.
+   (merge 8174627b3d dd/diff-files-unmerged-fix later to maint).
+
+ * The delayed checkout code path in "git checkout" etc. were chatty
+   even when --quiet and/or --no-progress options were given.
+   (merge 7a132c628e mt/quiet-with-delayed-checkout later to maint).
+
+ * "git branch -D <branch>" used to refuse to remove a broken branch
+   ref that points at a missing commit, which has been corrected.
+   (merge 597a977489 rs/branch-allow-deleting-dangling later to maint).
+
+ * Build update for Apple clang.
+   (merge f32c5d3716 cb/makefile-apple-clang later to maint).
+
+ * The parser for the "--nl" option of "git column" has been
+   corrected.
+   (merge c93ca46cf5 sg/column-nl later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+   (merge 1d9c8daef8 ab/bundle-doc later to maint).
+   (merge 81483fe613 en/merge-strategy-docs later to maint).
+   (merge 626beebdf8 js/log-protocol-version later to maint).
+   (merge 00e302da76 cb/builtin-merge-format-string-fix later to maint).
+   (merge ad51ae4dc0 cb/ci-freebsd-update later to maint).
+   (merge be6444d1ca fc/completion-updates later to maint).
+   (merge ff7b83f562 ti/tcsh-completion-regression-fix later to maint).
+   (merge 325b06deda sg/make-fix-ar-invocation later to maint).
+   (merge bd72824c60 me/t5582-cleanup later to maint).
+   (merge f6a5af0f62 ga/send-email-sendmail-cmd later to maint).
+   (merge f58c7468cd ab/ls-remote-packet-trace later to maint).
+   (merge 0160f7e725 ab/rebase-fatal-fatal-fix later to maint).
+   (merge a16eb6b1ff js/maintenance-launchctl-fix later to maint).
+   (merge c21b2511c2 jk/t5323-no-pack-test-fix later to maint).
+   (merge 5146c2f148 mh/credential-leakfix later to maint).
+   (merge 1549577338 dd/t6300-wo-gpg-fix later to maint).
+   (merge 66e905b7dd rs/xopen-reports-open-failures later to maint).
diff --git a/Documentation/RelNotes/2.8.0.txt b/Documentation/RelNotes/2.8.0.txt
index 27320b6..3845328 100644
--- a/Documentation/RelNotes/2.8.0.txt
+++ b/Documentation/RelNotes/2.8.0.txt
@@ -377,7 +377,7 @@
    on that order.
 
  * "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
-   rev, i.e. the object named by the the pathname with wildcard
+   rev, i.e. the object named by the pathname with wildcard
    characters in a tree object.
    (merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
 
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 55287d7..e409022 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -74,10 +74,9 @@
 feature does not trigger when it shouldn't.  After any code change, make
 sure that the entire test suite passes.
 
-If you have an account at GitHub (and you can get one for free to work
-on open source projects), you can use their Travis CI integration to
-test your changes on Linux, Mac (and hopefully soon Windows).  See
-GitHub-Travis CI hints section for details.
+Pushing to a fork of https://github.com/git/git will use their CI
+integration to test your changes on Linux, Mac and Windows. See the
+<<GHCI,GitHub CI>> section for details.
 
 Do not forget to update the documentation to describe the updated
 behavior and make sure that the resulting documentation set formats
@@ -167,6 +166,85 @@
 	git show -s --date=short --pretty='format:%h (%s, %ad)' <commit>
 ....
 
+[[sign-off]]
+=== Certify your work by adding your `Signed-off-by` trailer
+
+To improve tracking of who did what, we ask you to certify that you
+wrote the patch or have the right to pass it on under the same license
+as ours, by "signing off" your patch.  Without sign-off, we cannot
+accept your patches.
+
+If (and only if) you certify the below D-C-O:
+
+[[dco]]
+.Developer's Certificate of Origin 1.1
+____
+By making a contribution to this project, I certify that:
+
+a. The contribution was created in whole or in part by me and I
+   have the right to submit it under the open source license
+   indicated in the file; or
+
+b. The contribution is based upon previous work that, to the best
+   of my knowledge, is covered under an appropriate open source
+   license and I have the right under that license to submit that
+   work with modifications, whether created in whole or in part
+   by me, under the same open source license (unless I am
+   permitted to submit under a different license), as indicated
+   in the file; or
+
+c. The contribution was provided directly to me by some other
+   person who certified (a), (b) or (c) and I have not modified
+   it.
+
+d. I understand and agree that this project and the contribution
+   are public and that a record of the contribution (including all
+   personal information I submit with it, including my sign-off) is
+   maintained indefinitely and may be redistributed consistent with
+   this project or the open source license(s) involved.
+____
+
+you add a "Signed-off-by" trailer to your commit, that looks like
+this:
+
+....
+	Signed-off-by: Random J Developer <random@developer.example.org>
+....
+
+This line can be added by Git if you run the git-commit command with
+the -s option.
+
+Notice that you can place your own `Signed-off-by` trailer when
+forwarding somebody else's patch with the above rules for
+D-C-O.  Indeed you are encouraged to do so.  Do not forget to
+place an in-body "From: " line at the beginning to properly attribute
+the change to its true author (see (2) above).
+
+This procedure originally came from the Linux kernel project, so our
+rule is quite similar to theirs, but what exactly it means to sign-off
+your patch differs from project to project, so it may be different
+from that of the project you are accustomed to.
+
+[[real-name]]
+Also notice that a real name is used in the `Signed-off-by` trailer. Please
+don't hide your real name.
+
+[[commit-trailers]]
+If you like, you can put extra tags at the end:
+
+. `Reported-by:` is used to credit someone who found the bug that
+  the patch attempts to fix.
+. `Acked-by:` says that the person who is more familiar with the area
+  the patch attempts to modify liked the patch.
+. `Reviewed-by:`, unlike the other tags, can only be offered by the
+  reviewers themselves when they are completely satisfied with the
+  patch after a detailed analysis.
+. `Tested-by:` is used to indicate that the person applied the patch
+  and found it to have the desired effect.
+
+You can also create your own tag or use one that's in common usage
+such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
+
 [[git-tools]]
 === Generate your patch using Git tools out of your commits.
 
@@ -302,86 +380,6 @@
 `Tested-by:` lines as necessary to credit people who helped your
 patch, and "cc:" them when sending such a final version for inclusion.
 
-[[sign-off]]
-=== Certify your work by adding your `Signed-off-by` trailer
-
-To improve tracking of who did what, we ask you to certify that you
-wrote the patch or have the right to pass it on under the same license
-as ours, by "signing off" your patch.  Without sign-off, we cannot
-accept your patches.
-
-If (and only if) you certify the below D-C-O:
-
-[[dco]]
-.Developer's Certificate of Origin 1.1
-____
-By making a contribution to this project, I certify that:
-
-a. The contribution was created in whole or in part by me and I
-   have the right to submit it under the open source license
-   indicated in the file; or
-
-b. The contribution is based upon previous work that, to the best
-   of my knowledge, is covered under an appropriate open source
-   license and I have the right under that license to submit that
-   work with modifications, whether created in whole or in part
-   by me, under the same open source license (unless I am
-   permitted to submit under a different license), as indicated
-   in the file; or
-
-c. The contribution was provided directly to me by some other
-   person who certified (a), (b) or (c) and I have not modified
-   it.
-
-d. I understand and agree that this project and the contribution
-   are public and that a record of the contribution (including all
-   personal information I submit with it, including my sign-off) is
-   maintained indefinitely and may be redistributed consistent with
-   this project or the open source license(s) involved.
-____
-
-you add a "Signed-off-by" trailer to your commit, that looks like
-this:
-
-....
-	Signed-off-by: Random J Developer <random@developer.example.org>
-....
-
-This line can be added by Git if you run the git-commit command with
-the -s option.
-
-Notice that you can place your own `Signed-off-by` trailer when
-forwarding somebody else's patch with the above rules for
-D-C-O.  Indeed you are encouraged to do so.  Do not forget to
-place an in-body "From: " line at the beginning to properly attribute
-the change to its true author (see (2) above).
-
-This procedure originally came from the Linux kernel project, so our
-rule is quite similar to theirs, but what exactly it means to sign-off
-your patch differs from project to project, so it may be different
-from that of the project you are accustomed to.
-
-[[real-name]]
-Also notice that a real name is used in the `Signed-off-by` trailer. Please
-don't hide your real name.
-
-[[commit-trailers]]
-If you like, you can put extra tags at the end:
-
-. `Reported-by:` is used to credit someone who found the bug that
-  the patch attempts to fix.
-. `Acked-by:` says that the person who is more familiar with the area
-  the patch attempts to modify liked the patch.
-. `Reviewed-by:`, unlike the other tags, can only be offered by the
-  reviewer and means that she is completely satisfied that the patch
-  is ready for application.  It is usually offered only after a
-  detailed review.
-. `Tested-by:` is used to indicate that the person applied the patch
-  and found it to have the desired effect.
-
-You can also create your own tag or use one that's in common usage
-such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
-
 == Subsystems with dedicated maintainers
 
 Some parts of the system have dedicated maintainers with their own
@@ -450,13 +448,12 @@
   entitled "What's cooking in git.git" and "What's in git.git" giving
   the status of various proposed changes.
 
-[[travis]]
-== GitHub-Travis CI hints
+== GitHub CI[[GHCI]]]
 
-With an account at GitHub (you can get one for free to work on open
-source projects), you can use Travis CI to test your changes on Linux,
-Mac (and hopefully soon Windows).  You can find a successful example
-test build here: https://travis-ci.org/git/git/builds/120473209
+With an account at GitHub, you can use GitHub CI to test your changes
+on Linux, Mac and Windows. See
+https://github.com/git/git/actions/workflows/main.yml for examples of
+recent CI runs.
 
 Follow these steps for the initial setup:
 
@@ -464,31 +461,18 @@
   You can find detailed instructions how to fork here:
   https://help.github.com/articles/fork-a-repo/
 
-. Open the Travis CI website: https://travis-ci.org
-
-. Press the "Sign in with GitHub" button.
-
-. Grant Travis CI permissions to access your GitHub account.
-  You can find more information about the required permissions here:
-  https://docs.travis-ci.com/user/github-oauth-scopes
-
-. Open your Travis CI profile page: https://travis-ci.org/profile
-
-. Enable Travis CI builds for your Git fork.
-
-After the initial setup, Travis CI will run whenever you push new changes
+After the initial setup, CI will run whenever you push new changes
 to your fork of Git on GitHub.  You can monitor the test state of all your
-branches here: https://travis-ci.org/__<Your GitHub handle>__/git/branches
+branches here: https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml
 
 If a branch did not pass all test cases then it is marked with a red
-cross.  In that case you can click on the failing Travis CI job and
-scroll all the way down in the log.  Find the line "<-- Click here to see
-detailed test output!" and click on the triangle next to the log line
-number to expand the detailed test output.  Here is such a failing
-example: https://travis-ci.org/git/git/jobs/122676187
+cross. In that case you can click on the failing job and navigate to
+"ci/run-build-and-tests.sh" and/or "ci/print-test-failures.sh". You
+can also download "Artifacts" which are tarred (or zipped) archives
+with test data relevant for debugging.
 
-Fix the problem and push your fix to your Git fork.  This will trigger
-a new Travis CI build to ensure all tests pass.
+Then fix the problem and push your fix to your GitHub fork. This will
+trigger a new CI build to ensure all tests pass.
 
 [[mua]]
 == MUA specific hints
diff --git a/Documentation/config.txt b/Documentation/config.txt
index bf82766..0c0e6b8 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -298,6 +298,15 @@
 	tilde expansion happens to such a string: `~/`
 	is expanded to the value of `$HOME`, and `~user/` to the
 	specified user's home directory.
++
+If a path starts with `%(prefix)/`, the remainder is interpreted as a
+path relative to Git's "runtime prefix", i.e. relative to the location
+where Git itself was installed. For example, `%(prefix)/bin/` refers to
+the directory in which the Git executable itself lives. If Git was
+compiled without runtime prefix support, the compiled-in prefix will be
+subsituted instead. In the unlikely event that a literal path needs to
+be specified that should _not_ be expanded, it needs to be prefixed by
+`./`, like so: `./%(prefix)/bin`.
 
 
 Variables
diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
index 8b2849f..063eec2 100644
--- a/Documentation/config/advice.txt
+++ b/Documentation/config/advice.txt
@@ -44,6 +44,9 @@
 		Shown when linkgit:git-push[1] rejects a forced update of
 		a branch when its remote-tracking ref has updates that we
 		do not have locally.
+	skippedCherryPicks::
+		Shown when linkgit:git-rebase[1] skips a commit that has already
+		been cherry-picked onto the upstream branch.
 	statusAheadBehind::
 		Shown when linkgit:git-status[1] computes the ahead/behind
 		counts for a local ref compared to its remote tracking ref,
diff --git a/Documentation/config/blame.txt b/Documentation/config/blame.txt
index 9468e85..4d047c1 100644
--- a/Documentation/config/blame.txt
+++ b/Documentation/config/blame.txt
@@ -27,7 +27,7 @@
 	file names will reset the list of ignored revisions.  This option will
 	be handled before the command line option `--ignore-revs-file`.
 
-blame.markUnblamables::
+blame.markUnblamableLines::
 	Mark lines that were changed by an ignored revision that we could not
 	attribute to another commit with a '*' in the output of
 	linkgit:git-blame[1].
diff --git a/Documentation/config/diff.txt b/Documentation/config/diff.txt
index 2d3331f..32f8483 100644
--- a/Documentation/config/diff.txt
+++ b/Documentation/config/diff.txt
@@ -118,9 +118,10 @@
 	relative to the top of the working tree.
 
 diff.renameLimit::
-	The number of files to consider when performing the copy/rename
-	detection; equivalent to the 'git diff' option `-l`. This setting
-	has no effect if rename detection is turned off.
+	The number of files to consider in the exhaustive portion of
+	copy/rename detection; equivalent to the 'git diff' option
+	`-l`.  If not set, the default value is currently 1000.  This
+	setting has no effect if rename detection is turned off.
 
 diff.renames::
 	Whether and how Git detects renames.  If set to "false",
diff --git a/Documentation/config/fetch.txt b/Documentation/config/fetch.txt
index 6af6f5e..63748c0 100644
--- a/Documentation/config/fetch.txt
+++ b/Documentation/config/fetch.txt
@@ -69,7 +69,8 @@
 	setting defaults to "skipping".
 	Unknown values will cause 'git fetch' to error out.
 +
-See also the `--negotiation-tip` option for linkgit:git-fetch[1].
+See also the `--negotiate-only` and `--negotiation-tip` options to
+linkgit:git-fetch[1].
 
 fetch.showForcedUpdates::
 	Set to false to enable `--no-show-forced-updates` in
diff --git a/Documentation/config/gui.txt b/Documentation/config/gui.txt
index d30831a..0c087fd 100644
--- a/Documentation/config/gui.txt
+++ b/Documentation/config/gui.txt
@@ -11,7 +11,7 @@
 	in the file list. The default is "true".
 
 gui.encoding::
-	Specifies the default encoding to use for displaying of
+	Specifies the default character encoding to use for displaying of
 	file contents in linkgit:git-gui[1] and linkgit:gitk[1].
 	It can be overridden by setting the 'encoding' attribute
 	for relevant files (see linkgit:gitattributes[5]).
diff --git a/Documentation/config/merge.txt b/Documentation/config/merge.txt
index cb2ed58..e27cc63 100644
--- a/Documentation/config/merge.txt
+++ b/Documentation/config/merge.txt
@@ -14,7 +14,7 @@
 	branches at the remote named by `branch.<current branch>.remote`
 	are consulted, and then they are mapped via `remote.<remote>.fetch`
 	to their corresponding remote-tracking branches, and the tips of
-	these tracking branches are merged.
+	these tracking branches are merged. Defaults to true.
 
 merge.ff::
 	By default, Git does not create an extra merge commit when merging
@@ -33,10 +33,12 @@
 include::fmt-merge-msg.txt[]
 
 merge.renameLimit::
-	The number of files to consider when performing rename detection
-	during a merge; if not specified, defaults to the value of
-	diff.renameLimit. This setting has no effect if rename detection
-	is turned off.
+	The number of files to consider in the exhaustive portion of
+	rename detection during a merge.  If not specified, defaults
+	to the value of diff.renameLimit.  If neither
+	merge.renameLimit nor diff.renameLimit are specified,
+	currently defaults to 7000.  This setting has no effect if
+	rename detection is turned off.
 
 merge.renames::
 	Whether Git detects renames.  If set to "false", rename detection
diff --git a/Documentation/config/pack.txt b/Documentation/config/pack.txt
index c0844d8..763f7af 100644
--- a/Documentation/config/pack.txt
+++ b/Documentation/config/pack.txt
@@ -99,12 +99,23 @@
 	packing to a file when repacking, i.e. the git:// protocol
 	is unaffected.  It can be overridden by the `--max-pack-size`
 	option of linkgit:git-repack[1].  Reaching this limit results
-	in the creation of multiple packfiles; which in turn prevents
-	bitmaps from being created.
-	The minimum size allowed is limited to 1 MiB.
-	The default is unlimited.
-	Common unit suffixes of 'k', 'm', or 'g' are
-	supported.
+	in the creation of multiple packfiles.
++
+Note that this option is rarely useful, and may result in a larger total
+on-disk size (because Git will not store deltas between packs), as well
+as worse runtime performance (object lookup within multiple packs is
+slower than a single pack, and optimizations like reachability bitmaps
+cannot cope with multiple packs).
++
+If you need to actively run Git using smaller packfiles (e.g., because your
+filesystem does not support large files), this option may help. But if
+your goal is to transmit a packfile over a medium that supports limited
+sizes (e.g., removable media that cannot store the whole repository),
+you are likely better off creating a single large packfile and splitting
+it using a generic multi-volume archive tool (e.g., Unix `split`).
++
+The minimum size allowed is limited to 1 MiB. The default is unlimited.
+Common unit suffixes of 'k', 'm', or 'g' are supported.
 
 pack.useBitmaps::
 	When true, git will use pack bitmaps (if available) when packing
diff --git a/Documentation/config/push.txt b/Documentation/config/push.txt
index f2667b2..6320336 100644
--- a/Documentation/config/push.txt
+++ b/Documentation/config/push.txt
@@ -24,15 +24,14 @@
 
 * `tracking` - This is a deprecated synonym for `upstream`.
 
-* `simple` - in centralized workflow, work like `upstream` with an
-  added safety to refuse to push if the upstream branch's name is
-  different from the local one.
+* `simple` - pushes the current branch with the same name on the remote.
 +
-When pushing to a remote that is different from the remote you normally
-pull from, work as `current`.  This is the safest option and is suited
-for beginners.
+If you are working on a centralized workflow (pushing to the same repository you
+pull from, which is typically `origin`), then you need to configure an upstream
+branch with the same name.
 +
-This mode has become the default in Git 2.0.
+This mode is the default since Git 2.0, and is the safest option suited for
+beginners.
 
 * `matching` - push all branches having the same name on both ends.
   This makes the repository you are pushing to remember the set of
diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
index cbc5af4..50baa5d 100644
--- a/Documentation/config/sendemail.txt
+++ b/Documentation/config/sendemail.txt
@@ -8,9 +8,6 @@
 	See linkgit:git-send-email[1] for description.  Note that this
 	setting is not subject to the 'identity' mechanism.
 
-sendemail.smtpssl (deprecated)::
-	Deprecated alias for 'sendemail.smtpEncryption = ssl'.
-
 sendemail.smtpsslcertpath::
 	Path to ca-certificates (either a directory or a single file).
 	Set it to an empty string to disable certificate verification.
diff --git a/Documentation/config/submodule.txt b/Documentation/config/submodule.txt
index d7a63c8..ee454f8 100644
--- a/Documentation/config/submodule.txt
+++ b/Documentation/config/submodule.txt
@@ -58,8 +58,9 @@
 	commands. See linkgit:gitsubmodules[7] for details.
 
 submodule.recurse::
-	Specifies if commands recurse into submodules by default. This
-	applies to all commands that have a `--recurse-submodules` option
+	A boolean indicating if commands should enable the `--recurse-submodules`
+	option by default.
+	Applies to all commands that support this option
 	(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
 	`restore` and `switch`) except `clone` and `ls-files`.
 	Defaults to false.
diff --git a/Documentation/config/transfer.txt b/Documentation/config/transfer.txt
index 505126a..b49429e 100644
--- a/Documentation/config/transfer.txt
+++ b/Documentation/config/transfer.txt
@@ -52,13 +52,17 @@
 (and entries in more-specific config files override less-specific ones).
 +
 If a namespace is in use, the namespace prefix is stripped from each
-reference before it is matched against `transfer.hiderefs` patterns.
+reference before it is matched against `transfer.hiderefs` patterns. In
+order to match refs before stripping, add a `^` in front of the ref name. If
+you combine `!` and `^`, `!` must be specified first.
++
 For example, if `refs/heads/master` is specified in `transfer.hideRefs` and
 the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`
-is omitted from the advertisements but `refs/heads/master` and
-`refs/namespaces/bar/refs/heads/master` are still advertised as so-called
-"have" lines. In order to match refs before stripping, add a `^` in front of
-the ref name. If you combine `!` and `^`, `!` must be specified first.
+is omitted from the advertisements. If `uploadpack.allowRefInWant` is set,
+`upload-pack` will treat `want-ref refs/heads/master` in a protocol v2
+`fetch` command as if `refs/namespaces/foo/refs/heads/master` did not exist.
+`receive-pack`, on the other hand, will still advertise the object id the
+ref is pointing to without mentioning its name (a so-called ".have" line).
 +
 Even if you hide refs, a client may still be able to steal the target
 objects via the techniques described in the "SECURITY" section of the
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 32e6dee..c89d530 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -49,9 +49,10 @@
 --diff-merges=m:::
 -m:::
 	This option makes diff output for merge commits to be shown in
-	the default format. The default format could be changed using
+	the default format. `-m` will produce the output only if `-p`
+	is given as well. The default format could be changed using
 	`log.diffMerges` configuration parameter, which default value
-	is `separate`. `-m` implies `-p`.
+	is `separate`.
 +
 --diff-merges=first-parent:::
 --diff-merges=1:::
@@ -61,8 +62,7 @@
 --diff-merges=separate:::
 	This makes merge commits show the full diff with respect to
 	each of the parents. Separate log entry and diff is generated
-	for each parent. This is the format that `-m` produced
-	historically.
+	for each parent.
 +
 --diff-merges=combined:::
 --diff-merges=c:::
@@ -588,11 +588,17 @@
 of a delete/create pair.
 
 -l<num>::
-	The `-M` and `-C` options require O(n^2) processing time where n
-	is the number of potential rename/copy targets.  This
-	option prevents rename/copy detection from running if
-	the number of rename/copy targets exceeds the specified
-	number.
+	The `-M` and `-C` options involve some preliminary steps that
+	can detect subsets of renames/copies cheaply, followed by an
+	exhaustive fallback portion that compares all remaining
+	unpaired destinations to all relevant sources.  (For renames,
+	only remaining unpaired sources are relevant; for copies, all
+	original sources are relevant.)  For N sources and
+	destinations, this exhaustive check is O(N^2).  This option
+	prevents the exhaustive portion of rename/copy detection from
+	running if the number of source/destination files involved
+	exceeds the specified number.  Defaults to diff.renameLimit.
+	Note that a value of 0 is treated as unlimited.
 
 ifndef::git-format-patch[]
 --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]::
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index 9e7b4e1..e967ff1 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -62,8 +62,17 @@
 abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
 this option multiple times, one for each matching ref name.
 +
-See also the `fetch.negotiationAlgorithm` configuration variable
-documented in linkgit:git-config[1].
+See also the `fetch.negotiationAlgorithm` and `push.negotiate`
+configuration variables documented in linkgit:git-config[1], and the
+`--negotiate-only` option below.
+
+--negotiate-only::
+	Do not fetch anything from the server, and instead print the
+	ancestors of the provided `--negotiation-tip=*` arguments,
+	which we have in common with the server.
++
+Internally this is used to implement the `push.negotiate` option, see
+linkgit:git-config[1].
 
 --dry-run::
 	Show what would be done, without making any changes.
diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt
index 94dc9a5..5449767 100644
--- a/Documentation/git-branch.txt
+++ b/Documentation/git-branch.txt
@@ -118,7 +118,8 @@
 	Reset <branchname> to <startpoint>, even if <branchname> exists
 	already. Without `-f`, 'git branch' refuses to change an existing branch.
 	In combination with `-d` (or `--delete`), allow deleting the
-	branch irrespective of its merged status. In combination with
+	branch irrespective of its merged status, or whether it even
+	points to a valid commit. In combination with
 	`-m` (or `--move`), allow renaming the branch even if the new
 	branch name already exists, the same applies for `-c` (or `--copy`).
 
diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt
index 53804ca..ac0d003 100644
--- a/Documentation/git-bundle.txt
+++ b/Documentation/git-bundle.txt
@@ -18,21 +18,48 @@
 DESCRIPTION
 -----------
 
-Some workflows require that one or more branches of development on one
-machine be replicated on another machine, but the two machines cannot
-be directly connected, and therefore the interactive Git protocols (git,
-ssh, http) cannot be used.
+Create, unpack, and manipulate "bundle" files. Bundles are used for
+the "offline" transfer of Git objects without an active "server"
+sitting on the other side of the network connection.
 
-The 'git bundle' command packages objects and references in an archive
-at the originating machine, which can then be imported into another
-repository using 'git fetch', 'git pull', or 'git clone',
-after moving the archive by some means (e.g., by sneakernet).
+They can be used to create both incremental and full backups of a
+repository, and to relay the state of the references in one repository
+to another.
 
-As no
-direct connection between the repositories exists, the user must specify a
-basis for the bundle that is held by the destination repository: the
-bundle assumes that all objects in the basis are already in the
-destination repository.
+Git commands that fetch or otherwise "read" via protocols such as
+`ssh://` and `https://` can also operate on bundle files. It is
+possible linkgit:git-clone[1] a new repository from a bundle, to use
+linkgit:git-fetch[1] to fetch from one, and to list the references
+contained within it with linkgit:git-ls-remote[1]. There's no
+corresponding "write" support, i.e.a 'git push' into a bundle is not
+supported.
+
+See the "EXAMPLES" section below for examples of how to use bundles.
+
+BUNDLE FORMAT
+-------------
+
+Bundles are `.pack` files (see linkgit:git-pack-objects[1]) with a
+header indicating what references are contained within the bundle.
+
+Like the the packed archive format itself bundles can either be
+self-contained, or be created using exclusions.
+See the "OBJECT PREREQUISITES" section below.
+
+Bundles created using revision exclusions are "thin packs" created
+using the `--thin` option to linkgit:git-pack-objects[1], and
+unbundled using the `--fix-thin` option to linkgit:git-index-pack[1].
+
+There is no option to create a "thick pack" when using revision
+exclusions, users should not be concerned about the difference. By
+using "thin packs" bundles created using exclusions are smaller in
+size. That they're "thin" under the hood is merely noted here as a
+curiosity, and as a reference to other documentation
+
+See link:technical/bundle-format.html[the `bundle-format`
+documentation] for more details and the discussion of "thin pack" in
+link:technical/pack-format.html[the pack format documentation] for
+further details.
 
 OPTIONS
 -------
@@ -117,28 +144,88 @@
 SPECIFYING REFERENCES
 ---------------------
 
-'git bundle' will only package references that are shown by
-'git show-ref': this includes heads, tags, and remote heads.  References
-such as `master~1` cannot be packaged, but are perfectly suitable for
-defining the basis.  More than one reference may be packaged, and more
-than one basis can be specified.  The objects packaged are those not
-contained in the union of the given bases.  Each basis can be
-specified explicitly (e.g. `^master~10`), or implicitly (e.g.
-`master~10..master`, `--since=10.days.ago master`).
+Revisions must accompanied by reference names to be packaged in a
+bundle.
 
-It is very important that the basis used be held by the destination.
+More than one reference may be packaged, and more than one set of prerequisite objects can
+be specified.  The objects packaged are those not contained in the
+union of the prerequisites.
+
+The 'git bundle create' command resolves the reference names for you
+using the same rules as `git rev-parse --abbrev-ref=loose`. Each
+prerequisite can be specified explicitly (e.g. `^master~10`), or implicitly
+(e.g. `master~10..master`, `--since=10.days.ago master`).
+
+All of these simple cases are OK (assuming we have a "master" and
+"next" branch):
+
+----------------
+$ git bundle create master.bundle master
+$ echo master | git bundle create master.bundle --stdin
+$ git bundle create master-and-next.bundle master next
+$ (echo master; echo next) | git bundle create master-and-next.bundle --stdin
+----------------
+
+And so are these (and the same but omitted `--stdin` examples):
+
+----------------
+$ git bundle create recent-master.bundle master~10..master
+$ git bundle create recent-updates.bundle master~10..master next~5..next
+----------------
+
+A revision name or a range whose right-hand-side cannot be resolved to
+a reference is not accepted:
+
+----------------
+$ git bundle create HEAD.bundle $(git rev-parse HEAD)
+fatal: Refusing to create empty bundle.
+$ git bundle create master-yesterday.bundle master~10..master~5
+fatal: Refusing to create empty bundle.
+----------------
+
+OBJECT PREREQUISITES
+--------------------
+
+When creating bundles it is possible to create a self-contained bundle
+that can be unbundled in a repository with no common history, as well
+as providing negative revisions to exclude objects needed in the
+earlier parts of the history.
+
+Feeding a revision such as `new` to `git bundle create` will create a
+bundle file that contains all the objects reachable from the revision
+`new`. That bundle can be unbundled in any repository to obtain a full
+history that leads to the revision `new`:
+
+----------------
+$ git bundle create full.bundle new
+----------------
+
+A revision range such as `old..new` will produce a bundle file that
+will require the revision `old` (and any objects reachable from it)
+to exist for the bundle to be "unbundle"-able:
+
+----------------
+$ git bundle create full.bundle old..new
+----------------
+
+A self-contained bundle without any prerequisites can be extracted
+into anywhere, even into an empty repository, or be cloned from
+(i.e., `new`, but not `old..new`).
+
 It is okay to err on the side of caution, causing the bundle file
 to contain objects already in the destination, as these are ignored
 when unpacking at the destination.
 
-`git clone` can use any bundle created without negative refspecs
-(e.g., `new`, but not `old..new`).
 If you want to match `git clone --mirror`, which would include your
 refs such as `refs/remotes/*`, use `--all`.
 If you want to provide the same set of refs that a clone directly
 from the source repository would get, use `--branches --tags` for
 the `<git-rev-list-args>`.
 
+The 'git bundle verify' command can be used to check whether your
+recipient repository has the required prerequisite commits for a
+bundle.
+
 EXAMPLES
 --------
 
@@ -149,7 +236,7 @@
 We want to update R2 with development made on the branch master in R1.
 
 To bootstrap the process, you can first create a bundle that does not have
-any basis. You can use a tag to remember up to what commit you last
+any prerequisites. You can use a tag to remember up to what commit you last
 processed, in order to make it easy to later update the other repository
 with an incremental bundle:
 
@@ -200,7 +287,7 @@
 
 If you know up to what commit the intended recipient repository should
 have the necessary objects, you can use that knowledge to specify the
-basis, giving a cut-off point to limit the revisions and objects that go
+prerequisites, giving a cut-off point to limit the revisions and objects that go
 in the resulting bundle. The previous example used the lastR2bundle tag
 for this purpose, but you can use any other options that you would give to
 the linkgit:git-log[1] command. Here are more examples:
@@ -211,7 +298,7 @@
 $ git bundle create mybundle v1.0.0..master
 ----------------
 
-You can use a basis based on time:
+You can use a prerequisite based on time:
 
 ----------------
 $ git bundle create mybundle --since=10.days master
@@ -224,7 +311,7 @@
 ----------------
 
 You can run `git-bundle verify` to see if you can extract from a bundle
-that was created with a basis:
+that was created with a prerequisite:
 
 ----------------
 $ git bundle verify mybundle
diff --git a/Documentation/git-column.txt b/Documentation/git-column.txt
index f58e9c4..6cea9ab 100644
--- a/Documentation/git-column.txt
+++ b/Documentation/git-column.txt
@@ -39,7 +39,7 @@
 --indent=<string>::
 	String to be printed at the beginning of each line.
 
---nl=<N>::
+--nl=<string>::
 	String to be printed at the end of each line,
 	including newline character.
 
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 340c5fb..95fec5f 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -72,7 +72,7 @@
 
 -p::
 --patch::
-	Use the interactive patch selection interface to chose
+	Use the interactive patch selection interface to choose
 	which changes to commit. See linkgit:git-add[1] for
 	details.
 
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index 5cddada..2dc4bae 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -71,6 +71,7 @@
 
 On success, the command returns the exit code 0.
 
+[[OPTIONS]]
 OPTIONS
 -------
 
@@ -143,7 +144,13 @@
 
 -f config-file::
 --file config-file::
-	Use the given config file instead of the one specified by GIT_CONFIG.
+	For writing options: write to the specified file rather than the
+	repository `.git/config`.
++
+For reading options: read only from the specified file rather than from all
+available files.
++
+See also <<FILES>>.
 
 --blob blob::
 	Similar to `--file` but use the given blob instead of a file. E.g.
@@ -325,21 +332,14 @@
 configuration file. Note that this also affects options like `--replace-all`
 and `--unset`. *'git config' will only ever change one file at a time*.
 
-You can override these rules either by command-line options or by environment
-variables. The `--global`, `--system` and `--worktree` options will limit
-the file used to the global, system-wide or per-worktree file respectively.
-The `GIT_CONFIG` environment variable has a similar effect, but you
-can specify any filename you want.
+You can override these rules using the `--global`, `--system`,
+`--local`, `--worktree`, and `--file` command-line options; see
+<<OPTIONS>> above.
 
 
 ENVIRONMENT
 -----------
 
-GIT_CONFIG::
-	Take the configuration from the given file instead of .git/config.
-	Using the "--global" option forces this to ~/.gitconfig. Using the
-	"--system" option forces this to $(prefix)/etc/gitconfig.
-
 GIT_CONFIG_GLOBAL::
 GIT_CONFIG_SYSTEM::
 	Take the configuration from the given files instead from global or
@@ -367,6 +367,12 @@
 with a common configuration but cannot depend on a configuration file,
 for example when writing scripts.
 
+GIT_CONFIG::
+	If no `--file` option is provided to `git config`, use the file
+	given by `GIT_CONFIG` as if it were provided via `--file`. This
+	variable has no effect on other Git commands, and is mostly for
+	historical compatibility; there is generally no reason to use it
+	instead of the `--file` option.
 
 [[EXAMPLES]]
 EXAMPLES
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index 7f4c8a8..6236c75 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -51,16 +51,20 @@
 	--staged is a synonym of --cached.
 +
 If --merge-base is given, instead of using <commit>, use the merge base
-of <commit> and HEAD.  `git diff --merge-base A` is equivalent to
-`git diff $(git merge-base A HEAD)`.
+of <commit> and HEAD.  `git diff --cached --merge-base A` is equivalent to
+`git diff --cached $(git merge-base A HEAD)`.
 
-'git diff' [<options>] <commit> [--] [<path>...]::
+'git diff' [<options>] [--merge-base] <commit> [--] [<path>...]::
 
 	This form is to view the changes you have in your
 	working tree relative to the named <commit>.  You can
 	use HEAD to compare it with the latest commit, or a
 	branch name to compare with the tip of a different
 	branch.
++
+If --merge-base is given, instead of using <commit>, use the merge base
+of <commit> and HEAD.  `git diff --merge-base A` is equivalent to
+`git diff $(git merge-base A HEAD)`.
 
 'git diff' [<options>] [--merge-base] <commit> <commit> [--] [<path>...]::
 
diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt
index 9067c20..550c16c 100644
--- a/Documentation/git-fetch.txt
+++ b/Documentation/git-fetch.txt
@@ -133,7 +133,7 @@
 linkgit:git-config[1].
 
 Here's where things get tricky and more specific. The pruning feature
-doesn't actually care about branches, instead it'll prune local <->
+doesn't actually care about branches, instead it'll prune local <-->
 remote-references as a function of the refspec of the remote (see
 `<refspec>` and <<CRTB,CONFIGURED REMOTE-TRACKING BRANCHES>> above).
 
diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt
index 2ae2478..6da899c 100644
--- a/Documentation/git-for-each-ref.txt
+++ b/Documentation/git-for-each-ref.txt
@@ -235,6 +235,15 @@
 without angle brackets, and `:localpart` to get the part before the `@` symbol
 out of the trimmed email.
 
+The raw data in an object is `raw`.
+
+raw:size::
+	The raw data size of the object.
+
+Note that `--format=%(raw)` can not be used with `--python`, `--shell`, `--tcl`,
+because such language may not support arbitrary binary data in their string
+variable type.
+
 The message in a commit or a tag object is `contents`, from which
 `contents:<part>` can be used to extract various parts out of:
 
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 1bbf865..0498e7b 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -39,7 +39,9 @@
 	full ref name (including prefix) will be printed. If 'auto' is
 	specified, then if the output is going to a terminal, the ref names
 	are shown as if 'short' were given, otherwise no ref names are
-	shown. The default option is 'short'.
+	shown. The option `--decorate` is short-hand for `--decorate=short`.
+	Default to configuration value of `log.decorate` if configured,
+	otherwise, `auto`.
 
 --decorate-refs=<pattern>::
 --decorate-refs-exclude=<pattern>::
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 3819fad..e4f3352 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -61,6 +61,8 @@
 
 OPTIONS
 -------
+:git-merge: 1
+
 include::merge-options.txt[]
 
 -m <msg>::
diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt
index 25d9fbe..dbfd1f9 100644
--- a/Documentation/git-pack-objects.txt
+++ b/Documentation/git-pack-objects.txt
@@ -128,10 +128,10 @@
 	into multiple independent packfiles, each not larger than the
 	given size. The size can be suffixed with
 	"k", "m", or "g". The minimum size allowed is limited to 1 MiB.
-	This option
-	prevents the creation of a bitmap index.
 	The default is unlimited, unless the config variable
-	`pack.packSizeLimit` is set.
+	`pack.packSizeLimit` is set. Note that this option may result in
+	a larger and slower repository; see the discussion in
+	`pack.packSizeLimit`.
 
 --honor-pack-keep::
 	This flag causes an object already in a local pack that
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
index 5c3fb67..aef757e 100644
--- a/Documentation/git-pull.txt
+++ b/Documentation/git-pull.txt
@@ -15,14 +15,17 @@
 DESCRIPTION
 -----------
 
-Incorporates changes from a remote repository into the current
-branch.  In its default mode, `git pull` is shorthand for
-`git fetch` followed by `git merge FETCH_HEAD`.
+Incorporates changes from a remote repository into the current branch.
+If the current branch is behind the remote, then by default it will
+fast-forward the current branch to match the remote.  If the current
+branch and the remote have diverged, the user needs to specify how to
+reconcile the divergent branches with `--rebase` or `--no-rebase` (or
+the corresponding configuration option in `pull.rebase`).
 
-More precisely, 'git pull' runs 'git fetch' with the given
-parameters and calls 'git merge' to merge the retrieved branch
-heads into the current branch.
-With `--rebase`, it runs 'git rebase' instead of 'git merge'.
+More precisely, `git pull` runs `git fetch` with the given parameters
+and then depending on configuration options or command line flags,
+will call either `git rebase` or `git merge` to reconcile diverging
+branches.
 
 <repository> should be the name of a remote repository as
 passed to linkgit:git-fetch[1].  <refspec> can name an
@@ -117,7 +120,7 @@
 `--preserve-merges` option passed to `git rebase` so that locally created
 merge commits will not be flattened.
 +
-When false, merge the current branch into the upstream branch.
+When false, merge the upstream branch into the current branch.
 +
 When `interactive`, enable the interactive mode of rebase.
 +
@@ -132,7 +135,7 @@
 unless you have read linkgit:git-rebase[1] carefully.
 
 --no-rebase::
-	Override earlier --rebase.
+	This is shorthand for --rebase=false.
 
 Options related to fetching
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index a953c7c..2f25aa3 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -244,8 +244,8 @@
 You will have to bypass the "must fast-forward" rule in order to
 replace the history you originally published with the rebased history.
 If somebody else built on top of your original history while you are
-rebasing, the tip of the branch at the remote may advance with her
-commit, and blindly pushing with `--force` will lose her work.
+rebasing, the tip of the branch at the remote may advance with their
+commit, and blindly pushing with `--force` will lose their work.
 +
 This option allows you to say that you expect the history you are
 updating is what you rebased and want to replace. If the remote ref
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 55af6fd..506345c 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -79,9 +79,10 @@
 
 If the upstream branch already contains a change you have made (e.g.,
 because you mailed a patch which was applied upstream), then that commit
-will be skipped. For example, running `git rebase master` on the
-following history (in which `A'` and `A` introduce the same set of changes,
-but have different committer information):
+will be skipped and warnings will be issued (if the `merge` backend is
+used).  For example, running `git rebase master` on the following
+history (in which `A'` and `A` introduce the same set of changes, but
+have different committer information):
 
 ------------
           A---B---C topic
@@ -312,7 +313,10 @@
 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.
+of upstream commits that need to be read.  When using the `merge`
+backend, warnings will be issued for each dropped commit (unless
+`--quiet` is given). Advice will also be issued unless
+`advice.skippedCherryPicks` is set to false (see linkgit:git-config[1]).
 +
 `--reapply-cherry-picks` allows rebase to forgo reading all upstream
 commits, potentially improving performance.
@@ -340,9 +344,7 @@
 
 -m::
 --merge::
-	Use merging strategies to rebase.  When the recursive (default) merge
-	strategy is used, this allows rebase to be aware of renames on the
-	upstream side.  This is the default.
+	Using merging strategies to rebase (default).
 +
 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
@@ -354,9 +356,8 @@
 
 -s <strategy>::
 --strategy=<strategy>::
-	Use the given merge strategy.
-	If there is no `-s` option 'git merge-recursive' is used
-	instead.  This implies --merge.
+	Use the given merge strategy, instead of the default `ort`.
+	This implies `--merge`.
 +
 Because 'git rebase' replays each commit from the working branch
 on top of the <upstream> branch using the given strategy, using
@@ -369,7 +370,7 @@
 --strategy-option=<strategy-option>::
 	Pass the <strategy-option> through to the merge strategy.
 	This implies `--merge` and, if no strategy has been
-	specified, `-s recursive`.  Note the reversal of 'ours' and
+	specified, `-s ort`.  Note the reversal of 'ours' and
 	'theirs' as noted above for the `-m` option.
 +
 See also INCOMPATIBLE OPTIONS below.
@@ -530,7 +531,7 @@
 where commits can be reordered, inserted and dropped at will.
 +
 It is currently only possible to recreate the merge commits using the
-`recursive` merge strategy; Different merge strategies can be used only via
+`ort` merge strategy; different merge strategies can be used only via
 explicit `exec git merge -s <strategy> [...]` commands.
 +
 See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
@@ -1219,12 +1220,16 @@
 If a `merge` command fails for any reason other than merge conflicts (i.e.
 when the merge operation did not even start), it is rescheduled immediately.
 
-At this time, the `merge` command will *always* use the `recursive`
-merge strategy for regular merges, and `octopus` for octopus merges,
-with no way to choose a different one. To work around
-this, an `exec` command can be used to call `git merge` explicitly,
-using the fact that the labels are worktree-local refs (the ref
-`refs/rewritten/onto` would correspond to the label `onto`, for example).
+By default, the `merge` command will use the `ort` merge strategy for
+regular merges, and `octopus` for octopus merges.  One can specify a
+default strategy for all merges using the `--strategy` argument when
+invoking rebase, or can override specific merges in the interactive
+list of commands by using an `exec` command to call `git merge`
+explicitly with a `--strategy` argument.  Note that when calling `git
+merge` explicitly like this, you can make use of the fact that the
+labels are worktree-local refs (the ref `refs/rewritten/onto` would
+correspond to the label `onto`, for example) in order to refer to the
+branches you want to merge.
 
 Note: the first command (`label onto`) labels the revision onto which
 the commits are rebased; The name `onto` is just a convention, as a nod
diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
index ef310f3..24c00c9 100644
--- a/Documentation/git-repack.txt
+++ b/Documentation/git-repack.txt
@@ -121,7 +121,9 @@
 	If specified, multiple packfiles may be created, which also
 	prevents the creation of a bitmap index.
 	The default is unlimited, unless the config variable
-	`pack.packSizeLimit` is set.
+	`pack.packSizeLimit` is set. Note that this option may result in
+	a larger and slower repository; see the discussion in
+	`pack.packSizeLimit`.
 
 -b::
 --write-bitmap-index::
diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
index f1bb1fa..8a7cbdd 100644
--- a/Documentation/git-worktree.txt
+++ b/Documentation/git-worktree.txt
@@ -9,7 +9,7 @@
 SYNOPSIS
 --------
 [verse]
-'git worktree add' [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]
+'git worktree add' [-f] [--detach] [--checkout] [--lock [--reason <string>]] [-b <new-branch>] <path> [<commit-ish>]
 'git worktree list' [--porcelain]
 'git worktree lock' [--reason <string>] <worktree>
 'git worktree move' <worktree> <new-path>
@@ -242,7 +242,7 @@
 older than `<time>`.
 
 --reason <string>::
-	With `lock`, an explanation why the working tree is locked.
+	With `lock` or with `add --lock`, an explanation why the working tree is locked.
 
 <worktree>::
 	Working trees can be identified by path, either relative or
@@ -387,7 +387,7 @@
 ------------
 $ git worktree list
 /path/to/linked-worktree    abcd1234 [master]
-/path/to/locked-worktreee   acbd5678 (brancha) locked
+/path/to/locked-worktree    acbd5678 (brancha) locked
 /path/to/prunable-worktree  5678abc  (detached HEAD) prunable
 ------------
 
diff --git a/Documentation/gitfaq.txt b/Documentation/gitfaq.txt
index afdaeab..8c1f2d5 100644
--- a/Documentation/gitfaq.txt
+++ b/Documentation/gitfaq.txt
@@ -275,7 +275,7 @@
 
 [[merge-two-revert-one]]
 If I make a change on two branches but revert it on one, why does the merge of those branches include the change?::
-	By default, when Git does a merge, it uses a strategy called the recursive
+	By default, when Git does a merge, it uses a strategy called the `ort`
 	strategy, which does a fancy three-way merge.  In such a case, when Git
 	performs the merge, it considers exactly three points: the two heads and a
 	third point, called the _merge base_, which is usually the common ancestor of
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
index 53e7d5c..f8a1fc2 100644
--- a/Documentation/gitignore.txt
+++ b/Documentation/gitignore.txt
@@ -27,12 +27,11 @@
    them.
 
  * Patterns read from a `.gitignore` file in the same directory
-   as the path, or in any parent directory, with patterns in the
-   higher level files (up to the toplevel of the work tree) being overridden
-   by those in lower level files down to the directory containing the file.
-   These patterns match relative to the location of the
-   `.gitignore` file.  A project normally includes such
-   `.gitignore` files in its repository, containing patterns for
+   as the path, or in any parent directory (up to the top-level of the working
+   tree), with patterns in the higher level files being overridden by those in
+   lower level files down to the directory containing the file. These patterns
+   match relative to the location of the `.gitignore` file.  A project normally
+   includes such `.gitignore` files in its repository, containing patterns for
    files generated as part of the project build.
 
  * Patterns read from `$GIT_DIR/info/exclude`.
diff --git a/Documentation/gittutorial.txt b/Documentation/gittutorial.txt
index 59ef5ce..0e0b863 100644
--- a/Documentation/gittutorial.txt
+++ b/Documentation/gittutorial.txt
@@ -322,7 +322,7 @@
 their histories forked, Alice will use her working tree and the index to
 resolve conflicts, and existing local changes will interfere with the
 conflict resolution process (Git will still perform the fetch but will
-refuse to merge --- Alice will have to get rid of her local changes in
+refuse to merge -- Alice will have to get rid of her local changes in
 some way and pull again when this happens).
 
 Alice can peek at what Bob did without merging first, using the "fetch"
diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
index eb0aabd..61ec157 100644
--- a/Documentation/merge-options.txt
+++ b/Documentation/merge-options.txt
@@ -2,6 +2,9 @@
 --no-commit::
 	Perform the merge and commit the result. This option can
 	be used to override --no-commit.
+ifdef::git-pull[]
+	Only useful when merging.
+endif::git-pull[]
 +
 With --no-commit perform the merge and stop just before creating
 a merge commit, to give the user a chance to inspect and further
@@ -39,6 +42,7 @@
 	to `MERGE_MSG` before being passed on to the commit machinery in the
 	case of a merge conflict.
 
+ifdef::git-merge[]
 --ff::
 --no-ff::
 --ff-only::
@@ -47,6 +51,22 @@
 	default unless merging an annotated (and possibly signed) tag
 	that is not stored in its natural place in the `refs/tags/`
 	hierarchy, in which case `--no-ff` is assumed.
+endif::git-merge[]
+ifdef::git-pull[]
+--ff-only::
+	Only update to the new history if there is no divergent local
+	history.  This is the default when no method for reconciling
+	divergent histories is provided (via the --rebase=* flags).
+
+--ff::
+--no-ff::
+	When merging rather than rebasing, specifies how a merge is
+	handled when the merged-in history is already a descendant of
+	the current history.  If merging is requested, `--ff` is the
+	default unless merging an annotated (and possibly signed) tag
+	that is not stored in its natural place in the `refs/tags/`
+	hierarchy, in which case `--no-ff` is assumed.
+endif::git-pull[]
 +
 With `--ff`, when possible resolve the merge as a fast-forward (only
 update the branch pointer to match the merged branch; do not create a
@@ -55,9 +75,11 @@
 +
 With `--no-ff`, create a merge commit in all cases, even when the merge
 could instead be resolved as a fast-forward.
+ifdef::git-merge[]
 +
 With `--ff-only`, resolve the merge as a fast-forward when possible.
 When not possible, refuse to merge and exit with a non-zero status.
+endif::git-merge[]
 
 -S[<keyid>]::
 --gpg-sign[=<keyid>]::
@@ -73,6 +95,9 @@
 	In addition to branch names, populate the log message with
 	one-line descriptions from at most <n> actual commits that are being
 	merged. See also linkgit:git-fmt-merge-msg[1].
+ifdef::git-pull[]
+	Only useful when merging.
+endif::git-pull[]
 +
 With --no-log do not list one-line descriptions from the
 actual commits being merged.
@@ -102,18 +127,25 @@
 option can be used to override --squash.
 +
 With --squash, --commit is not allowed, and will fail.
+ifdef::git-pull[]
++
+Only useful when merging.
+endif::git-pull[]
 
 --no-verify::
 	This option bypasses the pre-merge and commit-msg hooks.
 	See also linkgit:githooks[5].
+ifdef::git-pull[]
+	Only useful when merging.
+endif::git-pull[]
 
 -s <strategy>::
 --strategy=<strategy>::
 	Use the given merge strategy; can be supplied more than
 	once to specify them in the order they should be tried.
 	If there is no `-s` option, a built-in list of strategies
-	is used instead ('git merge-recursive' when merging a single
-	head, 'git merge-octopus' otherwise).
+	is used instead (`ort` when merging a single head,
+	`octopus` otherwise).
 
 -X <option>::
 --strategy-option=<option>::
@@ -127,6 +159,10 @@
 	default trust model, this means the signing key has been signed by
 	a trusted key.  If the tip commit of the side branch is not signed
 	with a valid key, the merge is aborted.
+ifdef::git-pull[]
++
+Only useful when merging.
+endif::git-pull[]
 
 --summary::
 --no-summary::
@@ -154,7 +190,8 @@
 --autostash::
 --no-autostash::
 	Automatically create a temporary stash entry before the operation
-	begins, and apply it after the operation ends.  This means
+	begins, record it in the special ref `MERGE_AUTOSTASH`
+	and apply it after the operation ends.  This means
 	that you can run the operation on a dirty worktree.  However, use
 	with care: the final stash application after a successful
 	merge might result in non-trivial conflicts.
@@ -166,3 +203,7 @@
 	projects that started their lives independently. As that is
 	a very rare occasion, no configuration variable to enable
 	this by default exists and will not be added.
+ifdef::git-pull[]
++
+Only useful when merging.
+endif::git-pull[]
diff --git a/Documentation/merge-strategies.txt b/Documentation/merge-strategies.txt
index 2912de7..5fc54ec 100644
--- a/Documentation/merge-strategies.txt
+++ b/Documentation/merge-strategies.txt
@@ -6,28 +6,23 @@
 can also take their own options, which can be passed by giving `-X<option>`
 arguments to `git merge` and/or `git pull`.
 
-resolve::
-	This can only resolve two heads (i.e. the current branch
-	and another branch you pulled from) using a 3-way merge
-	algorithm.  It tries to carefully detect criss-cross
-	merge ambiguities and is considered generally safe and
-	fast.
-
-recursive::
-	This can only resolve two heads using a 3-way merge
-	algorithm.  When there is more than one common
-	ancestor that can be used for 3-way merge, it creates a
-	merged tree of the common ancestors and uses that as
-	the reference tree for the 3-way merge.  This has been
-	reported to result in fewer merge conflicts without
-	causing mismerges by tests done on actual merge commits
-	taken from Linux 2.6 kernel development history.
-	Additionally this can detect and handle merges involving
-	renames, but currently cannot make use of detected
-	copies.  This is the default merge strategy when pulling
-	or merging one branch.
+ort::
+	This is the default merge strategy when pulling or merging one
+	branch.  This strategy can only resolve two heads using a
+	3-way merge algorithm.  When there is more than one common
+	ancestor that can be used for 3-way merge, it creates a merged
+	tree of the common ancestors and uses that as the reference
+	tree for the 3-way merge.  This has been reported to result in
+	fewer merge conflicts without causing mismerges by tests done
+	on actual merge commits taken from Linux 2.6 kernel
+	development history.  Additionally this strategy can detect
+	and handle merges involving renames.  It does not make use of
+	detected copies.  The name for this algorithm is an acronym
+	("Ostensibly Recursive's Twin") and came from the fact that it
+	was written as a replacement for the previous default
+	algorithm, `recursive`.
 +
-The 'recursive' strategy can take the following options:
+The 'ort' strategy can take the following options:
 
 ours;;
 	This option forces conflicting hunks to be auto-resolved cleanly by
@@ -43,19 +38,6 @@
 	This is the opposite of 'ours'; note that, unlike 'ours', there is
 	no 'theirs' merge strategy to confuse this merge option with.
 
-patience;;
-	With this option, 'merge-recursive' spends a little extra time
-	to avoid mismerges that sometimes occur due to unimportant
-	matching lines (e.g., braces from distinct functions).  Use
-	this when the branches to be merged have diverged wildly.
-	See also linkgit:git-diff[1] `--patience`.
-
-diff-algorithm=[patience|minimal|histogram|myers];;
-	Tells 'merge-recursive' to use a different diff algorithm, which
-	can help avoid mismerges that occur due to unimportant matching
-	lines (such as braces from distinct functions).  See also
-	linkgit:git-diff[1] `--diff-algorithm`.
-
 ignore-space-change;;
 ignore-all-space;;
 ignore-space-at-eol;;
@@ -84,11 +66,6 @@
 	Disables the `renormalize` option.  This overrides the
 	`merge.renormalize` configuration variable.
 
-no-renames;;
-	Turn off rename detection. This overrides the `merge.renames`
-	configuration variable.
-	See also linkgit:git-diff[1] `--no-renames`.
-
 find-renames[=<n>];;
 	Turn on rename detection, optionally setting the similarity
 	threshold.  This is the default. This overrides the
@@ -105,6 +82,46 @@
 	is prefixed (or stripped from the beginning) to make the shape of
 	two trees to match.
 
+recursive::
+	This can only resolve two heads using a 3-way merge
+	algorithm.  When there is more than one common
+	ancestor that can be used for 3-way merge, it creates a
+	merged tree of the common ancestors and uses that as
+	the reference tree for the 3-way merge.  This has been
+	reported to result in fewer merge conflicts without
+	causing mismerges by tests done on actual merge commits
+	taken from Linux 2.6 kernel development history.
+	Additionally this can detect and handle merges involving
+	renames.  It does not make use of detected copies.  This was
+	the default strategy for resolving two heads from Git v0.99.9k
+	until v2.33.0.
++
+The 'recursive' strategy takes the same options as 'ort'.  However,
+there are three additional options that 'ort' ignores (not documented
+above) that are potentially useful with the 'recursive' strategy:
+
+patience;;
+	Deprecated synonym for `diff-algorithm=patience`.
+
+diff-algorithm=[patience|minimal|histogram|myers];;
+	Use a different diff algorithm while merging, which can help
+	avoid mismerges that occur due to unimportant matching lines
+	(such as braces from distinct functions).  See also
+	linkgit:git-diff[1] `--diff-algorithm`.  Note that `ort`
+	specifically uses `diff-algorithm=histogram`, while `recursive`
+	defaults to the `diff.algorithm` config setting.
+
+no-renames;;
+	Turn off rename detection. This overrides the `merge.renames`
+	configuration variable.
+	See also linkgit:git-diff[1] `--no-renames`.
+
+resolve::
+	This can only resolve two heads (i.e. the current branch
+	and another branch you pulled from) using a 3-way merge
+	algorithm.  It tries to carefully detect criss-cross
+	merge ambiguities.  It does not handle renames.
+
 octopus::
 	This resolves cases with more than two heads, but refuses to do
 	a complex merge that needs manual resolution.  It is
@@ -121,13 +138,13 @@
 	the 'recursive' merge strategy.
 
 subtree::
-	This is a modified recursive strategy. When merging trees A and
+	This is a modified `ort` strategy. When merging trees A and
 	B, if B corresponds to a subtree of A, B is first adjusted to
 	match the tree structure of A, instead of reading the trees at
 	the same level. This adjustment is also done to the common
 	ancestor tree.
 
-With the strategies that use 3-way merge (including the default, 'recursive'),
+With the strategies that use 3-way merge (including the default, 'ort'),
 if a change is made on both branches, but later reverted on one of the
 branches, that change will be present in the merged result; some people find
 this behavior confusing.  It occurs because only the heads and the merge base
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 27ddaf8..b3af850 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -33,14 +33,16 @@
 	used together.
 
 --encoding=<encoding>::
-	The commit objects record the encoding used for the log message
+	Commit objects record the character encoding used for the log message
 	in their encoding header; this option can be used to tell the
 	command to re-code the commit log message in the encoding
 	preferred by the user.  For non plumbing commands this
 	defaults to UTF-8. Note that if an object claims to be encoded
 	in `X` and we are outputting in `X`, we will output the object
 	verbatim; this means that invalid sequences in the original
-	commit may be copied to the output.
+	commit may be copied to the output. Likewise, if iconv(3) fails
+	to convert the commit, we will output the original object
+	verbatim, along with a warning.
 
 --expand-tabs=<n>::
 --expand-tabs::
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 5bf2a85..b7bd27e 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -897,7 +897,7 @@
 +
 The form '--filter=sparse:oid=<blob-ish>' uses a sparse-checkout
 specification contained in the blob (or blob-expression) '<blob-ish>'
-to omit blobs that would not be not required for a sparse checkout on
+to omit blobs that would not be required for a sparse checkout on
 the requested refs.
 +
 The form '--filter=tree:<depth>' omits all blobs and trees whose depth
@@ -968,6 +968,11 @@
 	objects.
 endif::git-rev-list[]
 
+--unsorted-input::
+	Show commits in the order they were given on the command line instead
+	of sorting them in reverse chronological order by commit time. Cannot
+	be combined with `--no-walk` or `--no-walk=sorted`.
+
 --no-walk[=(sorted|unsorted)]::
 	Only show the given commits, but do not traverse their ancestors.
 	This has no effect if a range is specified. If the argument
@@ -975,7 +980,8 @@
 	given on the command line. Otherwise (if `sorted` or no argument
 	was given), the commits are shown in reverse chronological order
 	by commit time.
-	Cannot be combined with `--graph`.
+	Cannot be combined with `--graph`. Cannot be combined with
+	`--unsorted-input` if `sorted` or no argument was given.
 
 --do-walk::
 	Overrides a previous `--no-walk`.
@@ -1064,6 +1070,14 @@
 --header::
 	Print the contents of the commit in raw-format; each record is
 	separated with a NUL character.
+
+--no-commit-header::
+	Suppress the header line containing "commit" and the object ID printed before
+	the specified format.  This has no effect on the built-in formats; only custom
+	formats are affected.
+
+--commit-header::
+	Overrides a previous `--no-commit-header`.
 endif::git-rev-list[]
 
 --parents::
diff --git a/Documentation/technical/api-trace2.txt b/Documentation/technical/api-trace2.txt
index 3f52f98..b9f3198 100644
--- a/Documentation/technical/api-trace2.txt
+++ b/Documentation/technical/api-trace2.txt
@@ -396,14 +396,14 @@
 }
 ------------
 
-`"discard"`::
+`"too_many_files"`::
 	This event is written to the git-trace2-discard sentinel file if there
 	are too many files in the target trace directory (see the
 	trace2.maxFiles config option).
 +
 ------------
 {
-	"event":"discard",
+	"event":"too_many_files",
 	...
 }
 ------------
@@ -493,6 +493,20 @@
 }
 ------------
 
+`"cmd_ancestry"`::
+	This event contains the text command name for the parent (and earlier
+	generations of parents) of the current process, in an array ordered from
+	nearest parent to furthest great-grandparent. It may not be implemented
+	on all platforms.
++
+------------
+{
+	"event":"cmd_ancestry",
+	...
+	"ancestry":["bash","tmux: server","systemd"]
+}
+------------
+
 `"cmd_name"`::
 	This event contains the command name for this git process
 	and the hierarchy of commands from parent git processes.
diff --git a/Documentation/technical/directory-rename-detection.txt b/Documentation/technical/directory-rename-detection.txt
index 49b83ef..029ee2c 100644
--- a/Documentation/technical/directory-rename-detection.txt
+++ b/Documentation/technical/directory-rename-detection.txt
@@ -2,9 +2,9 @@
 ==========================
 
 Rename detection logic in diffcore-rename that checks for renames of
-individual files is aggregated and analyzed in merge-recursive for cases
-where combinations of renames indicate that a full directory has been
-renamed.
+individual files is also aggregated there and then analyzed in either
+merge-ort or merge-recursive for cases where combinations of renames
+indicate that a full directory has been renamed.
 
 Scope of abilities
 ------------------
@@ -88,9 +88,11 @@
     Folks have requested in the past that `git diff` detect directory
     renames and somehow simplify its output.  It is not clear whether this
     would be desirable or how the output should be simplified, so this was
-    simply not implemented.  Further, to implement this, directory rename
-    detection logic would need to move from merge-recursive to
-    diffcore-rename.
+    simply not implemented.  Also, while diffcore-rename has most of the
+    logic for detecting directory renames, some of the logic is still found
+    within merge-ort and merge-recursive.  Fully supporting directory
+    rename detection in diffs would require copying or moving the remaining
+    bits of logic to the diff machinery.
 
   * am
 
diff --git a/Documentation/technical/hash-function-transition.txt b/Documentation/technical/hash-function-transition.txt
index 7c1630b..260224b 100644
--- a/Documentation/technical/hash-function-transition.txt
+++ b/Documentation/technical/hash-function-transition.txt
@@ -599,7 +599,7 @@
     convert any object names written to output to SHA-1, but store
     objects using SHA-256.  This allows users to test the code with no
     visible behavior change except for performance.  This allows
-    allows running even tests that assume the SHA-1 hash function, to
+    running even tests that assume the SHA-1 hash function, to
     sanity-check the behavior of the new mode.
 
  2. ("early transition") Allow both SHA-1 and SHA-256 object names in
diff --git a/Documentation/technical/partial-clone.txt b/Documentation/technical/partial-clone.txt
index 0780d30..a0dd7c6 100644
--- a/Documentation/technical/partial-clone.txt
+++ b/Documentation/technical/partial-clone.txt
@@ -242,8 +242,7 @@
   repository and can satisfy all such requests.
 
 - Repack essentially treats promisor and non-promisor packfiles as 2
-  distinct partitions and does not mix them.  Repack currently only works
-  on non-promisor packfiles and loose objects.
+  distinct partitions and does not mix them.
 
 - Dynamic object fetching invokes fetch-pack once *for each item*
   because most algorithms stumble upon a missing object and need to have
@@ -273,9 +272,6 @@
 The user might want to work in a triangular work flow with multiple
 promisor remotes that each have an incomplete view of the repository.
 
-- Allow repack to work on promisor packfiles (while keeping them distinct
-  from non-promisor packfiles).
-
 - Allow non-pathname-based filters to make use of packfile bitmaps (when
   present).  This was just an omission during the initial implementation.
 
diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
index a1e3136..1040d85 100644
--- a/Documentation/technical/protocol-v2.txt
+++ b/Documentation/technical/protocol-v2.txt
@@ -540,7 +540,7 @@
 	Indicates to the server an object which the client wants to obtain
 	information for.
 
-The response of `object-info` is a list of the the requested object ids
+The response of `object-info` is a list of the requested object ids
 and associated requested information, each separated by a single space.
 
 	output = info flush-pkt
diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt
index f9e54b8..865074b 100644
--- a/Documentation/user-manual.txt
+++ b/Documentation/user-manual.txt
@@ -2792,7 +2792,7 @@
 
 In some cases it is possible that the new head will *not* actually be
 a descendant of the old head.  For example, the developer may have
-realized she made a serious mistake, and decided to backtrack,
+realized a serious mistake was made and decided to backtrack,
 resulting in a situation like:
 
 ................................................
@@ -3190,7 +3190,7 @@
 not being pointed to by any commit or tree, so it's now a dangling blob
 object.
 
-Similarly, when the "recursive" merge strategy runs, and finds that
+Similarly, when the "ort" merge strategy runs, and finds that
 there are criss-cross merges and thus more than one merge base (which is
 fairly unusual, but it does happen), it will generate one temporary
 midway tree (or possibly even more, if you had lots of criss-crossing
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 9c125f2..b48559d 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v2.32.0
+DEF_VER=v2.33.GIT
 
 LF='
 '
diff --git a/Makefile b/Makefile
index a152597..429c276 100644
--- a/Makefile
+++ b/Makefile
@@ -398,6 +398,10 @@
 # with a different indexfile format version.  If it isn't set the index
 # file format used is index-v[23].
 #
+# Define GIT_TEST_UTF8_LOCALE to preferred utf-8 locale for testing.
+# If it isn't set, fallback to $LC_ALL, $LANG or use the first utf-8
+# locale returned by "locale -a".
+#
 # Define HAVE_CLOCK_GETTIME if your platform has clock_gettime.
 #
 # Define HAVE_CLOCK_MONOTONIC if your platform has CLOCK_MONOTONIC.
@@ -711,6 +715,7 @@
 TEST_BUILTINS_OBJS += test-fast-rebase.o
 TEST_BUILTINS_OBJS += test-genrandom.o
 TEST_BUILTINS_OBJS += test-genzeros.o
+TEST_BUILTINS_OBJS += test-getcwd.o
 TEST_BUILTINS_OBJS += test-hash-speed.o
 TEST_BUILTINS_OBJS += test-hash.o
 TEST_BUILTINS_OBJS += test-hashmap.o
@@ -726,6 +731,7 @@
 TEST_BUILTINS_OBJS += test-online-cpus.o
 TEST_BUILTINS_OBJS += test-parse-options.o
 TEST_BUILTINS_OBJS += test-parse-pathspec-file.o
+TEST_BUILTINS_OBJS += test-partial-clone.o
 TEST_BUILTINS_OBJS += test-path-utils.o
 TEST_BUILTINS_OBJS += test-pcre2-config.o
 TEST_BUILTINS_OBJS += test-pkt-line.o
@@ -1911,6 +1917,10 @@
 	BASIC_CFLAGS += '-DPROCFS_EXECUTABLE_PATH="$(procfs_executable_path_SQ)"'
 endif
 
+ifndef HAVE_PLATFORM_PROCINFO
+	COMPAT_OBJS += compat/stub/procinfo.o
+endif
+
 ifdef HAVE_NS_GET_EXECUTABLE_PATH
 	BASIC_CFLAGS += -DHAVE_NS_GET_EXECUTABLE_PATH
 endif
@@ -2163,6 +2173,16 @@
 strip: $(PROGRAMS) git$X
 	$(STRIP) $(STRIP_OPTS) $^
 
+### Flags affecting all rules
+
+# A GNU make extension since gmake 3.72 (released in late 1994) to
+# remove the target of rules if commands in those rules fail. The
+# default is to only do that if make itself receives a signal. Affects
+# all targets, see:
+#
+#    info make --index-search=.DELETE_ON_ERROR
+.DELETE_ON_ERROR:
+
 ### Target-specific flags and dependencies
 
 # The generic compilation pattern rule and automatically
@@ -2246,7 +2266,6 @@
 	$(gitwebdir_SQ):$(PERL_PATH_SQ):$(SANE_TEXT_GREP):$(PAGER_ENV):\
 	$(perllibdir_SQ)
 define cmd_munge_script
-$(RM) $@ $@+ && \
 sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
     -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
     -e 's|@@DIFF@@|$(DIFF_SQ)|' \
@@ -2316,7 +2335,7 @@
 PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)
 
 $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
-	$(QUIET_GEN)$(RM) $@ $@+ && \
+	$(QUIET_GEN) \
 	sed -e '1{' \
 	    -e '	s|#!.*perl|#!$(PERL_PATH_SQ)|' \
 	    -e '	r GIT-PERL-HEADER' \
@@ -2336,7 +2355,7 @@
 	    fi
 
 GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile
-	$(QUIET_GEN)$(RM) $@ && \
+	$(QUIET_GEN) \
 	INSTLIBDIR='$(perllibdir_SQ)' && \
 	INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \
 	INSTLIBDIR="$$INSTLIBDIR$${INSTLIBDIR_EXTRA:+:$$INSTLIBDIR_EXTRA}" && \
@@ -2362,7 +2381,7 @@
 	mv $@+ $@
 else # NO_PERL
 $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh
-	$(QUIET_GEN)$(RM) $@ $@+ && \
+	$(QUIET_GEN) \
 	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
 	    -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \
 	    unimplemented.sh >$@+ && \
@@ -2376,14 +2395,14 @@
 ifndef NO_PYTHON
 $(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
 $(SCRIPT_PYTHON_GEN): % : %.py
-	$(QUIET_GEN)$(RM) $@ $@+ && \
+	$(QUIET_GEN) \
 	sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
 	    $< >$@+ && \
 	chmod +x $@+ && \
 	mv $@+ $@
 else # NO_PYTHON
 $(SCRIPT_PYTHON_GEN): % : unimplemented.sh
-	$(QUIET_GEN)$(RM) $@ $@+ && \
+	$(QUIET_GEN) \
 	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
 	    -e 's|@@REASON@@|NO_PYTHON=$(NO_PYTHON)|g' \
 	    unimplemented.sh >$@+ && \
@@ -2391,8 +2410,7 @@
 	mv $@+ $@
 endif # NO_PYTHON
 
-CONFIGURE_RECIPE = $(RM) configure configure.ac+ && \
-		   sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+CONFIGURE_RECIPE = sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
 			configure.ac >configure.ac+ && \
 		   autoconf -o configure configure.ac+ && \
 		   $(RM) configure.ac+
@@ -2517,7 +2535,6 @@
 ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
 all:: compile_commands.json
 compile_commands.json:
-	@$(RM) $@
 	$(QUIET_GEN)sed -e '1s/^/[/' -e '$$s/,$$/]/' $(compdb_dir)/*.o.json > $@+
 	@if test -s $@+; then mv $@+ $@; else $(RM) $@+; fi
 endif
@@ -2678,10 +2695,13 @@
 .PHONY: pot
 pot: po/git.pot
 
+ifdef NO_GETTEXT
+POFILES :=
+MOFILES :=
+else
 POFILES := $(wildcard po/*.po)
 MOFILES := $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES))
 
-ifndef NO_GETTEXT
 all:: $(MOFILES)
 endif
 
@@ -2805,6 +2825,9 @@
 ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
 	@echo GIT_TEST_CMP_USE_COPIED_CONTEXT=YesPlease >>$@+
 endif
+ifdef GIT_TEST_UTF8_LOCALE
+	@echo GIT_TEST_UTF8_LOCALE=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_UTF8_LOCALE)))'\' >>$@+
+endif
 	@echo NO_GETTEXT=\''$(subst ','\'',$(subst ','\'',$(NO_GETTEXT)))'\' >>$@+
 ifdef GIT_PERF_REPEAT_COUNT
 	@echo GIT_PERF_REPEAT_COUNT=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_REPEAT_COUNT)))'\' >>$@+
@@ -2830,6 +2853,11 @@
 ifdef GIT_TEST_PERL_FATAL_WARNINGS
 	@echo GIT_TEST_PERL_FATAL_WARNINGS=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_PERL_FATAL_WARNINGS)))'\' >>$@+
 endif
+ifdef RUNTIME_PREFIX
+	@echo RUNTIME_PREFIX=\'true\' >>$@+
+else
+	@echo RUNTIME_PREFIX=\'false\' >>$@+
+endif
 	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
 
 ### Detect Python interpreter path changes
diff --git a/RelNotes b/RelNotes
index f071367..6c94469 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.33.0.txt
\ No newline at end of file
+Documentation/RelNotes/2.34.0.txt
\ No newline at end of file
diff --git a/add-patch.c b/add-patch.c
index 2fad92c..8c41cdf 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -280,6 +280,7 @@
 	clear_add_i_state(&s->s);
 }
 
+__attribute__((format (printf, 2, 3)))
 static void err(struct add_p_state *s, const char *fmt, ...)
 {
 	va_list args;
diff --git a/advice.c b/advice.c
index 0b9c89c..2f5499a 100644
--- a/advice.c
+++ b/advice.c
@@ -4,37 +4,6 @@
 #include "help.h"
 #include "string-list.h"
 
-int advice_fetch_show_forced_updates = 1;
-int advice_push_update_rejected = 1;
-int advice_push_non_ff_current = 1;
-int advice_push_non_ff_matching = 1;
-int advice_push_already_exists = 1;
-int advice_push_fetch_first = 1;
-int advice_push_needs_force = 1;
-int advice_push_unqualified_ref_name = 1;
-int advice_push_ref_needs_update = 1;
-int advice_status_hints = 1;
-int advice_status_u_option = 1;
-int advice_status_ahead_behind_warning = 1;
-int advice_commit_before_merge = 1;
-int advice_reset_quiet_warning = 1;
-int advice_resolve_conflict = 1;
-int advice_sequencer_in_use = 1;
-int advice_implicit_identity = 1;
-int advice_detached_head = 1;
-int advice_set_upstream_failure = 1;
-int advice_object_name_warning = 1;
-int advice_amworkdir = 1;
-int advice_rm_hints = 1;
-int advice_add_embedded_repo = 1;
-int advice_ignored_hook = 1;
-int advice_waiting_for_editor = 1;
-int advice_graft_file_deprecated = 1;
-int advice_checkout_ambiguous_remote_branch_name = 1;
-int advice_submodule_alternate_error_strategy_die = 1;
-int advice_add_ignored_file = 1;
-int advice_add_empty_pathspec = 1;
-
 static int advice_use_color = -1;
 static char advice_colors[][COLOR_MAXLEN] = {
 	GIT_COLOR_RESET,
@@ -63,49 +32,12 @@
 }
 
 static struct {
-	const char *name;
-	int *preference;
-} advice_config[] = {
-	{ "fetchShowForcedUpdates", &advice_fetch_show_forced_updates },
-	{ "pushUpdateRejected", &advice_push_update_rejected },
-	{ "pushNonFFCurrent", &advice_push_non_ff_current },
-	{ "pushNonFFMatching", &advice_push_non_ff_matching },
-	{ "pushAlreadyExists", &advice_push_already_exists },
-	{ "pushFetchFirst", &advice_push_fetch_first },
-	{ "pushNeedsForce", &advice_push_needs_force },
-	{ "pushUnqualifiedRefName", &advice_push_unqualified_ref_name },
-	{ "pushRefNeedsUpdate", &advice_push_ref_needs_update },
-	{ "statusHints", &advice_status_hints },
-	{ "statusUoption", &advice_status_u_option },
-	{ "statusAheadBehindWarning", &advice_status_ahead_behind_warning },
-	{ "commitBeforeMerge", &advice_commit_before_merge },
-	{ "resetQuiet", &advice_reset_quiet_warning },
-	{ "resolveConflict", &advice_resolve_conflict },
-	{ "sequencerInUse", &advice_sequencer_in_use },
-	{ "implicitIdentity", &advice_implicit_identity },
-	{ "detachedHead", &advice_detached_head },
-	{ "setUpstreamFailure", &advice_set_upstream_failure },
-	{ "objectNameWarning", &advice_object_name_warning },
-	{ "amWorkDir", &advice_amworkdir },
-	{ "rmHints", &advice_rm_hints },
-	{ "addEmbeddedRepo", &advice_add_embedded_repo },
-	{ "ignoredHook", &advice_ignored_hook },
-	{ "waitingForEditor", &advice_waiting_for_editor },
-	{ "graftFileDeprecated", &advice_graft_file_deprecated },
-	{ "checkoutAmbiguousRemoteBranchName", &advice_checkout_ambiguous_remote_branch_name },
-	{ "submoduleAlternateErrorStrategyDie", &advice_submodule_alternate_error_strategy_die },
-	{ "addIgnoredFile", &advice_add_ignored_file },
-	{ "addEmptyPathspec", &advice_add_empty_pathspec },
-
-	/* make this an alias for backward compatibility */
-	{ "pushNonFastForward", &advice_push_update_rejected }
-};
-
-static struct {
 	const char *key;
 	int enabled;
 } advice_setting[] = {
 	[ADVICE_ADD_EMBEDDED_REPO]			= { "addEmbeddedRepo", 1 },
+	[ADVICE_ADD_EMPTY_PATHSPEC]			= { "addEmptyPathspec", 1 },
+	[ADVICE_ADD_IGNORED_FILE]			= { "addIgnoredFile", 1 },
 	[ADVICE_AM_WORK_DIR] 				= { "amWorkDir", 1 },
 	[ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] 	= { "checkoutAmbiguousRemoteBranchName", 1 },
 	[ADVICE_COMMIT_BEFORE_MERGE]			= { "commitBeforeMerge", 1 },
@@ -133,6 +65,7 @@
 	[ADVICE_RM_HINTS]				= { "rmHints", 1 },
 	[ADVICE_SEQUENCER_IN_USE]			= { "sequencerInUse", 1 },
 	[ADVICE_SET_UPSTREAM_FAILURE]			= { "setUpstreamFailure", 1 },
+	[ADVICE_SKIPPED_CHERRY_PICKS]			= { "skippedCherryPicks", 1 },
 	[ADVICE_STATUS_AHEAD_BEHIND_WARNING]		= { "statusAheadBehindWarning", 1 },
 	[ADVICE_STATUS_HINTS]				= { "statusHints", 1 },
 	[ADVICE_STATUS_U_OPTION]			= { "statusUoption", 1 },
@@ -221,13 +154,6 @@
 	if (!skip_prefix(var, "advice.", &k))
 		return 0;
 
-	for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
-		if (strcasecmp(k, advice_config[i].name))
-			continue;
-		*advice_config[i].preference = git_config_bool(var, value);
-		break;
-	}
-
 	for (i = 0; i < ARRAY_SIZE(advice_setting); i++) {
 		if (strcasecmp(k, advice_setting[i].key))
 			continue;
@@ -262,7 +188,7 @@
 		error(_("It is not possible to %s because you have unmerged files."),
 			me);
 
-	if (advice_resolve_conflict)
+	if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
 		/*
 		 * Message used both when 'git commit' fails and when
 		 * other commands doing a merge do.
@@ -281,11 +207,16 @@
 void NORETURN die_conclude_merge(void)
 {
 	error(_("You have not concluded your merge (MERGE_HEAD exists)."));
-	if (advice_resolve_conflict)
+	if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
 		advise(_("Please, commit your changes before merging."));
 	die(_("Exiting because of unfinished merge."));
 }
 
+void NORETURN die_ff_impossible(void)
+{
+	die(_("Not possible to fast-forward, aborting."));
+}
+
 void advise_on_updating_sparse_paths(struct string_list *pathspec_list)
 {
 	struct string_list_item *item;
diff --git a/advice.h b/advice.h
index bd26c38..601265f 100644
--- a/advice.h
+++ b/advice.h
@@ -5,37 +5,6 @@
 
 struct string_list;
 
-extern int advice_fetch_show_forced_updates;
-extern int advice_push_update_rejected;
-extern int advice_push_non_ff_current;
-extern int advice_push_non_ff_matching;
-extern int advice_push_already_exists;
-extern int advice_push_fetch_first;
-extern int advice_push_needs_force;
-extern int advice_push_unqualified_ref_name;
-extern int advice_push_ref_needs_update;
-extern int advice_status_hints;
-extern int advice_status_u_option;
-extern int advice_status_ahead_behind_warning;
-extern int advice_commit_before_merge;
-extern int advice_reset_quiet_warning;
-extern int advice_resolve_conflict;
-extern int advice_sequencer_in_use;
-extern int advice_implicit_identity;
-extern int advice_detached_head;
-extern int advice_set_upstream_failure;
-extern int advice_object_name_warning;
-extern int advice_amworkdir;
-extern int advice_rm_hints;
-extern int advice_add_embedded_repo;
-extern int advice_ignored_hook;
-extern int advice_waiting_for_editor;
-extern int advice_graft_file_deprecated;
-extern int advice_checkout_ambiguous_remote_branch_name;
-extern int advice_submodule_alternate_error_strategy_die;
-extern int advice_add_ignored_file;
-extern int advice_add_empty_pathspec;
-
 /*
  * To add a new advice, you need to:
  * Define a new advice_type.
@@ -45,6 +14,8 @@
  */
  enum advice_type {
 	ADVICE_ADD_EMBEDDED_REPO,
+	ADVICE_ADD_EMPTY_PATHSPEC,
+	ADVICE_ADD_IGNORED_FILE,
 	ADVICE_AM_WORK_DIR,
 	ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
 	ADVICE_COMMIT_BEFORE_MERGE,
@@ -75,6 +46,7 @@
 	ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE,
 	ADVICE_UPDATE_SPARSE_PATH,
 	ADVICE_WAITING_FOR_EDITOR,
+	ADVICE_SKIPPED_CHERRY_PICKS,
 };
 
 int git_default_advice_config(const char *var, const char *value);
@@ -90,11 +62,13 @@
 /**
  * Checks the visibility of the advice before printing.
  */
+__attribute__((format (printf, 2, 3)))
 void advise_if_enabled(enum advice_type type, const char *advice, ...);
 
 int error_resolve_conflict(const char *me);
 void NORETURN die_resolve_conflict(const char *me);
 void NORETURN die_conclude_merge(void);
+void NORETURN die_ff_impossible(void);
 void advise_on_updating_sparse_paths(struct string_list *pathspec_list);
 void detach_advice(const char *new_name);
 
diff --git a/apply.c b/apply.c
index 853d3ed..4ed4b27 100644
--- a/apply.c
+++ b/apply.c
@@ -101,9 +101,9 @@
 	state->ws_error_action = warn_on_ws_error;
 	state->ws_ignore_action = ignore_ws_none;
 	state->linenr = 1;
-	string_list_init(&state->fn_table, 0);
-	string_list_init(&state->limit_by_name, 0);
-	string_list_init(&state->symlink_changes, 0);
+	string_list_init_nodup(&state->fn_table);
+	string_list_init_nodup(&state->limit_by_name);
+	string_list_init_nodup(&state->symlink_changes);
 	strbuf_init(&state->root, 0);
 
 	git_apply_config();
@@ -1917,6 +1917,7 @@
 
 	state->linenr++;
 	buffer += llen;
+	size -= llen;
 	while (1) {
 		int byte_length, max_byte_length, newsize;
 		llen = linelen(buffer, size);
diff --git a/archive.c b/archive.c
index ff2bb54..a3bbb09 100644
--- a/archive.c
+++ b/archive.c
@@ -191,7 +191,7 @@
 	return err;
 }
 
-static void queue_directory(const unsigned char *sha1,
+static void queue_directory(const struct object_id *oid,
 		struct strbuf *base, const char *filename,
 		unsigned mode, struct archiver_context *c)
 {
@@ -203,7 +203,7 @@
 	d->mode	   = mode;
 	c->bottom  = d;
 	d->len = xsnprintf(d->path, len, "%.*s%s/", (int)base->len, base->buf, filename);
-	oidread(&d->oid, sha1);
+	oidcpy(&d->oid, oid);
 }
 
 static int write_directory(struct archiver_context *c)
@@ -250,8 +250,7 @@
 
 		if (check_attr_export_ignore(check))
 			return 0;
-		queue_directory(oid->hash, base, filename,
-				mode, c);
+		queue_directory(oid, base, filename, mode, c);
 		return READ_TREE_RECURSIVE;
 	}
 
@@ -645,7 +644,7 @@
 	args.pretty_ctx = &ctx;
 	args.repo = repo;
 	args.prefix = prefix;
-	string_list_init(&args.extra_files, 1);
+	string_list_init_dup(&args.extra_files);
 	argc = parse_archive_args(argc, argv, &ar, &args, name_hint, remote);
 	if (!startup_info->have_repository) {
 		/*
diff --git a/attr.c b/attr.c
index 9e897e4..d029e68 100644
--- a/attr.c
+++ b/attr.c
@@ -685,7 +685,7 @@
  * Callers into the attribute system assume there is a single, system-wide
  * global state where attributes are read from and when the state is flipped by
  * calling git_attr_set_direction(), the stack frames that have been
- * constructed need to be discarded so so that subsequent calls into the
+ * constructed need to be discarded so that subsequent calls into the
  * attribute system will lazily read from the right place.  Since changing
  * direction causes a global paradigm shift, it should not ever be called while
  * another thread could potentially be calling into the attribute system.
diff --git a/bisect.c b/bisect.c
index af2863d..888949f 100644
--- a/bisect.c
+++ b/bisect.c
@@ -23,7 +23,6 @@
 static struct object_id *current_bad_oid;
 
 static const char *argv_checkout[] = {"checkout", "-q", NULL, "--", NULL};
-static const char *argv_show_branch[] = {"show-branch", NULL, NULL};
 
 static const char *term_bad;
 static const char *term_good;
@@ -728,7 +727,9 @@
 static enum bisect_error bisect_checkout(const struct object_id *bisect_rev, int no_checkout)
 {
 	char bisect_rev_hex[GIT_MAX_HEXSZ + 1];
-	enum bisect_error res = BISECT_OK;
+	struct commit *commit;
+	struct pretty_print_context pp = {0};
+	struct strbuf commit_msg = STRBUF_INIT;
 
 	oid_to_hex_r(bisect_rev_hex, bisect_rev);
 	update_ref(NULL, "BISECT_EXPECTED_REV", bisect_rev, NULL, 0, UPDATE_REFS_DIE_ON_ERR);
@@ -738,24 +739,21 @@
 		update_ref(NULL, "BISECT_HEAD", bisect_rev, NULL, 0,
 			   UPDATE_REFS_DIE_ON_ERR);
 	} else {
-		res = run_command_v_opt(argv_checkout, RUN_GIT_CMD);
-		if (res)
+		if (run_command_v_opt(argv_checkout, RUN_GIT_CMD))
 			/*
 			 * Errors in `run_command()` itself, signaled by res < 0,
 			 * and errors in the child process, signaled by res > 0
-			 * can both be treated as regular BISECT_FAILURE (-1).
+			 * can both be treated as regular BISECT_FAILED (-1).
 			 */
-			return -abs(res);
+			return BISECT_FAILED;
 	}
 
-	argv_show_branch[1] = bisect_rev_hex;
-	res = run_command_v_opt(argv_show_branch, RUN_GIT_CMD);
-	/*
-	 * Errors in `run_command()` itself, signaled by res < 0,
-	 * and errors in the child process, signaled by res > 0
-	 * can both be treated as regular BISECT_FAILURE (-1).
-	 */
-	return -abs(res);
+	commit = lookup_commit_reference(the_repository, bisect_rev);
+	format_commit_message(commit, "[%H] %s%n", &commit_msg, &pp);
+	fputs(commit_msg.buf, stdout);
+	strbuf_release(&commit_msg);
+
+	return BISECT_OK;
 }
 
 static struct commit *get_commit_reference(struct repository *r,
diff --git a/branch.c b/branch.c
index 7a88a48..07a4643 100644
--- a/branch.c
+++ b/branch.c
@@ -271,7 +271,7 @@
 	real_ref = NULL;
 	if (get_oid_mb(start_name, &oid)) {
 		if (explicit_tracking) {
-			if (advice_set_upstream_failure) {
+			if (advice_enabled(ADVICE_SET_UPSTREAM_FAILURE)) {
 				error(_(upstream_missing), start_name);
 				advise(_(upstream_advice));
 				exit(1);
diff --git a/builtin/add.c b/builtin/add.c
index b773b5a..2244311 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -144,8 +144,6 @@
 {
 	int i, retval = 0;
 
-	/* TODO: audit for interaction with sparse-index. */
-	ensure_full_index(&the_index);
 	for (i = 0; i < active_nr; i++) {
 		struct cache_entry *ce = active_cache[i];
 
@@ -192,13 +190,21 @@
 	struct string_list only_match_skip_worktree = STRING_LIST_INIT_NODUP;
 	int flags = REFRESH_IGNORE_SKIP_WORKTREE |
 		    (verbose ? REFRESH_IN_PORCELAIN : REFRESH_QUIET);
+	struct pattern_list pl = { 0 };
+	int sparse_checkout_enabled = !get_sparse_checkout_patterns(&pl);
 
 	seen = xcalloc(pathspec->nr, 1);
 	refresh_index(&the_index, flags, pathspec, seen,
 		      _("Unstaged changes after refreshing the index:"));
 	for (i = 0; i < pathspec->nr; i++) {
 		if (!seen[i]) {
-			if (matches_skip_worktree(pathspec, i, &skip_worktree_seen)) {
+			const char *path = pathspec->items[i].original;
+			int dtype = DT_REG;
+
+			if (matches_skip_worktree(pathspec, i, &skip_worktree_seen) ||
+			    (sparse_checkout_enabled &&
+			     !path_matches_pattern_list(path, strlen(path), NULL,
+							&dtype, &pl, &the_index))) {
 				string_list_append(&only_match_skip_worktree,
 						   pathspec->items[i].original);
 			} else {
@@ -313,9 +319,7 @@
 	rev.diffopt.output_format = DIFF_FORMAT_PATCH;
 	rev.diffopt.use_color = 0;
 	rev.diffopt.flags.ignore_dirty_submodules = 1;
-	out = open(file, O_CREAT | O_WRONLY | O_TRUNC, 0666);
-	if (out < 0)
-		die(_("Could not open '%s' for writing."), file);
+	out = xopen(file, O_CREAT | O_WRONLY | O_TRUNC, 0666);
 	rev.diffopt.file = xfdopen(out, "w");
 	rev.diffopt.close_file = 1;
 	if (run_diff_files(&rev, 0))
@@ -419,6 +423,7 @@
 static void check_embedded_repo(const char *path)
 {
 	struct strbuf name = STRBUF_INIT;
+	static int adviced_on_embedded_repo = 0;
 
 	if (!warn_on_embedded_repo)
 		return;
@@ -430,10 +435,10 @@
 	strbuf_strip_suffix(&name, "/");
 
 	warning(_("adding embedded git repository: %s"), name.buf);
-	if (advice_add_embedded_repo) {
+	if (!adviced_on_embedded_repo &&
+	    advice_enabled(ADVICE_ADD_EMBEDDED_REPO)) {
 		advise(embedded_advice, name.buf, name.buf);
-		/* there may be multiple entries; advise only once */
-		advice_add_embedded_repo = 0;
+		adviced_on_embedded_repo = 1;
 	}
 
 	strbuf_release(&name);
@@ -447,7 +452,7 @@
 		fprintf(stderr, _(ignore_error));
 		for (i = 0; i < dir->ignored_nr; i++)
 			fprintf(stderr, "%s\n", dir->ignored[i]->name);
-		if (advice_add_ignored_file)
+		if (advice_enabled(ADVICE_ADD_IGNORED_FILE))
 			advise(_("Use -f if you really want to add them.\n"
 				"Turn this message off by running\n"
 				"\"git config advice.addIgnoredFile false\""));
@@ -470,7 +475,7 @@
 {
 	int exit_status = 0;
 	struct pathspec pathspec;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	int flags;
 	int add_new_files;
 	int require_pathspec;
@@ -528,6 +533,9 @@
 	add_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;
 	require_pathspec = !(take_worktree_changes || (0 < addremove_explicit));
 
+	prepare_repo_settings(the_repository);
+	the_repository->settings.command_requires_full_index = 0;
+
 	hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR);
 
 	/*
@@ -553,7 +561,7 @@
 
 	if (require_pathspec && pathspec.nr == 0) {
 		fprintf(stderr, _("Nothing specified, nothing added.\n"));
-		if (advice_add_empty_pathspec)
+		if (advice_enabled(ADVICE_ADD_EMPTY_PATHSPEC))
 			advise( _("Maybe you wanted to say 'git add .'?\n"
 				"Turn this message off by running\n"
 				"\"git config advice.addEmptyPathspec false\""));
@@ -577,7 +585,6 @@
 	die_in_unpopulated_submodule(&the_index, prefix);
 	die_path_inside_submodule(&the_index, &pathspec);
 
-	dir_init(&dir);
 	if (add_new_files) {
 		int baselen;
 
diff --git a/builtin/am.c b/builtin/am.c
index 0b2d886..ff7dd33 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -210,6 +210,7 @@
  * If state->quiet is false, calls fprintf(fp, fmt, ...), and appends a newline
  * at the end.
  */
+__attribute__((format (printf, 3, 4)))
 static void say(const struct am_state *state, FILE *fp, const char *fmt, ...)
 {
 	va_list ap;
@@ -1819,7 +1820,7 @@
 			printf_ln(_("Patch failed at %s %.*s"), msgnum(state),
 				linelen(state->msg), state->msg);
 
-			if (advice_amworkdir)
+			if (advice_enabled(ADVICE_AM_WORK_DIR))
 				advise(_("Use 'git am --show-current-patch=diff' to see the failed patch"));
 
 			die_user_resolve(state);
diff --git a/builtin/archive.c b/builtin/archive.c
index 45d1166..7176b04 100644
--- a/builtin/archive.c
+++ b/builtin/archive.c
@@ -12,9 +12,7 @@
 
 static void create_output_file(const char *output_file)
 {
-	int output_fd = open(output_file, O_CREAT | O_WRONLY | O_TRUNC, 0666);
-	if (output_fd < 0)
-		die_errno(_("could not create archive file '%s'"), output_file);
+	int output_fd = xopen(output_file, O_CREAT | O_WRONLY | O_TRUNC, 0666);
 	if (output_fd != 1) {
 		if (dup2(output_fd, 1) < 0)
 			die_errno(_("could not redirect output"));
diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index 9d9540a..f184eae 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -117,6 +117,7 @@
 	return fclose(fp);
 }
 
+__attribute__((format (printf, 2, 3)))
 static int write_to_file(const char *path, const char *format, ...)
 {
 	int res;
@@ -129,6 +130,7 @@
 	return res;
 }
 
+__attribute__((format (printf, 2, 3)))
 static int append_to_file(const char *path, const char *format, ...)
 {
 	int res;
diff --git a/builtin/branch.c b/builtin/branch.c
index b23b1d1..03c7b72 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -168,7 +168,7 @@
 			       int kinds, int force)
 {
 	struct commit *rev = lookup_commit_reference(the_repository, oid);
-	if (!rev) {
+	if (!force && !rev) {
 		error(_("Couldn't look up commit object for '%s'"), refname);
 		return -1;
 	}
diff --git a/builtin/bugreport.c b/builtin/bugreport.c
index 9915a58..06ed10d 100644
--- a/builtin/bugreport.c
+++ b/builtin/bugreport.c
@@ -171,10 +171,7 @@
 	get_populated_hooks(&buffer, !startup_info->have_repository);
 
 	/* fopen doesn't offer us an O_EXCL alternative, except with glibc. */
-	report = open(report_path.buf, O_CREAT | O_EXCL | O_WRONLY, 0666);
-
-	if (report < 0)
-		die(_("couldn't create a new file at '%s'"), report_path.buf);
+	report = xopen(report_path.buf, O_CREAT | O_EXCL | O_WRONLY, 0666);
 
 	if (write_in_full(report, buffer.buf, buffer.len) < 0)
 		die_errno(_("unable to write to %s"), report_path.buf);
diff --git a/builtin/bundle.c b/builtin/bundle.c
index ea69481..053a51b 100644
--- a/builtin/bundle.c
+++ b/builtin/bundle.c
@@ -46,7 +46,7 @@
 		const char* prefix,
 		const char * const usagestr[],
 		const struct option options[],
-		const char **bundle_file) {
+		char **bundle_file) {
 	int newargc;
 	newargc = parse_options(argc, argv, NULL, options, usagestr,
 			     PARSE_OPT_STOP_AT_NON_OPTION);
@@ -61,7 +61,7 @@
 	int progress = isatty(STDERR_FILENO);
 	struct strvec pack_opts;
 	int version = -1;
-
+	int ret;
 	struct option options[] = {
 		OPT_SET_INT('q', "quiet", &progress,
 			    N_("do not show progress meter"), 0),
@@ -76,7 +76,7 @@
 			    N_("specify bundle format version")),
 		OPT_END()
 	};
-	const char* bundle_file;
+	char *bundle_file;
 
 	argc = parse_options_cmd_bundle(argc, argv, prefix,
 			builtin_bundle_create_usage, options, &bundle_file);
@@ -94,75 +94,95 @@
 
 	if (!startup_info->have_repository)
 		die(_("Need a repository to create a bundle."));
-	return !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts, version);
+	ret = !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts, version);
+	free(bundle_file);
+	return ret;
 }
 
 static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) {
-	struct bundle_header header;
+	struct bundle_header header = BUNDLE_HEADER_INIT;
 	int bundle_fd = -1;
 	int quiet = 0;
-
+	int ret;
 	struct option options[] = {
 		OPT_BOOL('q', "quiet", &quiet,
 			    N_("do not show bundle details")),
 		OPT_END()
 	};
-	const char* bundle_file;
+	char *bundle_file;
 
 	argc = parse_options_cmd_bundle(argc, argv, prefix,
 			builtin_bundle_verify_usage, options, &bundle_file);
 	/* bundle internals use argv[1] as further parameters */
 
-	memset(&header, 0, sizeof(header));
-	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0)
-		return 1;
+	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) {
+		ret = 1;
+		goto cleanup;
+	}
 	close(bundle_fd);
-	if (verify_bundle(the_repository, &header, !quiet))
-		return 1;
+	if (verify_bundle(the_repository, &header, !quiet)) {
+		ret = 1;
+		goto cleanup;
+	}
+
 	fprintf(stderr, _("%s is okay\n"), bundle_file);
-	return 0;
+	ret = 0;
+cleanup:
+	free(bundle_file);
+	bundle_header_release(&header);
+	return ret;
 }
 
 static int cmd_bundle_list_heads(int argc, const char **argv, const char *prefix) {
-	struct bundle_header header;
+	struct bundle_header header = BUNDLE_HEADER_INIT;
 	int bundle_fd = -1;
-
+	int ret;
 	struct option options[] = {
 		OPT_END()
 	};
-	const char* bundle_file;
+	char *bundle_file;
 
 	argc = parse_options_cmd_bundle(argc, argv, prefix,
 			builtin_bundle_list_heads_usage, options, &bundle_file);
 	/* bundle internals use argv[1] as further parameters */
 
-	memset(&header, 0, sizeof(header));
-	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0)
-		return 1;
+	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) {
+		ret = 1;
+		goto cleanup;
+	}
 	close(bundle_fd);
-	return !!list_bundle_refs(&header, argc, argv);
+	ret = !!list_bundle_refs(&header, argc, argv);
+cleanup:
+	free(bundle_file);
+	bundle_header_release(&header);
+	return ret;
 }
 
 static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix) {
-	struct bundle_header header;
+	struct bundle_header header = BUNDLE_HEADER_INIT;
 	int bundle_fd = -1;
-
+	int ret;
 	struct option options[] = {
 		OPT_END()
 	};
-	const char* bundle_file;
+	char *bundle_file;
 
 	argc = parse_options_cmd_bundle(argc, argv, prefix,
 			builtin_bundle_unbundle_usage, options, &bundle_file);
 	/* bundle internals use argv[1] as further parameters */
 
-	memset(&header, 0, sizeof(header));
-	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0)
-		return 1;
+	if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) {
+		ret = 1;
+		goto cleanup;
+	}
 	if (!startup_info->have_repository)
 		die(_("Need a repository to unbundle."));
-	return !!unbundle(the_repository, &header, bundle_fd, 0) ||
+	ret = !!unbundle(the_repository, &header, bundle_fd, 0) ||
 		list_bundle_refs(&header, argc, argv);
+	bundle_header_release(&header);
+cleanup:
+	free(bundle_file);
+	return ret;
 }
 
 int cmd_bundle(int argc, const char **argv, const char *prefix)
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 5ebf133..243fe68 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -512,12 +512,6 @@
 	if (opt->cmdmode)
 		data.split_on_whitespace = 1;
 
-	if (opt->all_objects) {
-		struct object_info empty = OBJECT_INFO_INIT;
-		if (!memcmp(&data.info, &empty, sizeof(empty)))
-			data.skip_object_info = 1;
-	}
-
 	/*
 	 * If we are printing out the object, then always fill in the type,
 	 * since we will want to decide whether or not to stream.
@@ -527,6 +521,10 @@
 
 	if (opt->all_objects) {
 		struct object_cb_data cb;
+		struct object_info empty = OBJECT_INFO_INIT;
+
+		if (!memcmp(&data.info, &empty, sizeof(empty)))
+			data.skip_object_info = 1;
 
 		if (has_promisor_remote())
 			warning("This repository uses promisor remotes. Some objects may not be loaded.");
diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c
index 8123455..2191256 100644
--- a/builtin/check-ignore.c
+++ b/builtin/check-ignore.c
@@ -153,7 +153,7 @@
 int cmd_check_ignore(int argc, const char **argv, const char *prefix)
 {
 	int num_ignored;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 
 	git_config(git_default_config, NULL);
 
@@ -182,7 +182,6 @@
 	if (!no_index && read_cache() < 0)
 		die(_("index file corrupt"));
 
-	dir_init(&dir);
 	setup_standard_excludes(&dir);
 
 	if (stdin_paths) {
diff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c
index 289a9b8..fb9fd13 100644
--- a/builtin/checkout--worker.c
+++ b/builtin/checkout--worker.c
@@ -53,7 +53,7 @@
 
 static void report_result(struct parallel_checkout_item *pc_item)
 {
-	struct pc_item_result res;
+	struct pc_item_result res = { 0 };
 	size_t size;
 
 	res.id = pc_item->id;
diff --git a/builtin/checkout.c b/builtin/checkout.c
index f4cd774..8c69dcd 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -378,9 +378,6 @@
 	if (pc_workers > 1)
 		init_parallel_checkout();
 
-	/* TODO: audit for interaction with sparse-index. */
-	ensure_full_index(&the_index);
-
 	for (pos = 0; pos < active_nr; pos++) {
 		struct cache_entry *ce = active_cache[pos];
 		if (ce->ce_flags & CE_MATCHED) {
@@ -407,7 +404,7 @@
 	mem_pool_discard(&ce_mem_pool, should_validate_cache_entries());
 	remove_marked_cache_entries(&the_index, 1);
 	remove_scheduled_dirs();
-	errs |= finish_delayed_checkout(&state, &nr_checkouts);
+	errs |= finish_delayed_checkout(&state, &nr_checkouts, opts->show_progress);
 
 	if (opts->count_checkout_paths) {
 		if (nr_unmerged)
@@ -530,8 +527,6 @@
 	 * Make sure all pathspecs participated in locating the paths
 	 * to be checked out.
 	 */
-	/* TODO: audit for interaction with sparse-index. */
-	ensure_full_index(&the_index);
 	for (pos = 0; pos < active_nr; pos++)
 		if (opts->overlay_mode)
 			mark_ce_for_checkout_overlay(active_cache[pos],
@@ -923,7 +918,7 @@
 			   REF_NO_DEREF, UPDATE_REFS_DIE_ON_ERR);
 		if (!opts->quiet) {
 			if (old_branch_info->path &&
-			    advice_detached_head && !opts->force_detach)
+			    advice_enabled(ADVICE_DETACHED_HEAD) && !opts->force_detach)
 				detach_advice(new_branch_info->name);
 			describe_detached_head(_("HEAD is now at"), new_branch_info->commit);
 		}
@@ -1016,7 +1011,7 @@
 		sb.buf);
 	strbuf_release(&sb);
 
-	if (advice_detached_head)
+	if (advice_enabled(ADVICE_DETACHED_HEAD))
 		fprintf(stderr,
 			Q_(
 			/* The singular version */
@@ -1187,7 +1182,7 @@
 	}
 
 	if (!remote && num_matches > 1) {
-	    if (advice_checkout_ambiguous_remote_branch_name) {
+	    if (advice_enabled(ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME)) {
 		    advise(_("If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 			     "you can do so by fully qualifying the name with the --track option:\n"
 			     "\n"
@@ -1593,6 +1588,9 @@
 
 	git_config(git_checkout_config, opts);
 
+	prepare_repo_settings(the_repository);
+	the_repository->settings.command_requires_full_index = 0;
+
 	opts->track = BRANCH_TRACK_UNSPECIFIED;
 
 	if (!opts->accept_pathspec && !opts->accept_ref)
diff --git a/builtin/clean.c b/builtin/clean.c
index 4944cf44..98a2860 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -641,7 +641,7 @@
 
 static int filter_by_patterns_cmd(void)
 {
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	struct strbuf confirm = STRBUF_INIT;
 	struct strbuf **ignore_list;
 	struct string_list_item *item;
@@ -665,7 +665,6 @@
 		if (!confirm.len)
 			break;
 
-		dir_init(&dir);
 		pl = add_pattern_list(&dir, EXC_CMDL, "manual exclude");
 		ignore_list = strbuf_split_max(&confirm, ' ', 0);
 
@@ -890,7 +889,7 @@
 	int ignored_only = 0, config_set = 0, errors = 0, gone = 1;
 	int rm_flags = REMOVE_DIR_KEEP_NESTED_GIT;
 	struct strbuf abs_path = STRBUF_INIT;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	struct pathspec pathspec;
 	struct strbuf buf = STRBUF_INIT;
 	struct string_list exclude_list = STRING_LIST_INIT_NODUP;
@@ -921,7 +920,6 @@
 	argc = parse_options(argc, argv, prefix, options, builtin_clean_usage,
 			     0);
 
-	dir_init(&dir);
 	if (!interactive && !dry_run && !force) {
 		if (config_set)
 			die(_("clean.requireForce set to true and neither -i, -n, nor -f given; "
diff --git a/builtin/clone.c b/builtin/clone.c
index 66fe666..b93bcd4 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -786,7 +786,7 @@
 		return 0;
 	}
 	if (!strcmp(head, "HEAD")) {
-		if (advice_detached_head)
+		if (advice_enabled(ADVICE_DETACHED_HEAD))
 			detach_advice(oid_to_hex(&oid));
 		FREE_AND_NULL(head);
 	} else {
@@ -1114,6 +1114,7 @@
 	if (option_recurse_submodules.nr > 0) {
 		struct string_list_item *item;
 		struct strbuf sb = STRBUF_INIT;
+		int val;
 
 		/* remove duplicates */
 		string_list_sort(&option_recurse_submodules);
@@ -1130,6 +1131,10 @@
 					   strbuf_detach(&sb, NULL));
 		}
 
+		if (!git_config_get_bool("submodule.stickyRecursiveClone", &val) &&
+		    val)
+			string_list_append(&option_config, "submodule.recurse=true");
+
 		if (option_required_reference.nr &&
 		    option_optional_reference.nr)
 			die(_("clone --recursive is not compatible with "
diff --git a/builtin/column.c b/builtin/column.c
index 40d4b3b..158fdf5 100644
--- a/builtin/column.c
+++ b/builtin/column.c
@@ -29,7 +29,7 @@
 		OPT_INTEGER(0, "raw-mode", &colopts, N_("layout to use")),
 		OPT_INTEGER(0, "width", &copts.width, N_("maximum width")),
 		OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("padding space on left border")),
-		OPT_INTEGER(0, "nl", &copts.nl, N_("padding space on right border")),
+		OPT_STRING(0, "nl", &copts.nl, N_("string"), N_("padding space on right border")),
 		OPT_INTEGER(0, "padding", &copts.padding, N_("padding space between columns")),
 		OPT_END()
 	};
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index cd86315..21fc6e9 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -9,26 +9,29 @@
 #include "progress.h"
 #include "tag.h"
 
+#define BUILTIN_COMMIT_GRAPH_VERIFY_USAGE \
+	N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]")
+
+#define BUILTIN_COMMIT_GRAPH_WRITE_USAGE \
+	N_("git commit-graph write [--object-dir <objdir>] [--append] " \
+	   "[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] " \
+	   "[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] " \
+	   "<split options>")
+
+static const char * builtin_commit_graph_verify_usage[] = {
+	BUILTIN_COMMIT_GRAPH_VERIFY_USAGE,
+	NULL
+};
+
+static const char * builtin_commit_graph_write_usage[] = {
+	BUILTIN_COMMIT_GRAPH_WRITE_USAGE,
+	NULL
+};
+
 static char const * const builtin_commit_graph_usage[] = {
-	N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"),
-	N_("git commit-graph write [--object-dir <objdir>] [--append] "
-	   "[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] "
-	   "[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] "
-	   "<split options>"),
-	NULL
-};
-
-static const char * const builtin_commit_graph_verify_usage[] = {
-	N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"),
-	NULL
-};
-
-static const char * const builtin_commit_graph_write_usage[] = {
-	N_("git commit-graph write [--object-dir <objdir>] [--append] "
-	   "[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] "
-	   "[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress] "
-	   "<split options>"),
-	NULL
+	BUILTIN_COMMIT_GRAPH_VERIFY_USAGE,
+	BUILTIN_COMMIT_GRAPH_WRITE_USAGE,
+	NULL,
 };
 
 static struct opts_commit_graph {
@@ -43,6 +46,20 @@
 	int enable_changed_paths;
 } opts;
 
+static struct option common_opts[] = {
+	OPT_STRING(0, "object-dir", &opts.obj_dir,
+		   N_("dir"),
+		   N_("the object directory to store the graph")),
+	OPT_BOOL(0, "progress", &opts.progress,
+		 N_("force progress reporting")),
+	OPT_END()
+};
+
+static struct option *add_common_options(struct option *to)
+{
+	return parse_options_concat(common_opts, to);
+}
+
 static struct object_directory *find_odb(struct repository *r,
 					 const char *obj_dir)
 {
@@ -76,21 +93,20 @@
 	int flags = 0;
 
 	static struct option builtin_commit_graph_verify_options[] = {
-		OPT_STRING(0, "object-dir", &opts.obj_dir,
-			   N_("dir"),
-			   N_("the object directory to store the graph")),
 		OPT_BOOL(0, "shallow", &opts.shallow,
 			 N_("if the commit-graph is split, only verify the tip file")),
-		OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")),
 		OPT_END(),
 	};
+	struct option *options = add_common_options(builtin_commit_graph_verify_options);
 
 	trace2_cmd_mode("verify");
 
 	opts.progress = isatty(2);
 	argc = parse_options(argc, argv, NULL,
-			     builtin_commit_graph_verify_options,
+			     options,
 			     builtin_commit_graph_verify_usage, 0);
+	if (argc)
+		usage_with_options(builtin_commit_graph_verify_usage, options);
 
 	if (!opts.obj_dir)
 		opts.obj_dir = get_object_directory();
@@ -106,6 +122,7 @@
 		die_errno(_("Could not open commit-graph '%s'"), graph_name);
 
 	FREE_AND_NULL(graph_name);
+	FREE_AND_NULL(options);
 
 	if (open_ok)
 		graph = load_commit_graph_one_fd_st(the_repository, fd, &st, odb);
@@ -206,9 +223,6 @@
 	struct progress *progress = NULL;
 
 	static struct option builtin_commit_graph_write_options[] = {
-		OPT_STRING(0, "object-dir", &opts.obj_dir,
-			N_("dir"),
-			N_("the object directory to store the graph")),
 		OPT_BOOL(0, "reachable", &opts.reachable,
 			N_("start walk at all refs")),
 		OPT_BOOL(0, "stdin-packs", &opts.stdin_packs,
@@ -219,7 +233,6 @@
 			N_("include all commits already in the commit-graph file")),
 		OPT_BOOL(0, "changed-paths", &opts.enable_changed_paths,
 			N_("enable computation for changed paths")),
-		OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")),
 		OPT_CALLBACK_F(0, "split", &write_opts.split_flags, NULL,
 			N_("allow writing an incremental commit-graph file"),
 			PARSE_OPT_OPTARG | PARSE_OPT_NONEG,
@@ -235,6 +248,7 @@
 			0, write_option_max_new_filters),
 		OPT_END(),
 	};
+	struct option *options = add_common_options(builtin_commit_graph_write_options);
 
 	opts.progress = isatty(2);
 	opts.enable_changed_paths = -1;
@@ -248,8 +262,10 @@
 	git_config(git_commit_graph_write_config, &opts);
 
 	argc = parse_options(argc, argv, NULL,
-			     builtin_commit_graph_write_options,
+			     options,
 			     builtin_commit_graph_write_usage, 0);
+	if (argc)
+		usage_with_options(builtin_commit_graph_write_usage, options);
 
 	if (opts.reachable + opts.stdin_packs + opts.stdin_commits > 1)
 		die(_("use at most one of --reachable, --stdin-commits, or --stdin-packs"));
@@ -304,6 +320,7 @@
 		result = 1;
 
 cleanup:
+	FREE_AND_NULL(options);
 	string_list_clear(&pack_indexes, 0);
 	strbuf_release(&buf);
 	return result;
@@ -311,32 +328,25 @@
 
 int cmd_commit_graph(int argc, const char **argv, const char *prefix)
 {
-	static struct option builtin_commit_graph_options[] = {
-		OPT_STRING(0, "object-dir", &opts.obj_dir,
-			N_("dir"),
-			N_("the object directory to store the graph")),
-		OPT_END(),
-	};
-
-	if (argc == 2 && !strcmp(argv[1], "-h"))
-		usage_with_options(builtin_commit_graph_usage,
-				   builtin_commit_graph_options);
+	struct option *builtin_commit_graph_options = common_opts;
 
 	git_config(git_default_config, NULL);
 	argc = parse_options(argc, argv, prefix,
 			     builtin_commit_graph_options,
 			     builtin_commit_graph_usage,
 			     PARSE_OPT_STOP_AT_NON_OPTION);
+	if (!argc)
+		goto usage;
 
 	save_commit_buffer = 0;
 
-	if (argc > 0) {
-		if (!strcmp(argv[0], "verify"))
-			return graph_verify(argc, argv);
-		if (!strcmp(argv[0], "write"))
-			return graph_write(argc, argv);
-	}
+	if (!strcmp(argv[0], "verify"))
+		return graph_verify(argc, argv);
+	else if (argc && !strcmp(argv[0], "write"))
+		return graph_write(argc, argv);
 
+	error(_("unrecognized subcommand: %s"), argv[0]);
+usage:
 	usage_with_options(builtin_commit_graph_usage,
 			   builtin_commit_graph_options);
 }
diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c
index 1031b9a..63ea322 100644
--- a/builtin/commit-tree.c
+++ b/builtin/commit-tree.c
@@ -88,9 +88,7 @@
 	if (!strcmp(arg, "-"))
 		fd = 0;
 	else {
-		fd = open(arg, O_RDONLY);
-		if (fd < 0)
-			die_errno(_("git commit-tree: failed to open '%s'"), arg);
+		fd = xopen(arg, O_RDONLY);
 	}
 	if (strbuf_read(buf, fd, 0) < 0)
 		die_errno(_("git commit-tree: failed to read '%s'"), arg);
diff --git a/builtin/commit.c b/builtin/commit.c
index 190d215..e7320f6 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -203,7 +203,7 @@
 	init_diff_ui_defaults();
 	git_config(fn, s);
 	determine_whence(s);
-	s->hints = advice_status_hints; /* must come after git_config() */
+	s->hints = advice_enabled(ADVICE_STATUS_HINTS); /* must come after git_config() */
 }
 
 static void rollback_index_files(void)
@@ -889,7 +889,22 @@
 		int ident_shown = 0;
 		int saved_color_setting;
 		struct ident_split ci, ai;
-
+		const char *hint_cleanup_all = allow_empty_message ?
+			_("Please enter the commit message for your changes."
+			  " Lines starting\nwith '%c' will be ignored.\n") :
+			_("Please enter the commit message for your changes."
+			  " Lines starting\nwith '%c' will be ignored, and an empty"
+			  " message aborts the commit.\n");
+		const char *hint_cleanup_space = allow_empty_message ?
+			_("Please enter the commit message for your changes."
+			  " Lines starting\n"
+			  "with '%c' will be kept; you may remove them"
+			  " yourself if you want to.\n") :
+			_("Please enter the commit message for your changes."
+			  " Lines starting\n"
+			  "with '%c' will be kept; you may remove them"
+			  " yourself if you want to.\n"
+			  "An empty message aborts the commit.\n");
 		if (whence != FROM_COMMIT) {
 			if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
 				!merge_contains_scissors)
@@ -911,20 +926,12 @@
 
 		fprintf(s->fp, "\n");
 		if (cleanup_mode == COMMIT_MSG_CLEANUP_ALL)
-			status_printf(s, GIT_COLOR_NORMAL,
-				_("Please enter the commit message for your changes."
-				  " Lines starting\nwith '%c' will be ignored, and an empty"
-				  " message aborts the commit.\n"), comment_line_char);
+			status_printf(s, GIT_COLOR_NORMAL, hint_cleanup_all, comment_line_char);
 		else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
 			if (whence == FROM_COMMIT && !merge_contains_scissors)
 				wt_status_add_cut_line(s->fp);
 		} else /* COMMIT_MSG_CLEANUP_SPACE, that is. */
-			status_printf(s, GIT_COLOR_NORMAL,
-				_("Please enter the commit message for your changes."
-				  " Lines starting\n"
-				  "with '%c' will be kept; you may remove them"
-				  " yourself if you want to.\n"
-				  "An empty message aborts the commit.\n"), comment_line_char);
+			status_printf(s, GIT_COLOR_NORMAL, hint_cleanup_space, comment_line_char);
 
 		/*
 		 * These should never fail because they come from our own
@@ -1026,7 +1033,7 @@
 	 */
 	if (!committable && whence != FROM_MERGE && !allow_empty &&
 	    !(amend && is_a_merge(current_head))) {
-		s->hints = advice_status_hints;
+		s->hints = advice_enabled(ADVICE_STATUS_HINTS);
 		s->display_comment_prefix = old_display_comment_prefix;
 		run_status(stdout, index_file, prefix, 0, s);
 		if (amend)
@@ -1246,8 +1253,6 @@
 
 	if (logfile || have_option_m || use_message)
 		use_editor = 0;
-	if (0 <= edit_flag)
-		use_editor = edit_flag;
 
 	/* Sanity check options */
 	if (amend && !current_head)
@@ -1337,6 +1342,9 @@
 		}
 	}
 
+	if (0 <= edit_flag)
+		use_editor = edit_flag;
+
 	cleanup_mode = get_cleanup_mode(cleanup_arg, use_editor);
 
 	handle_untracked_files_arg(s);
@@ -1510,6 +1518,9 @@
 	if (argc == 2 && !strcmp(argv[1], "-h"))
 		usage_with_options(builtin_status_usage, builtin_status_options);
 
+	prepare_repo_settings(the_repository);
+	the_repository->settings.command_requires_full_index = 0;
+
 	status_init_config(&s, git_status_config);
 	argc = parse_options(argc, argv, prefix,
 			     builtin_status_options,
@@ -1679,6 +1690,9 @@
 	if (argc == 2 && !strcmp(argv[1], "-h"))
 		usage_with_options(builtin_commit_usage, builtin_commit_options);
 
+	prepare_repo_settings(the_repository);
+	the_repository->settings.command_requires_full_index = 0;
+
 	status_init_config(&s, git_commit_config);
 	s.commit_template = 1;
 	status_format = STATUS_FORMAT_NONE; /* Ignore status.short */
diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c
index 76a6ba3..e8a7415 100644
--- a/builtin/credential-cache.c
+++ b/builtin/credential-cache.c
@@ -90,7 +90,7 @@
 {
 	struct stat sb;
 	char *old_dir, *socket;
-	old_dir = expand_user_path("~/.git-credential-cache", 0);
+	old_dir = interpolate_path("~/.git-credential-cache", 0);
 	if (old_dir && !stat(old_dir, &sb) && S_ISDIR(sb.st_mode))
 		socket = xstrfmt("%s/socket", old_dir);
 	else
diff --git a/builtin/credential-store.c b/builtin/credential-store.c
index ae3c1ba..62a4f3c 100644
--- a/builtin/credential-store.c
+++ b/builtin/credential-store.c
@@ -173,7 +173,7 @@
 	if (file) {
 		string_list_append(&fns, file);
 	} else {
-		if ((file = expand_user_path("~/.git-credentials", 0)))
+		if ((file = interpolate_path("~/.git-credentials", 0)))
 			string_list_append_nodup(&fns, file);
 		file = xdg_config_home("credentials");
 		if (file)
diff --git a/builtin/diff.c b/builtin/diff.c
index 2d87c37..dd8ce68 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -26,8 +26,8 @@
 
 static const char builtin_diff_usage[] =
 "git diff [<options>] [<commit>] [--] [<path>...]\n"
-"   or: git diff [<options>] --cached [<commit>] [--] [<path>...]\n"
-"   or: git diff [<options>] <commit> [--merge-base] [<commit>...] <commit> [--] [<path>...]\n"
+"   or: git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]\n"
+"   or: git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]\n"
 "   or: git diff [<options>] <commit>...<commit>] [--] [<path>...]\n"
 "   or: git diff [<options>] <blob> <blob>]\n"
 "   or: git diff [<options>] --no-index [--] <path> <path>]\n"
diff --git a/builtin/difftool.c b/builtin/difftool.c
index 89334b7..6a9242a 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -675,7 +675,7 @@
 		"GIT_PAGER=", "GIT_EXTERNAL_DIFF=git-difftool--helper", NULL,
 		NULL
 	};
-	int ret = 0, i;
+	int i;
 
 	if (prompt > 0)
 		env[2] = "GIT_DIFFTOOL_PROMPT=true";
@@ -686,8 +686,7 @@
 	strvec_push(&args, "diff");
 	for (i = 0; i < argc; i++)
 		strvec_push(&args, argv[i]);
-	ret = run_command_v_opt_cd_env(args.v, RUN_GIT_CMD, prefix, env);
-	exit(ret);
+	return run_command_v_opt_cd_env(args.v, RUN_GIT_CMD, prefix, env);
 }
 
 int cmd_difftool(int argc, const char **argv, const char *prefix)
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 3c20f16..95e8e89 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -821,6 +821,7 @@
 			static struct hashmap tags;
 			message = anonymize_str(&tags, anonymize_tag,
 						message, message_size, NULL);
+			message_size = strlen(message);
 		}
 	}
 
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 9191620..38fab03 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -712,7 +712,7 @@
 	int max, rlen, llen, len;
 
 	/* uptodate lines are only shown on high verbosity level */
-	if (!verbosity && oideq(&ref->peer_ref->old_oid, &ref->old_oid))
+	if (verbosity <= 0 && oideq(&ref->peer_ref->old_oid, &ref->old_oid))
 		return;
 
 	max    = term_columns();
@@ -748,6 +748,9 @@
 	struct ref *rm;
 	const char *format = "full";
 
+	if (verbosity < 0)
+		return;
+
 	git_config_get_string_tmp("fetch.output", &format);
 	if (!strcasecmp(format, "full"))
 		compact_format = 0;
@@ -827,7 +830,12 @@
 			   const char *remote, const char *local,
 			   int summary_width)
 {
-	int width = (summary_width + strlen(summary) - gettext_width(summary));
+	int width;
+
+	if (verbosity < 0)
+		return;
+
+	width = (summary_width + strlen(summary) - gettext_width(summary));
 
 	strbuf_addf(display, "%c %-*s ", code, width, summary);
 	if (!compact_format)
@@ -1202,13 +1210,12 @@
 					       "FETCH_HEAD", summary_width);
 			}
 			if (note.len) {
-				if (verbosity >= 0 && !shown_url) {
+				if (!shown_url) {
 					fprintf(stderr, _("From %.*s\n"),
 							url_len, url);
 					shown_url = 1;
 				}
-				if (verbosity >= 0)
-					fprintf(stderr, " %s\n", note.buf);
+				fprintf(stderr, " %s\n", note.buf);
 			}
 		}
 	}
@@ -1229,7 +1236,7 @@
 		      " 'git remote prune %s' to remove any old, conflicting "
 		      "branches"), remote_name);
 
-	if (advice_fetch_show_forced_updates) {
+	if (advice_enabled(ADVICE_FETCH_SHOW_FORCED_UPDATES)) {
 		if (!fetch_show_forced_updates) {
 			warning(_(warn_show_forced_updates));
 		} else if (forced_updates_ms > FORCED_UPDATES_DELAY_WARNING_IN_MS) {
@@ -1428,7 +1435,9 @@
 		if (!has_glob_specials(s)) {
 			struct object_id oid;
 			if (get_oid(s, &oid))
-				die("%s is not a valid object", s);
+				die(_("%s is not a valid object"), s);
+			if (!has_object(the_repository, &oid, 0))
+				die(_("the object %s does not exist"), s);
 			oid_array_append(oids, &oid);
 			continue;
 		}
@@ -1990,6 +1999,9 @@
 		fetch_config_from_gitmodules(sfjc, rs);
 	}
 
+	if (negotiate_only && !negotiation_tip.nr)
+		die(_("--negotiate-only needs one or more --negotiate-tip=*"));
+
 	if (deepen_relative) {
 		if (deepen_relative < 0)
 			die(_("Negative depth in --deepen is not supported"));
diff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c
index 52be64a..fd86e5a 100644
--- a/builtin/for-each-repo.c
+++ b/builtin/for-each-repo.c
@@ -10,18 +10,16 @@
 	NULL
 };
 
-static int run_command_on_repo(const char *path,
-			       void *cbdata)
+static int run_command_on_repo(const char *path, int argc, const char ** argv)
 {
 	int i;
 	struct child_process child = CHILD_PROCESS_INIT;
-	struct strvec *args = (struct strvec *)cbdata;
 
 	child.git_cmd = 1;
 	strvec_pushl(&child.args, "-C", path, NULL);
 
-	for (i = 0; i < args->nr; i++)
-		strvec_push(&child.args, args->v[i]);
+	for (i = 0; i < argc; i++)
+		strvec_push(&child.args, argv[i]);
 
 	return run_command(&child);
 }
@@ -31,7 +29,6 @@
 	static const char *config_key = NULL;
 	int i, result = 0;
 	const struct string_list *values;
-	struct strvec args = STRVEC_INIT;
 
 	const struct option options[] = {
 		OPT_STRING(0, "config", &config_key, N_("config"),
@@ -45,9 +42,6 @@
 	if (!config_key)
 		die(_("missing --config=<config>"));
 
-	for (i = 0; i < argc; i++)
-		strvec_push(&args, argv[i]);
-
 	values = repo_config_get_value_multi(the_repository,
 					     config_key);
 
@@ -59,7 +53,7 @@
 		return 0;
 
 	for (i = 0; !result && i < values->nr; i++)
-		result = run_command_on_repo(values->items[i].string, &args);
+		result = run_command_on_repo(values->items[i].string, argc, argv);
 
 	return result;
 }
diff --git a/builtin/gc.c b/builtin/gc.c
index f05d2f0..43c3602 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -502,7 +502,7 @@
 		 */
 		warning(_("The last gc run reported the following. "
 			       "Please correct the root cause\n"
-			       "and remove %s.\n"
+			       "and remove %s\n"
 			       "Automatic cleanup will not be performed "
 			       "until the file is removed.\n\n"
 			       "%s"),
@@ -1542,7 +1542,7 @@
 	struct strbuf filename = STRBUF_INIT;
 	strbuf_addf(&filename, "~/Library/LaunchAgents/%s.plist", name);
 
-	expanded = expand_user_path(filename.buf, 1);
+	expanded = interpolate_path(filename.buf, 1);
 	if (!expanded)
 		die(_("failed to expand path '%s'"), filename.buf);
 
@@ -1600,18 +1600,40 @@
 		launchctl_remove_plist(SCHEDULE_WEEKLY, cmd);
 }
 
+static int launchctl_list_contains_plist(const char *name, const char *cmd)
+{
+	int result;
+	struct child_process child = CHILD_PROCESS_INIT;
+	char *uid = launchctl_get_uid();
+
+	strvec_split(&child.args, cmd);
+	strvec_pushl(&child.args, "list", name, NULL);
+
+	child.no_stderr = 1;
+	child.no_stdout = 1;
+
+	if (start_command(&child))
+		die(_("failed to start launchctl"));
+
+	result = finish_command(&child);
+
+	free(uid);
+
+	/* Returns failure if 'name' doesn't exist. */
+	return !result;
+}
+
 static int launchctl_schedule_plist(const char *exec_path, enum schedule_priority schedule, const char *cmd)
 {
-	FILE *plist;
-	int i;
+	int i, fd;
 	const char *preamble, *repeat;
 	const char *frequency = get_frequency(schedule);
 	char *name = launchctl_service_name(frequency);
 	char *filename = launchctl_service_filename(name);
-
-	if (safe_create_leading_directories(filename))
-		die(_("failed to create directories for '%s'"), filename);
-	plist = xfopen(filename, "w");
+	struct lock_file lk = LOCK_INIT;
+	static unsigned long lock_file_timeout_ms = ULONG_MAX;
+	struct strbuf plist = STRBUF_INIT, plist2 = STRBUF_INIT;
+	struct stat st;
 
 	preamble = "<?xml version=\"1.0\"?>\n"
 		   "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
@@ -1630,7 +1652,7 @@
 		   "</array>\n"
 		   "<key>StartCalendarInterval</key>\n"
 		   "<array>\n";
-	fprintf(plist, preamble, name, exec_path, exec_path, frequency);
+	strbuf_addf(&plist, preamble, name, exec_path, exec_path, frequency);
 
 	switch (schedule) {
 	case SCHEDULE_HOURLY:
@@ -1639,7 +1661,7 @@
 			 "<key>Minute</key><integer>0</integer>\n"
 			 "</dict>\n";
 		for (i = 1; i <= 23; i++)
-			fprintf(plist, repeat, i);
+			strbuf_addf(&plist, repeat, i);
 		break;
 
 	case SCHEDULE_DAILY:
@@ -1649,32 +1671,59 @@
 			 "<key>Minute</key><integer>0</integer>\n"
 			 "</dict>\n";
 		for (i = 1; i <= 6; i++)
-			fprintf(plist, repeat, i);
+			strbuf_addf(&plist, repeat, i);
 		break;
 
 	case SCHEDULE_WEEKLY:
-		fprintf(plist,
-			"<dict>\n"
-			"<key>Day</key><integer>0</integer>\n"
-			"<key>Hour</key><integer>0</integer>\n"
-			"<key>Minute</key><integer>0</integer>\n"
-			"</dict>\n");
+		strbuf_addstr(&plist,
+			      "<dict>\n"
+			      "<key>Day</key><integer>0</integer>\n"
+			      "<key>Hour</key><integer>0</integer>\n"
+			      "<key>Minute</key><integer>0</integer>\n"
+			      "</dict>\n");
 		break;
 
 	default:
 		/* unreachable */
 		break;
 	}
-	fprintf(plist, "</array>\n</dict>\n</plist>\n");
-	fclose(plist);
+	strbuf_addstr(&plist, "</array>\n</dict>\n</plist>\n");
 
-	/* bootout might fail if not already running, so ignore */
-	launchctl_boot_plist(0, filename, cmd);
-	if (launchctl_boot_plist(1, filename, cmd))
-		die(_("failed to bootstrap service %s"), filename);
+	if (safe_create_leading_directories(filename))
+		die(_("failed to create directories for '%s'"), filename);
+
+	if ((long)lock_file_timeout_ms < 0 &&
+	    git_config_get_ulong("gc.launchctlplistlocktimeoutms",
+				 &lock_file_timeout_ms))
+		lock_file_timeout_ms = 150;
+
+	fd = hold_lock_file_for_update_timeout(&lk, filename, LOCK_DIE_ON_ERROR,
+					       lock_file_timeout_ms);
+
+	/*
+	 * Does this file already exist? With the intended contents? Is it
+	 * registered already? Then it does not need to be re-registered.
+	 */
+	if (!stat(filename, &st) && st.st_size == plist.len &&
+	    strbuf_read_file(&plist2, filename, plist.len) == plist.len &&
+	    !strbuf_cmp(&plist, &plist2) &&
+	    launchctl_list_contains_plist(name, cmd))
+		rollback_lock_file(&lk);
+	else {
+		if (write_in_full(fd, plist.buf, plist.len) < 0 ||
+		    commit_lock_file(&lk))
+			die_errno(_("could not write '%s'"), filename);
+
+		/* bootout might fail if not already running, so ignore */
+		launchctl_boot_plist(0, filename, cmd);
+		if (launchctl_boot_plist(1, filename, cmd))
+			die(_("failed to bootstrap service %s"), filename);
+	}
 
 	free(filename);
 	free(name);
+	strbuf_release(&plist);
+	strbuf_release(&plist2);
 	return 0;
 }
 
diff --git a/builtin/grep.c b/builtin/grep.c
index ab8822e..7d2f8e5 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -704,10 +704,9 @@
 static int grep_directory(struct grep_opt *opt, const struct pathspec *pathspec,
 			  int exc_std, int use_index)
 {
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	int i, hit = 0;
 
-	dir_init(&dir);
 	if (!use_index)
 		dir.flags |= DIR_NO_GITLINKS;
 	if (exc_std)
diff --git a/builtin/hash-object.c b/builtin/hash-object.c
index 640ef4d..2e6e2dd 100644
--- a/builtin/hash-object.c
+++ b/builtin/hash-object.c
@@ -53,9 +53,7 @@
 			unsigned flags, int literally)
 {
 	int fd;
-	fd = open(path, O_RDONLY);
-	if (fd < 0)
-		die_errno("Cannot open '%s'", path);
+	fd = xopen(path, O_RDONLY);
 	hash_fd(fd, type, vpath, flags, literally);
 }
 
diff --git a/builtin/help.c b/builtin/help.c
index bb339f0..b7eec06 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -436,10 +436,9 @@
 		warning(_("'%s': unknown man viewer."), name);
 }
 
-static void show_man_page(const char *git_cmd)
+static void show_man_page(const char *page)
 {
 	struct man_viewer_list *viewer;
-	const char *page = cmd_to_page(git_cmd);
 	const char *fallback = getenv("GIT_MAN_VIEWER");
 
 	setup_man_path();
@@ -453,9 +452,8 @@
 	die(_("no man viewer handled the request"));
 }
 
-static void show_info_page(const char *git_cmd)
+static void show_info_page(const char *page)
 {
-	const char *page = cmd_to_page(git_cmd);
 	setenv("INFOPATH", system_path(GIT_INFO_PATH), 1);
 	execlp("info", "info", "gitman", page, (char *)NULL);
 	die(_("no info viewer handled the request"));
@@ -486,9 +484,8 @@
 	execl_git_cmd("web--browse", "-c", "help.browser", path, (char *)NULL);
 }
 
-static void show_html_page(const char *git_cmd)
+static void show_html_page(const char *page)
 {
-	const char *page = cmd_to_page(git_cmd);
 	struct strbuf page_path; /* it leaks but we exec bellow */
 
 	get_html_page_path(&page_path, page);
@@ -548,6 +545,7 @@
 {
 	int nongit;
 	enum help_format parsed_help_format;
+	const char *page;
 
 	argc = parse_options(argc, argv, prefix, builtin_help_options,
 			builtin_help_usage, 0);
@@ -606,16 +604,17 @@
 
 	argv[0] = check_git_cmd(argv[0]);
 
+	page = cmd_to_page(argv[0]);
 	switch (help_format) {
 	case HELP_FORMAT_NONE:
 	case HELP_FORMAT_MAN:
-		show_man_page(argv[0]);
+		show_man_page(page);
 		break;
 	case HELP_FORMAT_INFO:
-		show_info_page(argv[0]);
+		show_info_page(page);
 		break;
 	case HELP_FORMAT_WEB:
-		show_html_page(argv[0]);
+		show_html_page(page);
 		break;
 	}
 
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 3fbc5d7..6cc4890 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -338,15 +338,11 @@
 						"pack/tmp_pack_XXXXXX");
 			pack_name = strbuf_detach(&tmp_file, NULL);
 		} else {
-			output_fd = open(pack_name, O_CREAT|O_EXCL|O_RDWR, 0600);
-			if (output_fd < 0)
-				die_errno(_("unable to create '%s'"), pack_name);
+			output_fd = xopen(pack_name, O_CREAT|O_EXCL|O_RDWR, 0600);
 		}
 		nothread_data.pack_fd = output_fd;
 	} else {
-		input_fd = open(pack_name, O_RDONLY);
-		if (input_fd < 0)
-			die_errno(_("cannot open packfile '%s'"), pack_name);
+		input_fd = xopen(pack_name, O_RDONLY);
 		output_fd = -1;
 		nothread_data.pack_fd = input_fd;
 	}
@@ -369,9 +365,7 @@
 	use(sizeof(struct pack_header));
 }
 
-static NORETURN void bad_object(off_t offset, const char *format,
-		       ...) __attribute__((format (printf, 2, 3)));
-
+__attribute__((format (printf, 2, 3)))
 static NORETURN void bad_object(off_t offset, const char *format, ...)
 {
 	va_list params;
diff --git a/builtin/log.c b/builtin/log.c
index 6102893..f75d87e 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -245,6 +245,9 @@
 			rev->abbrev_commit = 0;
 	}
 
+	if (rev->commit_format == CMIT_FMT_USERFORMAT && !w.decorate)
+		decoration_style = 0;
+
 	if (decoration_style) {
 		const struct string_list *config_exclude =
 			repo_config_get_value_multi(the_repository,
@@ -634,7 +637,7 @@
 	repo_init_revisions(the_repository, &rev, prefix);
 	rev.diff = 1;
 	rev.always_show_header = 1;
-	rev.no_walk = REVISION_WALK_NO_WALK_SORTED;
+	rev.no_walk = 1;
 	rev.diffopt.stat_width = -1; 	/* Scale to real terminal size */
 
 	memset(&opt, 0, sizeof(opt));
@@ -1968,8 +1971,7 @@
 	} else if (rev.diffopt.close_file) {
 		/*
 		 * The diff code parsed --output; it has already opened the
-		 * file, but but we must instruct it not to close after each
-		 * diff.
+		 * file, but we must instruct it not to close after each diff.
 		 */
 		rev.diffopt.no_free = 1;
 	} else {
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 45cc3b2..29a26ad 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -608,7 +608,7 @@
 {
 	int require_work_tree = 0, show_tag = 0, i;
 	char *max_prefix;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	struct pattern_list *pl;
 	struct string_list exclude_list = STRING_LIST_INIT_NODUP;
 	struct option builtin_ls_files_options[] = {
@@ -678,7 +678,6 @@
 	if (argc == 2 && !strcmp(argv[1], "-h"))
 		usage_with_options(ls_files_usage, builtin_ls_files_options);
 
-	dir_init(&dir);
 	prefix = cmd_prefix;
 	if (prefix)
 		prefix_len = strlen(prefix);
diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c
index 1794548..f4fd823 100644
--- a/builtin/ls-remote.c
+++ b/builtin/ls-remote.c
@@ -84,6 +84,8 @@
 			     PARSE_OPT_STOP_AT_NON_OPTION);
 	dest = argv[0];
 
+	packet_trace_identity("ls-remote");
+
 	UNLEAK(sorting);
 
 	if (argc > 1) {
diff --git a/builtin/mailsplit.c b/builtin/mailsplit.c
index 664400b..7baef30 100644
--- a/builtin/mailsplit.c
+++ b/builtin/mailsplit.c
@@ -75,9 +75,7 @@
 		fprintf(stderr, "corrupt mailbox\n");
 		exit(1);
 	}
-	fd = open(name, O_WRONLY | O_CREAT | O_EXCL, 0666);
-	if (fd < 0)
-		die_errno("cannot open output file '%s'", name);
+	fd = xopen(name, O_WRONLY | O_CREAT | O_EXCL, 0666);
 	output = xfdopen(fd, "w");
 
 	/* Copy it out, while searching for a line that begins with
diff --git a/builtin/merge-ours.c b/builtin/merge-ours.c
index 4594507..3583cff 100644
--- a/builtin/merge-ours.c
+++ b/builtin/merge-ours.c
@@ -28,6 +28,6 @@
 	if (read_cache() < 0)
 		die_errno("read_cache failed");
 	if (index_differs_from(the_repository, "HEAD", NULL, 0))
-		exit(2);
-	exit(0);
+		return 2;
+	return 0;
 }
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index de85207..5dc94d6 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -107,15 +107,12 @@
 	mmfile_t src, dst;
 	xpparam_t xpp;
 	xdemitconf_t xecfg;
-	xdemitcb_t ecb;
+	xdemitcb_t ecb = { .out_line = show_outf };
 
 	memset(&xpp, 0, sizeof(xpp));
 	xpp.flags = 0;
 	memset(&xecfg, 0, sizeof(xecfg));
 	xecfg.ctxlen = 3;
-	ecb.out_hunk = NULL;
-	ecb.out_line = show_outf;
-	ecb.priv = NULL;
 
 	src.ptr = origin(entry, &size);
 	if (!src.ptr)
diff --git a/builtin/merge.c b/builtin/merge.c
index a8a843b..d2c52b6 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -88,9 +88,9 @@
 static int no_verify;
 
 static struct strategy all_strategy[] = {
-	{ "recursive",  DEFAULT_TWOHEAD | NO_TRIVIAL },
+	{ "recursive",  NO_TRIVIAL },
 	{ "octopus",    DEFAULT_OCTOPUS },
-	{ "ort",        NO_TRIVIAL },
+	{ "ort",        DEFAULT_TWOHEAD | NO_TRIVIAL },
 	{ "resolve",    0 },
 	{ "ours",       NO_FAST_FORWARD | NO_TRIVIAL },
 	{ "subtree",    NO_FAST_FORWARD | NO_TRIVIAL },
@@ -503,7 +503,7 @@
 	struct strbuf bname = STRBUF_INIT;
 	struct merge_remote_desc *desc;
 	const char *ptr;
-	char *found_ref;
+	char *found_ref = NULL;
 	int len, early;
 
 	strbuf_branchname(&bname, remote, 0);
@@ -586,6 +586,7 @@
 	strbuf_addf(msg, "%s\t\tcommit '%s'\n",
 		oid_to_hex(&remote_head->object.oid), remote);
 cleanup:
+	free(found_ref);
 	strbuf_release(&buf);
 	strbuf_release(&bname);
 }
@@ -738,7 +739,7 @@
 
 		for (x = 0; x < xopts_nr; x++)
 			if (parse_merge_opt(&o, xopts[x]))
-				die(_("Unknown option for merge-recursive: -X%s"), xopts[x]);
+				die(_("unknown strategy option: -X%s"), xopts[x]);
 
 		o.branch1 = head_arg;
 		o.branch2 = merge_remote_util(remoteheads->item)->name;
@@ -861,9 +862,11 @@
 			strbuf_commented_addf(&msg, "\n");
 		}
 		strbuf_commented_addf(&msg, _(merge_editor_comment));
-		strbuf_commented_addf(&msg, _(cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS ?
-			scissors_editor_comment :
-			no_scissors_editor_comment), comment_line_char);
+		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
+			strbuf_commented_addf(&msg, _(scissors_editor_comment));
+		else
+			strbuf_commented_addf(&msg,
+				_(no_scissors_editor_comment), comment_line_char);
 	}
 	if (signoff)
 		append_signoff(&msg, ignore_non_trailer(msg.buf, msg.len), 0);
@@ -1135,9 +1138,7 @@
 		merge_names = &fetch_head_file;
 
 	filename = git_path_fetch_head(the_repository);
-	fd = open(filename, O_RDONLY);
-	if (fd < 0)
-		die_errno(_("could not open '%s' for reading"), filename);
+	fd = xopen(filename, O_RDONLY);
 
 	if (strbuf_read(merge_names, fd, 0) < 0)
 		die_errno(_("could not read '%s'"), filename);
@@ -1367,14 +1368,14 @@
 		 * There is no unmerged entry, don't advise 'git
 		 * add/rm <file>', just 'git commit'.
 		 */
-		if (advice_resolve_conflict)
+		if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
 			die(_("You have not concluded your merge (MERGE_HEAD exists).\n"
 				  "Please, commit your changes before you merge."));
 		else
 			die(_("You have not concluded your merge (MERGE_HEAD exists)."));
 	}
 	if (ref_exists("CHERRY_PICK_HEAD")) {
-		if (advice_resolve_conflict)
+		if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
 			die(_("You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 			    "Please, commit your changes before you merge."));
 		else
@@ -1484,6 +1485,12 @@
 			fast_forward = FF_NO;
 	}
 
+	if (!use_strategies && !pull_twohead &&
+	    remoteheads && !remoteheads->next) {
+		char *default_strategy = getenv("GIT_TEST_MERGE_ALGORITHM");
+		if (default_strategy)
+			append_strategy(get_strategy(default_strategy));
+	}
 	if (!use_strategies) {
 		if (!remoteheads)
 			; /* already up-to-date */
@@ -1560,6 +1567,7 @@
 					  &head_commit->object.oid,
 					  &commit->object.oid,
 					  overwrite_ignore)) {
+			apply_autostash(git_path_merge_autostash(the_repository));
 			ret = 1;
 			goto done;
 		}
@@ -1620,7 +1628,7 @@
 	}
 
 	if (fast_forward == FF_ONLY)
-		die(_("Not possible to fast-forward, aborting."));
+		die_ff_impossible();
 
 	if (autostash)
 		create_autostash(the_repository,
@@ -1708,6 +1716,7 @@
 		else
 			fprintf(stderr, _("Merge with strategy %s failed.\n"),
 				use_strategies[0]->name);
+		apply_autostash(git_path_merge_autostash(the_repository));
 		ret = 2;
 		goto done;
 	} else if (best_strategy == wt_strategy)
@@ -1715,7 +1724,7 @@
 	else {
 		printf(_("Rewinding the tree to pristine...\n"));
 		restore_state(&head_commit->object.oid, &stash);
-		printf(_("Using the %s to prepare resolving by hand.\n"),
+		printf(_("Using the %s strategy to prepare resolving by hand.\n"),
 			best_strategy);
 		try_merge_strategy(best_strategy, common, remoteheads,
 				   head_commit);
diff --git a/builtin/mktree.c b/builtin/mktree.c
index 891991b..ae78ca1 100644
--- a/builtin/mktree.c
+++ b/builtin/mktree.c
@@ -189,5 +189,5 @@
 		used=0; /* reset tree entry buffer for re-use in batch mode */
 	}
 	strbuf_release(&sb);
-	exit(0);
+	return 0;
 }
diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c
index 5d3ea44..649aa5f 100644
--- a/builtin/multi-pack-index.c
+++ b/builtin/multi-pack-index.c
@@ -164,7 +164,7 @@
 	if (!opts.object_dir)
 		opts.object_dir = get_object_directory();
 
-	if (argc == 0)
+	if (!argc)
 		goto usage;
 
 	if (!strcmp(argv[0], "repack"))
@@ -175,10 +175,9 @@
 		return cmd_multi_pack_index_verify(argc, argv);
 	else if (!strcmp(argv[0], "expire"))
 		return cmd_multi_pack_index_expire(argc, argv);
-	else {
+
+	error(_("unrecognized subcommand: %s"), argv[0]);
 usage:
-		error(_("unrecognized subcommand: %s"), argv[0]);
-		usage_with_options(builtin_multi_pack_index_usage,
-				   builtin_multi_pack_index_options);
-	}
+	usage_with_options(builtin_multi_pack_index_usage,
+			   builtin_multi_pack_index_options);
 }
diff --git a/builtin/mv.c b/builtin/mv.c
index 3fccdcb..c2f96c8 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -303,5 +303,10 @@
 			       COMMIT_LOCK | SKIP_IF_UNCHANGED))
 		die(_("Unable to write new index file"));
 
+	string_list_clear(&src_for_dst, 0);
+	UNLEAK(source);
+	UNLEAK(dest_path);
+	free(submodule_gitfile);
+	free(modes);
 	return 0;
 }
diff --git a/builtin/notes.c b/builtin/notes.c
index 74bba39..71c5958 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -172,9 +172,7 @@
 
 		/* write the template message before editing: */
 		d->edit_path = git_pathdup("NOTES_EDITMSG");
-		fd = open(d->edit_path, O_CREAT | O_TRUNC | O_WRONLY, 0600);
-		if (fd < 0)
-			die_errno(_("could not create file '%s'"), d->edit_path);
+		fd = xopen(d->edit_path, O_CREAT | O_TRUNC | O_WRONLY, 0600);
 
 		if (d->given)
 			write_or_die(fd, d->buf.buf, d->buf.len);
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index de00adb..ec85035 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -3311,9 +3311,26 @@
 	}
 
 	/*
-	 * First handle all of the excluded packs, marking them as kept in-core
-	 * so that later calls to add_object_entry() discards any objects that
-	 * are also found in excluded packs.
+	 * Arguments we got on stdin may not even be packs. First
+	 * check that to avoid segfaulting later on in
+	 * e.g. pack_mtime_cmp(), excluded packs are handled below.
+	 *
+	 * Since we first parsed our STDIN and then sorted the input
+	 * lines the pack we error on will be whatever line happens to
+	 * sort first. This is lazy, it's enough that we report one
+	 * bad case here, we don't need to report the first/last one,
+	 * or all of them.
+	 */
+	for_each_string_list_item(item, &include_packs) {
+		struct packed_git *p = item->util;
+		if (!p)
+			die(_("could not find pack '%s'"), item->string);
+	}
+
+	/*
+	 * Then, handle all of the excluded packs, marking them as
+	 * kept in-core so that later calls to add_object_entry()
+	 * discards any objects that are also found in excluded packs.
 	 */
 	for_each_string_list_item(item, &exclude_packs) {
 		struct packed_git *p = item->util;
@@ -3388,13 +3405,9 @@
 	}
 }
 
-/* Remember to update object flag allocation in object.h */
-#define OBJECT_ADDED (1u<<20)
-
 static void show_commit(struct commit *commit, void *data)
 {
 	add_object_entry(&commit->object.oid, OBJ_COMMIT, NULL, 0);
-	commit->object.flags |= OBJECT_ADDED;
 
 	if (write_bitmap_index)
 		index_commit_for_bitmap(commit);
@@ -3407,7 +3420,6 @@
 {
 	add_preferred_base_object(name);
 	add_object_entry(&obj->oid, obj->type, name, 0);
-	obj->flags |= OBJECT_ADDED;
 
 	if (use_delta_islands) {
 		const char *p;
@@ -3488,79 +3500,23 @@
 	add_preferred_base(&commit->object.oid);
 }
 
-struct in_pack_object {
-	off_t offset;
-	struct object *object;
-};
-
-struct in_pack {
-	unsigned int alloc;
-	unsigned int nr;
-	struct in_pack_object *array;
-};
-
-static void mark_in_pack_object(struct object *object, struct packed_git *p, struct in_pack *in_pack)
+static int add_object_in_unpacked_pack(const struct object_id *oid,
+				       struct packed_git *pack,
+				       uint32_t pos,
+				       void *_data)
 {
-	in_pack->array[in_pack->nr].offset = find_pack_entry_one(object->oid.hash, p);
-	in_pack->array[in_pack->nr].object = object;
-	in_pack->nr++;
-}
-
-/*
- * Compare the objects in the offset order, in order to emulate the
- * "git rev-list --objects" output that produced the pack originally.
- */
-static int ofscmp(const void *a_, const void *b_)
-{
-	struct in_pack_object *a = (struct in_pack_object *)a_;
-	struct in_pack_object *b = (struct in_pack_object *)b_;
-
-	if (a->offset < b->offset)
-		return -1;
-	else if (a->offset > b->offset)
-		return 1;
-	else
-		return oidcmp(&a->object->oid, &b->object->oid);
+	add_object_entry(oid, OBJ_NONE, "", 0);
+	return 0;
 }
 
 static void add_objects_in_unpacked_packs(void)
 {
-	struct packed_git *p;
-	struct in_pack in_pack;
-	uint32_t i;
-
-	memset(&in_pack, 0, sizeof(in_pack));
-
-	for (p = get_all_packs(the_repository); p; p = p->next) {
-		struct object_id oid;
-		struct object *o;
-
-		if (!p->pack_local || p->pack_keep || p->pack_keep_in_core)
-			continue;
-		if (open_pack_index(p))
-			die(_("cannot open pack index"));
-
-		ALLOC_GROW(in_pack.array,
-			   in_pack.nr + p->num_objects,
-			   in_pack.alloc);
-
-		for (i = 0; i < p->num_objects; i++) {
-			nth_packed_object_id(&oid, p, i);
-			o = lookup_unknown_object(the_repository, &oid);
-			if (!(o->flags & OBJECT_ADDED))
-				mark_in_pack_object(o, p, &in_pack);
-			o->flags |= OBJECT_ADDED;
-		}
-	}
-
-	if (in_pack.nr) {
-		QSORT(in_pack.array, in_pack.nr, ofscmp);
-		for (i = 0; i < in_pack.nr; i++) {
-			struct object *o = in_pack.array[i].object;
-			add_object_entry(&o->oid, o->type, "", 0);
-		}
-	}
-	free(in_pack.array);
+	if (for_each_packed_object(add_object_in_unpacked_pack, NULL,
+				   FOR_EACH_OBJECT_PACK_ORDER |
+				   FOR_EACH_OBJECT_LOCAL_ONLY |
+				   FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS |
+				   FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS))
+		die(_("cannot open pack index"));
 }
 
 static int add_loose_object(const struct object_id *oid, const char *path,
diff --git a/builtin/pull.c b/builtin/pull.c
index e8927fc..b311ea6 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -126,9 +126,9 @@
 	/* Options passed to git-merge or git-rebase */
 	OPT_GROUP(N_("Options related to merging")),
 	OPT_CALLBACK_F('r', "rebase", &opt_rebase,
-	  "(false|true|merges|preserve|interactive)",
-	  N_("incorporate changes by rebasing rather than merging"),
-	  PARSE_OPT_OPTARG, parse_opt_rebase),
+		"(false|true|merges|preserve|interactive)",
+		N_("incorporate changes by rebasing rather than merging"),
+		PARSE_OPT_OPTARG, parse_opt_rebase),
 	OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL,
 		N_("do not show a diffstat at the end of the merge"),
 		PARSE_OPT_NOARG | PARSE_OPT_NONEG),
@@ -893,6 +893,8 @@
 	strvec_pushv(&args, opt_strategy_opts.v);
 	if (opt_gpg_sign)
 		strvec_push(&args, opt_gpg_sign);
+	if (opt_signoff)
+		strvec_push(&args, opt_signoff);
 	if (opt_autostash == 0)
 		strvec_push(&args, "--no-autostash");
 	else if (opt_autostash == 1)
@@ -911,12 +913,18 @@
 	return ret;
 }
 
-static int get_can_ff(struct object_id *orig_head, struct object_id *orig_merge_head)
+static int get_can_ff(struct object_id *orig_head,
+		      struct oid_array *merge_heads)
 {
 	int ret;
 	struct commit_list *list = NULL;
 	struct commit *merge_head, *head;
+	struct object_id *orig_merge_head;
 
+	if (merge_heads->nr > 1)
+		return 0;
+
+	orig_merge_head = &merge_heads->oid[0];
 	head = lookup_commit_reference(the_repository, orig_head);
 	commit_list_insert(head, &list);
 	merge_head = lookup_commit_reference(the_repository, orig_merge_head);
@@ -927,9 +935,9 @@
 
 static void show_advice_pull_non_ff(void)
 {
-	advise(_("Pulling without specifying how to reconcile divergent branches is\n"
-		 "discouraged. You can squelch this message by running one of the following\n"
-		 "commands sometime before your next pull:\n"
+	advise(_("You have divergent branches and need to specify how to reconcile them.\n"
+		 "You can do so by running one of the following commands sometime before\n"
+		 "your next pull:\n"
 		 "\n"
 		 "  git config pull.rebase false  # merge (the default strategy)\n"
 		 "  git config pull.rebase true   # rebase\n"
@@ -947,7 +955,6 @@
 	struct oid_array merge_heads = OID_ARRAY_INIT;
 	struct object_id orig_head, curr_head;
 	struct object_id rebase_fork_point;
-	int autostash;
 	int rebase_unspecified = 0;
 	int can_ff;
 
@@ -967,8 +974,22 @@
 
 	parse_repo_refspecs(argc, argv, &repo, &refspecs);
 
-	if (!opt_ff)
+	if (!opt_ff) {
 		opt_ff = xstrdup_or_null(config_get_ff());
+		/*
+		 * A subtle point: opt_ff was set on the line above via
+		 * reading from config.  opt_rebase, in contrast, is set
+		 * before this point via command line options.  The setting
+		 * of opt_rebase via reading from config (using
+		 * config_get_rebase()) does not happen until later.  We
+		 * are relying on the next if-condition happening before
+		 * the config_get_rebase() call so that an explicit
+		 * "--rebase" can override a config setting of
+		 * pull.ff=only.
+		 */
+		if (opt_rebase >= 0 && opt_ff && !strcmp(opt_ff, "--ff-only"))
+			opt_ff = "--ff";
+	}
 
 	if (opt_rebase < 0)
 		opt_rebase = config_get_rebase(&rebase_unspecified);
@@ -982,8 +1003,8 @@
 	if (get_oid("HEAD", &orig_head))
 		oidclr(&orig_head);
 
-	autostash = config_autostash;
 	if (opt_rebase) {
+		int autostash = config_autostash;
 		if (opt_autostash != -1)
 			autostash = opt_autostash;
 
@@ -1042,19 +1063,29 @@
 			die(_("Cannot merge multiple branches into empty head."));
 		return pull_into_void(merge_heads.oid, &curr_head);
 	}
-	if (opt_rebase && merge_heads.nr > 1)
-		die(_("Cannot rebase onto multiple branches."));
+	if (merge_heads.nr > 1) {
+		if (opt_rebase)
+			die(_("Cannot rebase onto multiple branches."));
+		if (opt_ff && !strcmp(opt_ff, "--ff-only"))
+			die(_("Cannot fast-forward to multiple branches."));
+	}
 
-	can_ff = get_can_ff(&orig_head, &merge_heads.oid[0]);
+	can_ff = get_can_ff(&orig_head, &merge_heads);
 
-	if (rebase_unspecified && !opt_ff && !can_ff) {
-		if (opt_verbosity >= 0)
-			show_advice_pull_non_ff();
+	/* ff-only takes precedence over rebase */
+	if (opt_ff && !strcmp(opt_ff, "--ff-only")) {
+		if (!can_ff)
+			die_ff_impossible();
+		opt_rebase = REBASE_FALSE;
+	}
+	/* If no action specified and we can't fast forward, then warn. */
+	if (!opt_ff && rebase_unspecified && !can_ff) {
+		show_advice_pull_non_ff();
+		die(_("Need to specify how to reconcile divergent branches."));
 	}
 
 	if (opt_rebase) {
 		int ret = 0;
-		int ran_ff = 0;
 
 		struct object_id newbase;
 		struct object_id upstream;
@@ -1065,16 +1096,14 @@
 		     recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND) &&
 		    submodule_touches_in_range(the_repository, &upstream, &curr_head))
 			die(_("cannot rebase with locally recorded submodule modifications"));
-		if (!autostash) {
-			if (can_ff) {
-				/* we can fast-forward this without invoking rebase */
-				opt_ff = "--ff-only";
-				ran_ff = 1;
-				ret = run_merge();
-			}
-		}
-		if (!ran_ff)
+
+		if (can_ff) {
+			/* we can fast-forward this without invoking rebase */
+			opt_ff = "--ff-only";
+			ret = run_merge();
+		} else {
 			ret = run_rebase(&newbase, &upstream);
+		}
 
 		if (!ret && (recurse_submodules == RECURSE_SUBMODULES_ON ||
 			     recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND))
diff --git a/builtin/push.c b/builtin/push.c
index 194967e..4b026ce 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -185,82 +185,73 @@
 	   "\n"
 	   "    git push %s HEAD:<name-of-remote-branch>\n");
 
-static void setup_push_upstream(struct remote *remote, struct branch *branch,
-				int triangular, int simple)
+static const char *get_upstream_ref(struct branch *branch, const char *remote_name)
 {
-	if (!branch)
-		die(_(message_detached_head_die), remote->name);
 	if (!branch->merge_nr || !branch->merge || !branch->remote_name)
 		die(_("The current branch %s has no upstream branch.\n"
 		    "To push the current branch and set the remote as upstream, use\n"
 		    "\n"
 		    "    git push --set-upstream %s %s\n"),
 		    branch->name,
-		    remote->name,
+		    remote_name,
 		    branch->name);
 	if (branch->merge_nr != 1)
 		die(_("The current branch %s has multiple upstream branches, "
 		    "refusing to push."), branch->name);
-	if (triangular)
-		die(_("You are pushing to remote '%s', which is not the upstream of\n"
-		      "your current branch '%s', without telling me what to push\n"
-		      "to update which remote branch."),
-		    remote->name, branch->name);
 
-	if (simple) {
-		/* Additional safety */
-		if (strcmp(branch->refname, branch->merge[0]->src))
-			die_push_simple(branch, remote);
-	}
-
-	refspec_appendf(&rs, "%s:%s", branch->refname, branch->merge[0]->src);
-}
-
-static void setup_push_current(struct remote *remote, struct branch *branch)
-{
-	if (!branch)
-		die(_(message_detached_head_die), remote->name);
-	refspec_appendf(&rs, "%s:%s", branch->refname, branch->refname);
-}
-
-static int is_workflow_triangular(struct remote *remote)
-{
-	struct remote *fetch_remote = remote_get(NULL);
-	return (fetch_remote && fetch_remote != remote);
+	return branch->merge[0]->src;
 }
 
 static void setup_default_push_refspecs(struct remote *remote)
 {
-	struct branch *branch = branch_get(NULL);
-	int triangular = is_workflow_triangular(remote);
+	struct branch *branch;
+	const char *dst;
+	int same_remote;
 
 	switch (push_default) {
-	default:
 	case PUSH_DEFAULT_MATCHING:
 		refspec_append(&rs, ":");
-		break;
-
-	case PUSH_DEFAULT_UNSPECIFIED:
-	case PUSH_DEFAULT_SIMPLE:
-		if (triangular)
-			setup_push_current(remote, branch);
-		else
-			setup_push_upstream(remote, branch, triangular, 1);
-		break;
-
-	case PUSH_DEFAULT_UPSTREAM:
-		setup_push_upstream(remote, branch, triangular, 0);
-		break;
-
-	case PUSH_DEFAULT_CURRENT:
-		setup_push_current(remote, branch);
-		break;
+		return;
 
 	case PUSH_DEFAULT_NOTHING:
 		die(_("You didn't specify any refspecs to push, and "
 		    "push.default is \"nothing\"."));
+		return;
+	default:
 		break;
 	}
+
+	branch = branch_get(NULL);
+	if (!branch)
+		die(_(message_detached_head_die), remote->name);
+
+	dst = branch->refname;
+	same_remote = !strcmp(remote->name, remote_for_branch(branch, NULL));
+
+	switch (push_default) {
+	default:
+	case PUSH_DEFAULT_UNSPECIFIED:
+	case PUSH_DEFAULT_SIMPLE:
+		if (!same_remote)
+			break;
+		if (strcmp(branch->refname, get_upstream_ref(branch, remote->name)))
+			die_push_simple(branch, remote);
+		break;
+
+	case PUSH_DEFAULT_UPSTREAM:
+		if (!same_remote)
+			die(_("You are pushing to remote '%s', which is not the upstream of\n"
+			      "your current branch '%s', without telling me what to push\n"
+			      "to update which remote branch."),
+			    remote->name, branch->name);
+		dst = get_upstream_ref(branch, remote->name);
+		break;
+
+	case PUSH_DEFAULT_CURRENT:
+		break;
+	}
+
+	refspec_appendf(&rs, "%s:%s", branch->refname, dst);
 }
 
 static const char message_advice_pull_before_push[] =
@@ -298,42 +289,42 @@
 
 static void advise_pull_before_push(void)
 {
-	if (!advice_push_non_ff_current || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_NON_FF_CURRENT) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_pull_before_push));
 }
 
 static void advise_checkout_pull_push(void)
 {
-	if (!advice_push_non_ff_matching || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_NON_FF_MATCHING) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_checkout_pull_push));
 }
 
 static void advise_ref_already_exists(void)
 {
-	if (!advice_push_already_exists || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_ALREADY_EXISTS) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_ref_already_exists));
 }
 
 static void advise_ref_fetch_first(void)
 {
-	if (!advice_push_fetch_first || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_FETCH_FIRST) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_ref_fetch_first));
 }
 
 static void advise_ref_needs_force(void)
 {
-	if (!advice_push_needs_force || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_NEEDS_FORCE) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_ref_needs_force));
 }
 
 static void advise_ref_needs_update(void)
 {
-	if (!advice_push_ref_needs_update || !advice_push_update_rejected)
+	if (!advice_enabled(ADVICE_PUSH_REF_NEEDS_UPDATE) || !advice_enabled(ADVICE_PUSH_UPDATE_REJECTED))
 		return;
 	advise(_(message_advice_ref_needs_update));
 }
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 12f0931..eb01f4d 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -139,7 +139,7 @@
 	replay.ignore_date = opts->ignore_date;
 	replay.gpg_sign = xstrdup_or_null(opts->gpg_sign_opt);
 	if (opts->strategy)
-		replay.strategy = opts->strategy;
+		replay.strategy = xstrdup_or_null(opts->strategy);
 	else if (!replay.strategy && replay.default_strategy) {
 		replay.strategy = replay.default_strategy;
 		replay.default_strategy = NULL;
@@ -405,6 +405,7 @@
 	flags |= opts->root_with_onto ? TODO_LIST_ROOT_WITH_ONTO : 0;
 	flags |= command == ACTION_SHORTEN_OIDS ? TODO_LIST_SHORTEN_IDS : 0;
 	flags |= opts->reapply_cherry_picks ? TODO_LIST_REAPPLY_CHERRY_PICKS : 0;
+	flags |= opts->flags & REBASE_NO_QUIET ? TODO_LIST_WARN_SKIPPED_CHERRY_PICKS : 0;
 
 	switch (command) {
 	case ACTION_NONE: {
@@ -1713,7 +1714,7 @@
 		int i;
 
 		if (!options.strategy)
-			options.strategy = "recursive";
+			options.strategy = "ort";
 
 		strbuf_reset(&buf);
 		for (i = 0; i < strategy_options.nr; i++)
@@ -1918,7 +1919,7 @@
 						   &options.orig_head))
 			options.head_name = NULL;
 		else
-			die(_("fatal: no such branch/commit '%s'"),
+			die(_("no such branch/commit '%s'"),
 			    branch_name);
 	} else if (argc == 0) {
 		/* Do not need to switch branches, we are already on it. */
@@ -2109,6 +2110,7 @@
 	free(options.head_name);
 	free(options.gpg_sign_opt);
 	free(options.cmd);
+	free(options.strategy);
 	strbuf_release(&options.git_format_patch_opt);
 	free(squash_onto_name);
 	return ret;
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index a347425..2d1f97e 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -425,9 +425,6 @@
 	return 0;
 }
 
-static void rp_error(const char *err, ...) __attribute__((format (printf, 1, 2)));
-static void rp_warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
-
 static void report_message(const char *prefix, const char *err, va_list params)
 {
 	int sz;
@@ -445,6 +442,7 @@
 		xwrite(2, msg, sz);
 }
 
+__attribute__((format (printf, 1, 2)))
 static void rp_warning(const char *err, ...)
 {
 	va_list params;
@@ -453,6 +451,7 @@
 	va_end(params);
 }
 
+__attribute__((format (printf, 1, 2)))
 static void rp_error(const char *err, ...)
 {
 	va_list params;
diff --git a/builtin/replace.c b/builtin/replace.c
index cd48765..946938d 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -507,7 +507,7 @@
 	if (!fp)
 		return -1;
 
-	advice_graft_file_deprecated = 0;
+	no_graft_file_deprecated_advice = 1;
 	while (strbuf_getline(&buf, fp) != EOF) {
 		if (*buf.buf == '#')
 			continue;
diff --git a/builtin/rerere.c b/builtin/rerere.c
index fd3be17..83d7a77 100644
--- a/builtin/rerere.c
+++ b/builtin/rerere.c
@@ -28,7 +28,7 @@
 {
 	xpparam_t xpp;
 	xdemitconf_t xecfg;
-	xdemitcb_t ecb;
+	xdemitcb_t ecb = { .out_line = outf };
 	mmfile_t minus, plus;
 	int ret;
 
@@ -41,8 +41,6 @@
 	xpp.flags = 0;
 	memset(&xecfg, 0, sizeof(xecfg));
 	xecfg.ctxlen = 3;
-	ecb.out_hunk = NULL;
-	ecb.out_line = outf;
 	ret = xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb);
 
 	free(minus.ptr);
diff --git a/builtin/reset.c b/builtin/reset.c
index 43e855c..51c9e2f 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -412,7 +412,7 @@
 				refresh_index(&the_index, flags, NULL, NULL,
 					      _("Unstaged changes after reset:"));
 				t_delta_in_ms = (getnanotime() - t_begin) / 1000000;
-				if (advice_reset_quiet_warning && t_delta_in_ms > REFRESH_INDEX_DELAY_WARNING_IN_MS) {
+				if (advice_enabled(ADVICE_RESET_QUIET_WARNING) && t_delta_in_ms > REFRESH_INDEX_DELAY_WARNING_IN_MS) {
 					printf(_("\nIt took %.2f seconds to enumerate unstaged changes after reset.  You can\n"
 						"use '--quiet' to avoid this.  Set the config setting reset.quiet to true\n"
 						"to make this the default.\n"), t_delta_in_ms / 1000.0);
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 7677b1a..36cb909 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -127,13 +127,15 @@
 	if (info->header_prefix)
 		fputs(info->header_prefix, stdout);
 
-	if (!revs->graph)
-		fputs(get_revision_mark(revs, commit), stdout);
-	if (revs->abbrev_commit && revs->abbrev)
-		fputs(find_unique_abbrev(&commit->object.oid, revs->abbrev),
-		      stdout);
-	else
-		fputs(oid_to_hex(&commit->object.oid), stdout);
+	if (revs->include_header) {
+		if (!revs->graph)
+			fputs(get_revision_mark(revs, commit), stdout);
+		if (revs->abbrev_commit && revs->abbrev)
+			fputs(find_unique_abbrev(&commit->object.oid, revs->abbrev),
+			      stdout);
+		else
+			fputs(oid_to_hex(&commit->object.oid), stdout);
+	}
 	if (revs->print_parents) {
 		struct commit_list *parents = commit->parents;
 		while (parents) {
@@ -153,7 +155,7 @@
 	show_decorations(revs, commit);
 	if (revs->commit_format == CMIT_FMT_ONELINE)
 		putchar(' ');
-	else
+	else if (revs->include_header)
 		putchar('\n');
 
 	if (revs->verbose_header) {
@@ -512,6 +514,7 @@
 	repo_init_revisions(the_repository, &revs, prefix);
 	revs.abbrev = DEFAULT_ABBREV;
 	revs.commit_format = CMIT_FMT_UNSPECIFIED;
+	revs.include_header = 1;
 
 	/*
 	 * Scan the argument list before invoking setup_revisions(), so that we
@@ -627,6 +630,16 @@
 			continue;
 		}
 
+		if (!strcmp(arg, ("--commit-header"))) {
+			revs.include_header = 1;
+			continue;
+		}
+
+		if (!strcmp(arg, ("--no-commit-header"))) {
+			revs.include_header = 0;
+			continue;
+		}
+
 		if (!strcmp(arg, "--disk-usage")) {
 			show_disk_usage = 1;
 			info.flags |= REV_LIST_QUIET;
@@ -636,10 +649,12 @@
 		usage(rev_list_usage);
 
 	}
+	if (revs.commit_format != CMIT_FMT_USERFORMAT)
+		revs.include_header = 1;
 	if (revs.commit_format != CMIT_FMT_UNSPECIFIED) {
 		/* The command line has a --pretty  */
 		info.hdr_termination = '\n';
-		if (revs.commit_format == CMIT_FMT_ONELINE)
+		if (revs.commit_format == CMIT_FMT_ONELINE || !revs.include_header)
 			info.header_prefix = "";
 		else
 			info.header_prefix = "commit ";
diff --git a/builtin/revert.c b/builtin/revert.c
index 237f2f1..2e13660 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -191,7 +191,8 @@
 		struct setup_revision_opt s_r_opt;
 		opts->revs = xmalloc(sizeof(*opts->revs));
 		repo_init_revisions(the_repository, opts->revs, NULL);
-		opts->revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
+		opts->revs->no_walk = 1;
+		opts->revs->unsorted_input = 1;
 		if (argc < 2)
 			usage_with_options(usage_str, options);
 		if (!strcmp(argv[1], "-"))
diff --git a/builtin/rm.c b/builtin/rm.c
index 8a24c71..3b44b80 100644
--- a/builtin/rm.c
+++ b/builtin/rm.c
@@ -55,7 +55,7 @@
 			strbuf_addf(&err_msg,
 				    "\n    %s",
 				    files_list->items[i].string);
-		if (advice_rm_hints)
+		if (advice_enabled(ADVICE_RM_HINTS))
 			strbuf_addstr(&err_msg, hints_msg);
 		*errs = error("%s", err_msg.buf);
 		strbuf_release(&err_msg);
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index a7e0166..729dea1 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -230,6 +230,7 @@
 	args.atomic = atomic;
 	args.stateless_rpc = stateless_rpc;
 	args.push_options = push_options.nr ? &push_options : NULL;
+	args.url = dest;
 
 	if (from_stdin) {
 		if (args.stateless_rpc) {
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index d6d2dab..bea4bbf 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -482,10 +482,9 @@
 	}
 }
 
-static int rev_is_head(const char *head, const char *name,
-		       unsigned char *head_sha1, unsigned char *sha1)
+static int rev_is_head(const char *head, const char *name)
 {
-	if (!head || (head_sha1 && sha1 && !hasheq(head_sha1, sha1)))
+	if (!head)
 		return 0;
 	skip_prefix(head, "refs/heads/", &head);
 	if (!skip_prefix(name, "refs/heads/", &name))
@@ -806,9 +805,7 @@
 			/* We are only interested in adding the branch
 			 * HEAD points at.
 			 */
-			if (rev_is_head(head,
-					ref_name[i],
-					head_oid.hash, NULL))
+			if (rev_is_head(head, ref_name[i]))
 				has_head++;
 		}
 		if (!has_head) {
@@ -867,10 +864,8 @@
 	if (1 < num_rev || extra < 0) {
 		for (i = 0; i < num_rev; i++) {
 			int j;
-			int is_head = rev_is_head(head,
-						  ref_name[i],
-						  head_oid.hash,
-						  rev[i]->object.oid.hash);
+			int is_head = rev_is_head(head, ref_name[i]) &&
+				      oideq(&head_oid, &rev[i]->object.oid);
 			if (extra < 0)
 				printf("%c [%s] ",
 				       is_head ? '*' : ' ', ref_name[i]);
@@ -939,9 +934,12 @@
 					mark = '*';
 				else
 					mark = '+';
-				printf("%s%c%s",
-				       get_color_code(i),
-				       mark, get_color_reset_code());
+				if (mark == ' ')
+					putchar(mark);
+				else
+					printf("%s%c%s",
+					       get_color_code(i),
+					       mark, get_color_reset_code());
 			}
 			putchar(' ');
 		}
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index a4bdd7c..8ba9f13 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -380,10 +380,7 @@
 	struct pattern_entry *e = xmalloc(sizeof(*e));
 	e->patternlen = path->len;
 	e->pattern = strbuf_detach(path, NULL);
-	hashmap_entry_init(&e->ent,
-			   ignore_case ?
-			   strihash(e->pattern) :
-			   strhash(e->pattern));
+	hashmap_entry_init(&e->ent, fspathhash(e->pattern));
 
 	hashmap_add(&pl->recursive_hashmap, &e->ent);
 
@@ -399,10 +396,7 @@
 		e = xmalloc(sizeof(struct pattern_entry));
 		e->patternlen = newlen;
 		e->pattern = xstrndup(oldpattern, newlen);
-		hashmap_entry_init(&e->ent,
-				   ignore_case ?
-				   strihash(e->pattern) :
-				   strhash(e->pattern));
+		hashmap_entry_init(&e->ent, fspathhash(e->pattern));
 
 		if (!hashmap_get_entry(&pl->parent_hashmap, e, ent, NULL))
 			hashmap_add(&pl->parent_hashmap, &e->ent);
diff --git a/builtin/stash.c b/builtin/stash.c
index 9c72e4b..8f42360 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -991,9 +991,8 @@
 {
 	int i;
 	int found = 0;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 
-	dir_init(&dir);
 	if (include_untracked != INCLUDE_ALL_FILES)
 		setup_standard_excludes(&dir);
 
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index ae6174a..4da9781 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -19,7 +19,6 @@
 #include "diffcore.h"
 #include "diff.h"
 #include "object-store.h"
-#include "dir.h"
 #include "advice.h"
 
 #define OPT_QUIET (1 << 0)
@@ -188,11 +187,13 @@
 		out = xstrdup(sb.buf + 2);
 	else
 		out = xstrdup(sb.buf);
-	strbuf_reset(&sb);
 
-	if (!up_path || !is_relative)
+	if (!up_path || !is_relative) {
+		strbuf_release(&sb);
 		return out;
+	}
 
+	strbuf_reset(&sb);
 	strbuf_addf(&sb, "%s%s", up_path, out);
 	free(out);
 	return strbuf_detach(&sb, NULL);
@@ -1658,45 +1659,20 @@
 	return 0;
 }
 
-static int clone_submodule(const char *path, const char *gitdir, const char *url,
-			   const char *depth, struct string_list *reference, int dissociate,
-			   int quiet, int progress, int single_branch)
-{
-	struct child_process cp = CHILD_PROCESS_INIT;
-
-	strvec_push(&cp.args, "clone");
-	strvec_push(&cp.args, "--no-checkout");
-	if (quiet)
-		strvec_push(&cp.args, "--quiet");
-	if (progress)
-		strvec_push(&cp.args, "--progress");
-	if (depth && *depth)
-		strvec_pushl(&cp.args, "--depth", depth, NULL);
-	if (reference->nr) {
-		struct string_list_item *item;
-		for_each_string_list_item(item, reference)
-			strvec_pushl(&cp.args, "--reference",
-				     item->string, NULL);
-	}
-	if (dissociate)
-		strvec_push(&cp.args, "--dissociate");
-	if (gitdir && *gitdir)
-		strvec_pushl(&cp.args, "--separate-git-dir", gitdir, NULL);
-	if (single_branch >= 0)
-		strvec_push(&cp.args, single_branch ?
-					  "--single-branch" :
-					  "--no-single-branch");
-
-	strvec_push(&cp.args, "--");
-	strvec_push(&cp.args, url);
-	strvec_push(&cp.args, path);
-
-	cp.git_cmd = 1;
-	prepare_submodule_repo_env(&cp.env_array);
-	cp.no_stdin = 1;
-
-	return run_command(&cp);
-}
+struct module_clone_data {
+	const char *prefix;
+	const char *path;
+	const char *name;
+	const char *url;
+	const char *depth;
+	struct string_list reference;
+	unsigned int quiet: 1;
+	unsigned int progress: 1;
+	unsigned int dissociate: 1;
+	unsigned int require_init: 1;
+	int single_branch;
+};
+#define MODULE_CLONE_DATA_INIT { .reference = STRING_LIST_INIT_NODUP, .single_branch = -1 }
 
 struct submodule_alternate_setup {
 	const char *submodule_name;
@@ -1748,7 +1724,7 @@
 		} else {
 			switch (sas->error_mode) {
 			case SUBMODULE_ALTERNATE_ERROR_DIE:
-				if (advice_submodule_alternate_error_strategy_die)
+				if (advice_enabled(ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE))
 					advise(_(alternate_error_advice));
 				die(_("submodule '%s' cannot add alternate: %s"),
 				    sas->submodule_name, err.buf);
@@ -1802,37 +1778,128 @@
 	free(error_strategy);
 }
 
+static int clone_submodule(struct module_clone_data *clone_data)
+{
+	char *p, *sm_gitdir;
+	char *sm_alternate = NULL, *error_strategy = NULL;
+	struct strbuf sb = STRBUF_INIT;
+	struct child_process cp = CHILD_PROCESS_INIT;
+
+	strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), clone_data->name);
+	sm_gitdir = absolute_pathdup(sb.buf);
+	strbuf_reset(&sb);
+
+	if (!is_absolute_path(clone_data->path)) {
+		strbuf_addf(&sb, "%s/%s", get_git_work_tree(), clone_data->path);
+		clone_data->path = strbuf_detach(&sb, NULL);
+	} else {
+		clone_data->path = xstrdup(clone_data->path);
+	}
+
+	if (validate_submodule_git_dir(sm_gitdir, clone_data->name) < 0)
+		die(_("refusing to create/use '%s' in another submodule's "
+		      "git dir"), sm_gitdir);
+
+	if (!file_exists(sm_gitdir)) {
+		if (safe_create_leading_directories_const(sm_gitdir) < 0)
+			die(_("could not create directory '%s'"), sm_gitdir);
+
+		prepare_possible_alternates(clone_data->name, &clone_data->reference);
+
+		strvec_push(&cp.args, "clone");
+		strvec_push(&cp.args, "--no-checkout");
+		if (clone_data->quiet)
+			strvec_push(&cp.args, "--quiet");
+		if (clone_data->progress)
+			strvec_push(&cp.args, "--progress");
+		if (clone_data->depth && *(clone_data->depth))
+			strvec_pushl(&cp.args, "--depth", clone_data->depth, NULL);
+		if (clone_data->reference.nr) {
+			struct string_list_item *item;
+			for_each_string_list_item(item, &clone_data->reference)
+				strvec_pushl(&cp.args, "--reference",
+					     item->string, NULL);
+		}
+		if (clone_data->dissociate)
+			strvec_push(&cp.args, "--dissociate");
+		if (sm_gitdir && *sm_gitdir)
+			strvec_pushl(&cp.args, "--separate-git-dir", sm_gitdir, NULL);
+		if (clone_data->single_branch >= 0)
+			strvec_push(&cp.args, clone_data->single_branch ?
+				    "--single-branch" :
+				    "--no-single-branch");
+
+		strvec_push(&cp.args, "--");
+		strvec_push(&cp.args, clone_data->url);
+		strvec_push(&cp.args, clone_data->path);
+
+		cp.git_cmd = 1;
+		prepare_submodule_repo_env(&cp.env_array);
+		cp.no_stdin = 1;
+
+		if(run_command(&cp))
+			die(_("clone of '%s' into submodule path '%s' failed"),
+			    clone_data->url, clone_data->path);
+	} else {
+		if (clone_data->require_init && !access(clone_data->path, X_OK) &&
+		    !is_empty_dir(clone_data->path))
+			die(_("directory not empty: '%s'"), clone_data->path);
+		if (safe_create_leading_directories_const(clone_data->path) < 0)
+			die(_("could not create directory '%s'"), clone_data->path);
+		strbuf_addf(&sb, "%s/index", sm_gitdir);
+		unlink_or_warn(sb.buf);
+		strbuf_reset(&sb);
+	}
+
+	connect_work_tree_and_git_dir(clone_data->path, sm_gitdir, 0);
+
+	p = git_pathdup_submodule(clone_data->path, "config");
+	if (!p)
+		die(_("could not get submodule directory for '%s'"), clone_data->path);
+
+	/* setup alternateLocation and alternateErrorStrategy in the cloned submodule if needed */
+	git_config_get_string("submodule.alternateLocation", &sm_alternate);
+	if (sm_alternate)
+		git_config_set_in_file(p, "submodule.alternateLocation",
+				       sm_alternate);
+	git_config_get_string("submodule.alternateErrorStrategy", &error_strategy);
+	if (error_strategy)
+		git_config_set_in_file(p, "submodule.alternateErrorStrategy",
+				       error_strategy);
+
+	free(sm_alternate);
+	free(error_strategy);
+
+	strbuf_release(&sb);
+	free(sm_gitdir);
+	free(p);
+	return 0;
+}
+
 static int module_clone(int argc, const char **argv, const char *prefix)
 {
-	const char *name = NULL, *url = NULL, *depth = NULL;
-	int quiet = 0;
-	int progress = 0;
-	char *p, *path = NULL, *sm_gitdir;
-	struct strbuf sb = STRBUF_INIT;
-	struct string_list reference = STRING_LIST_INIT_NODUP;
-	int dissociate = 0, require_init = 0;
-	char *sm_alternate = NULL, *error_strategy = NULL;
-	int single_branch = -1;
+	int dissociate = 0, quiet = 0, progress = 0, require_init = 0;
+	struct module_clone_data clone_data = MODULE_CLONE_DATA_INIT;
 
 	struct option module_clone_options[] = {
-		OPT_STRING(0, "prefix", &prefix,
+		OPT_STRING(0, "prefix", &clone_data.prefix,
 			   N_("path"),
 			   N_("alternative anchor for relative paths")),
-		OPT_STRING(0, "path", &path,
+		OPT_STRING(0, "path", &clone_data.path,
 			   N_("path"),
 			   N_("where the new submodule will be cloned to")),
-		OPT_STRING(0, "name", &name,
+		OPT_STRING(0, "name", &clone_data.name,
 			   N_("string"),
 			   N_("name of the new submodule")),
-		OPT_STRING(0, "url", &url,
+		OPT_STRING(0, "url", &clone_data.url,
 			   N_("string"),
 			   N_("url where to clone the submodule from")),
-		OPT_STRING_LIST(0, "reference", &reference,
+		OPT_STRING_LIST(0, "reference", &clone_data.reference,
 			   N_("repo"),
 			   N_("reference repository")),
 		OPT_BOOL(0, "dissociate", &dissociate,
 			   N_("use --reference only while cloning")),
-		OPT_STRING(0, "depth", &depth,
+		OPT_STRING(0, "depth", &clone_data.depth,
 			   N_("string"),
 			   N_("depth for shallow clones")),
 		OPT__QUIET(&quiet, "Suppress output for cloning a submodule"),
@@ -1840,7 +1907,7 @@
 			   N_("force cloning progress")),
 		OPT_BOOL(0, "require-init", &require_init,
 			   N_("disallow cloning into non-empty directory")),
-		OPT_BOOL(0, "single-branch", &single_branch,
+		OPT_BOOL(0, "single-branch", &clone_data.single_branch,
 			 N_("clone only one branch, HEAD or --branch")),
 		OPT_END()
 	};
@@ -1856,67 +1923,16 @@
 	argc = parse_options(argc, argv, prefix, module_clone_options,
 			     git_submodule_helper_usage, 0);
 
-	if (argc || !url || !path || !*path)
+	clone_data.dissociate = !!dissociate;
+	clone_data.quiet = !!quiet;
+	clone_data.progress = !!progress;
+	clone_data.require_init = !!require_init;
+
+	if (argc || !clone_data.url || !clone_data.path || !*(clone_data.path))
 		usage_with_options(git_submodule_helper_usage,
 				   module_clone_options);
 
-	strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name);
-	sm_gitdir = absolute_pathdup(sb.buf);
-	strbuf_reset(&sb);
-
-	if (!is_absolute_path(path)) {
-		strbuf_addf(&sb, "%s/%s", get_git_work_tree(), path);
-		path = strbuf_detach(&sb, NULL);
-	} else
-		path = xstrdup(path);
-
-	if (validate_submodule_git_dir(sm_gitdir, name) < 0)
-		die(_("refusing to create/use '%s' in another submodule's "
-			"git dir"), sm_gitdir);
-
-	if (!file_exists(sm_gitdir)) {
-		if (safe_create_leading_directories_const(sm_gitdir) < 0)
-			die(_("could not create directory '%s'"), sm_gitdir);
-
-		prepare_possible_alternates(name, &reference);
-
-		if (clone_submodule(path, sm_gitdir, url, depth, &reference, dissociate,
-				    quiet, progress, single_branch))
-			die(_("clone of '%s' into submodule path '%s' failed"),
-			    url, path);
-	} else {
-		if (require_init && !access(path, X_OK) && !is_empty_dir(path))
-			die(_("directory not empty: '%s'"), path);
-		if (safe_create_leading_directories_const(path) < 0)
-			die(_("could not create directory '%s'"), path);
-		strbuf_addf(&sb, "%s/index", sm_gitdir);
-		unlink_or_warn(sb.buf);
-		strbuf_reset(&sb);
-	}
-
-	connect_work_tree_and_git_dir(path, sm_gitdir, 0);
-
-	p = git_pathdup_submodule(path, "config");
-	if (!p)
-		die(_("could not get submodule directory for '%s'"), path);
-
-	/* setup alternateLocation and alternateErrorStrategy in the cloned submodule if needed */
-	git_config_get_string("submodule.alternateLocation", &sm_alternate);
-	if (sm_alternate)
-		git_config_set_in_file(p, "submodule.alternateLocation",
-					   sm_alternate);
-	git_config_get_string("submodule.alternateErrorStrategy", &error_strategy);
-	if (error_strategy)
-		git_config_set_in_file(p, "submodule.alternateErrorStrategy",
-					   error_strategy);
-
-	free(sm_alternate);
-	free(error_strategy);
-
-	strbuf_release(&sb);
-	free(sm_gitdir);
-	free(path);
-	free(p);
+	clone_submodule(&clone_data);
 	return 0;
 }
 
@@ -2745,6 +2761,181 @@
 	return !!ret;
 }
 
+struct add_data {
+	const char *prefix;
+	const char *branch;
+	const char *reference_path;
+	const char *sm_path;
+	const char *sm_name;
+	const char *repo;
+	const char *realrepo;
+	int depth;
+	unsigned int force: 1;
+	unsigned int quiet: 1;
+	unsigned int progress: 1;
+	unsigned int dissociate: 1;
+};
+#define ADD_DATA_INIT { .depth = -1 }
+
+static void show_fetch_remotes(FILE *output, const char *git_dir_path)
+{
+	struct child_process cp_remote = CHILD_PROCESS_INIT;
+	struct strbuf sb_remote_out = STRBUF_INIT;
+
+	cp_remote.git_cmd = 1;
+	strvec_pushf(&cp_remote.env_array,
+		     "GIT_DIR=%s", git_dir_path);
+	strvec_push(&cp_remote.env_array, "GIT_WORK_TREE=.");
+	strvec_pushl(&cp_remote.args, "remote", "-v", NULL);
+	if (!capture_command(&cp_remote, &sb_remote_out, 0)) {
+		char *next_line;
+		char *line = sb_remote_out.buf;
+		while ((next_line = strchr(line, '\n')) != NULL) {
+			size_t len = next_line - line;
+			if (strip_suffix_mem(line, &len, " (fetch)"))
+				fprintf(output, "  %.*s\n", (int)len, line);
+			line = next_line + 1;
+		}
+	}
+
+	strbuf_release(&sb_remote_out);
+}
+
+static int add_submodule(const struct add_data *add_data)
+{
+	char *submod_gitdir_path;
+	struct module_clone_data clone_data = MODULE_CLONE_DATA_INIT;
+
+	/* perhaps the path already exists and is already a git repo, else clone it */
+	if (is_directory(add_data->sm_path)) {
+		struct strbuf sm_path = STRBUF_INIT;
+		strbuf_addstr(&sm_path, add_data->sm_path);
+		submod_gitdir_path = xstrfmt("%s/.git", add_data->sm_path);
+		if (is_nonbare_repository_dir(&sm_path))
+			printf(_("Adding existing repo at '%s' to the index\n"),
+			       add_data->sm_path);
+		else
+			die(_("'%s' already exists and is not a valid git repo"),
+			    add_data->sm_path);
+		strbuf_release(&sm_path);
+		free(submod_gitdir_path);
+	} else {
+		struct child_process cp = CHILD_PROCESS_INIT;
+		submod_gitdir_path = xstrfmt(".git/modules/%s", add_data->sm_name);
+
+		if (is_directory(submod_gitdir_path)) {
+			if (!add_data->force) {
+				fprintf(stderr, _("A git directory for '%s' is found "
+						  "locally with remote(s):"),
+					add_data->sm_name);
+				show_fetch_remotes(stderr, submod_gitdir_path);
+				free(submod_gitdir_path);
+				die(_("If you want to reuse this local git "
+				      "directory instead of cloning again from\n"
+				      "  %s\n"
+				      "use the '--force' option. If the local git "
+				      "directory is not the correct repo\n"
+				      "or if you are unsure what this means, choose "
+				      "another name with the '--name' option.\n"),
+				    add_data->realrepo);
+			} else {
+				printf(_("Reactivating local git directory for "
+					 "submodule '%s'\n"), add_data->sm_name);
+			}
+		}
+		free(submod_gitdir_path);
+
+		clone_data.prefix = add_data->prefix;
+		clone_data.path = add_data->sm_path;
+		clone_data.name = add_data->sm_name;
+		clone_data.url = add_data->realrepo;
+		clone_data.quiet = add_data->quiet;
+		clone_data.progress = add_data->progress;
+		if (add_data->reference_path)
+			string_list_append(&clone_data.reference,
+					   xstrdup(add_data->reference_path));
+		clone_data.dissociate = add_data->dissociate;
+		if (add_data->depth >= 0)
+			clone_data.depth = xstrfmt("%d", add_data->depth);
+
+		if (clone_submodule(&clone_data))
+			return -1;
+
+		prepare_submodule_repo_env(&cp.env_array);
+		cp.git_cmd = 1;
+		cp.dir = add_data->sm_path;
+		strvec_pushl(&cp.args, "checkout", "-f", "-q", NULL);
+
+		if (add_data->branch) {
+			strvec_pushl(&cp.args, "-B", add_data->branch, NULL);
+			strvec_pushf(&cp.args, "origin/%s", add_data->branch);
+		}
+
+		if (run_command(&cp))
+			die(_("unable to checkout submodule '%s'"), add_data->sm_path);
+	}
+	return 0;
+}
+
+static int add_clone(int argc, const char **argv, const char *prefix)
+{
+	int force = 0, quiet = 0, dissociate = 0, progress = 0;
+	struct add_data add_data = ADD_DATA_INIT;
+
+	struct option options[] = {
+		OPT_STRING('b', "branch", &add_data.branch,
+			   N_("branch"),
+			   N_("branch of repository to checkout on cloning")),
+		OPT_STRING(0, "prefix", &prefix,
+			   N_("path"),
+			   N_("alternative anchor for relative paths")),
+		OPT_STRING(0, "path", &add_data.sm_path,
+			   N_("path"),
+			   N_("where the new submodule will be cloned to")),
+		OPT_STRING(0, "name", &add_data.sm_name,
+			   N_("string"),
+			   N_("name of the new submodule")),
+		OPT_STRING(0, "url", &add_data.realrepo,
+			   N_("string"),
+			   N_("url where to clone the submodule from")),
+		OPT_STRING(0, "reference", &add_data.reference_path,
+			   N_("repo"),
+			   N_("reference repository")),
+		OPT_BOOL(0, "dissociate", &dissociate,
+			 N_("use --reference only while cloning")),
+		OPT_INTEGER(0, "depth", &add_data.depth,
+			    N_("depth for shallow clones")),
+		OPT_BOOL(0, "progress", &progress,
+			 N_("force cloning progress")),
+		OPT__FORCE(&force, N_("allow adding an otherwise ignored submodule path"),
+			   PARSE_OPT_NOCOMPLETE),
+		OPT__QUIET(&quiet, "suppress output for cloning a submodule"),
+		OPT_END()
+	};
+
+	const char *const usage[] = {
+		N_("git submodule--helper add-clone [<options>...] "
+		   "--url <url> --path <path> --name <name>"),
+		NULL
+	};
+
+	argc = parse_options(argc, argv, prefix, options, usage, 0);
+
+	if (argc != 0)
+		usage_with_options(usage, options);
+
+	add_data.prefix = prefix;
+	add_data.progress = !!progress;
+	add_data.dissociate = !!dissociate;
+	add_data.force = !!force;
+	add_data.quiet = !!quiet;
+
+	if (add_submodule(&add_data))
+		return 1;
+
+	return 0;
+}
+
 #define SUPPORT_SUPER_PREFIX (1<<0)
 
 struct cmd_struct {
@@ -2757,6 +2948,7 @@
 	{"list", module_list, 0},
 	{"name", module_name, 0},
 	{"clone", module_clone, 0},
+	{"add-clone", add_clone, 0},
 	{"update-module-mode", module_update_module_mode, 0},
 	{"update-clone", update_clone, 0},
 	{"ensure-core-worktree", ensure_core_worktree, 0},
diff --git a/builtin/tag.c b/builtin/tag.c
index 82fcfc0..065b6bf 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -146,7 +146,7 @@
 		      const struct object_id *oid, void *cb_data)
 {
 	int flags;
-	const struct ref_format *format = cb_data;
+	struct ref_format *format = cb_data;
 	flags = GPG_VERIFY_VERBOSE;
 
 	if (format->format)
@@ -293,9 +293,7 @@
 
 		/* write the template message before editing: */
 		path = git_pathdup("TAG_EDITMSG");
-		fd = open(path, O_CREAT | O_TRUNC | O_WRONLY, 0600);
-		if (fd < 0)
-			die_errno(_("could not create file '%s'"), path);
+		fd = xopen(path, O_CREAT | O_TRUNC | O_WRONLY, 0600);
 
 		if (opt->message_given) {
 			write_or_die(fd, buf->buf, buf->len);
diff --git a/builtin/update-index.c b/builtin/update-index.c
index f1f16f2..187203e 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -95,9 +95,7 @@
 {
 	int fd;
 	path = get_mtime_path(path);
-	fd = open(path, O_CREAT | O_RDWR, 0644);
-	if (fd < 0)
-		die_errno(_("failed to create file %s"), path);
+	fd = xopen(path, O_CREAT | O_RDWR, 0644);
 	return fd;
 }
 
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 976bf8e..0d0a80d 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -30,7 +30,7 @@
 	int detach;
 	int quiet;
 	int checkout;
-	int keep_locked;
+	const char *keep_locked;
 };
 
 static int show_only;
@@ -302,10 +302,10 @@
 	 * after the preparation is over.
 	 */
 	strbuf_addf(&sb, "%s/locked", sb_repo.buf);
-	if (!opts->keep_locked)
-		write_file(sb.buf, "initializing");
+	if (opts->keep_locked)
+		write_file(sb.buf, "%s", opts->keep_locked);
 	else
-		write_file(sb.buf, "added with --lock");
+		write_file(sb.buf, _("initializing"));
 
 	strbuf_addf(&sb_git, "%s/.git", path);
 	if (safe_create_leading_directories_const(sb_git.buf))
@@ -475,6 +475,8 @@
 	const char *branch;
 	const char *new_branch = NULL;
 	const char *opt_track = NULL;
+	const char *lock_reason = NULL;
+	int keep_locked = 0;
 	struct option options[] = {
 		OPT__FORCE(&opts.force,
 			   N_("checkout <branch> even if already checked out in other worktree"),
@@ -485,7 +487,9 @@
 			   N_("create or reset a branch")),
 		OPT_BOOL('d', "detach", &opts.detach, N_("detach HEAD at named commit")),
 		OPT_BOOL(0, "checkout", &opts.checkout, N_("populate the new working tree")),
-		OPT_BOOL(0, "lock", &opts.keep_locked, N_("keep the new working tree locked")),
+		OPT_BOOL(0, "lock", &keep_locked, N_("keep the new working tree locked")),
+		OPT_STRING(0, "reason", &lock_reason, N_("string"),
+			   N_("reason for locking")),
 		OPT__QUIET(&opts.quiet, N_("suppress progress reporting")),
 		OPT_PASSTHRU(0, "track", &opt_track, NULL,
 			     N_("set up tracking mode (see git-branch(1))"),
@@ -500,6 +504,13 @@
 	ac = parse_options(ac, av, prefix, options, worktree_usage, 0);
 	if (!!opts.detach + !!new_branch + !!new_branch_force > 1)
 		die(_("-b, -B, and --detach are mutually exclusive"));
+	if (lock_reason && !keep_locked)
+		die(_("--reason requires --lock"));
+	if (lock_reason)
+		opts.keep_locked = lock_reason;
+	else if (keep_locked)
+		opts.keep_locked = _("added with --lock");
+
 	if (ac < 1 || ac > 2)
 		usage_with_options(worktree_usage, options);
 
diff --git a/bulk-checkin.c b/bulk-checkin.c
index 127312a..b023d99 100644
--- a/bulk-checkin.c
+++ b/bulk-checkin.c
@@ -100,6 +100,7 @@
 			  const char *path, unsigned flags)
 {
 	git_zstream s;
+	unsigned char ibuf[16384];
 	unsigned char obuf[16384];
 	unsigned hdrlen;
 	int status = Z_OK;
@@ -113,8 +114,6 @@
 	s.avail_out = sizeof(obuf) - hdrlen;
 
 	while (status != Z_STREAM_END) {
-		unsigned char ibuf[16384];
-
 		if (size && !s.avail_in) {
 			ssize_t rsize = size < sizeof(ibuf) ? size : sizeof(ibuf);
 			ssize_t read_result = read_in_full(fd, ibuf, rsize);
diff --git a/bundle.c b/bundle.c
index 693d619..ab63f40 100644
--- a/bundle.c
+++ b/bundle.c
@@ -23,13 +23,16 @@
 	{ 3, v3_bundle_signature },
 };
 
-static void add_to_ref_list(const struct object_id *oid, const char *name,
-		struct ref_list *list)
+void bundle_header_init(struct bundle_header *header)
 {
-	ALLOC_GROW(list->list, list->nr + 1, list->alloc);
-	oidcpy(&list->list[list->nr].oid, oid);
-	list->list[list->nr].name = xstrdup(name);
-	list->nr++;
+	struct bundle_header blank = BUNDLE_HEADER_INIT;
+	memcpy(header, &blank, sizeof(*header));
+}
+
+void bundle_header_release(struct bundle_header *header)
+{
+	string_list_clear(&header->prerequisites, 1);
+	string_list_clear(&header->references, 1);
 }
 
 static int parse_capability(struct bundle_header *header, const char *capability)
@@ -112,10 +115,11 @@
 			status = -1;
 			break;
 		} else {
+			struct object_id *dup = oiddup(&oid);
 			if (is_prereq)
-				add_to_ref_list(&oid, "", &header->prerequisites);
+				string_list_append(&header->prerequisites, "")->util = dup;
 			else
-				add_to_ref_list(&oid, p + 1, &header->references);
+				string_list_append(&header->references, p + 1)->util = dup;
 		}
 	}
 
@@ -139,33 +143,38 @@
 
 int is_bundle(const char *path, int quiet)
 {
-	struct bundle_header header;
+	struct bundle_header header = BUNDLE_HEADER_INIT;
 	int fd = open(path, O_RDONLY);
 
 	if (fd < 0)
 		return 0;
-	memset(&header, 0, sizeof(header));
 	fd = parse_bundle_header(fd, &header, quiet ? NULL : path);
 	if (fd >= 0)
 		close(fd);
+	bundle_header_release(&header);
 	return (fd >= 0);
 }
 
-static int list_refs(struct ref_list *r, int argc, const char **argv)
+static int list_refs(struct string_list *r, int argc, const char **argv)
 {
 	int i;
 
 	for (i = 0; i < r->nr; i++) {
+		struct object_id *oid;
+		const char *name;
+
 		if (argc > 1) {
 			int j;
 			for (j = 1; j < argc; j++)
-				if (!strcmp(r->list[i].name, argv[j]))
+				if (!strcmp(r->items[i].string, argv[j]))
 					break;
 			if (j == argc)
 				continue;
 		}
-		printf("%s %s\n", oid_to_hex(&r->list[i].oid),
-				r->list[i].name);
+
+		oid = r->items[i].util;
+		name = r->items[i].string;
+		printf("%s %s\n", oid_to_hex(oid), name);
 	}
 	return 0;
 }
@@ -181,7 +190,7 @@
 	 * Do fast check, then if any prereqs are missing then go line by line
 	 * to be verbose about the errors
 	 */
-	struct ref_list *p = &header->prerequisites;
+	struct string_list *p = &header->prerequisites;
 	struct rev_info revs;
 	const char *argv[] = {NULL, "--all", NULL};
 	struct commit *commit;
@@ -193,16 +202,18 @@
 
 	repo_init_revisions(r, &revs, NULL);
 	for (i = 0; i < p->nr; i++) {
-		struct ref_list_entry *e = p->list + i;
-		struct object *o = parse_object(r, &e->oid);
+		struct string_list_item *e = p->items + i;
+		const char *name = e->string;
+		struct object_id *oid = e->util;
+		struct object *o = parse_object(r, oid);
 		if (o) {
 			o->flags |= PREREQ_MARK;
-			add_pending_object(&revs, o, e->name);
+			add_pending_object(&revs, o, name);
 			continue;
 		}
 		if (++ret == 1)
 			error("%s", message);
-		error("%s %s", oid_to_hex(&e->oid), e->name);
+		error("%s %s", oid_to_hex(oid), name);
 	}
 	if (revs.pending.nr != p->nr)
 		return ret;
@@ -218,26 +229,29 @@
 			i--;
 
 	for (i = 0; i < p->nr; i++) {
-		struct ref_list_entry *e = p->list + i;
-		struct object *o = parse_object(r, &e->oid);
+		struct string_list_item *e = p->items + i;
+		const char *name = e->string;
+		const struct object_id *oid = e->util;
+		struct object *o = parse_object(r, oid);
 		assert(o); /* otherwise we'd have returned early */
 		if (o->flags & SHOWN)
 			continue;
 		if (++ret == 1)
 			error("%s", message);
-		error("%s %s", oid_to_hex(&e->oid), e->name);
+		error("%s %s", oid_to_hex(oid), name);
 	}
 
 	/* Clean up objects used, as they will be reused. */
 	for (i = 0; i < p->nr; i++) {
-		struct ref_list_entry *e = p->list + i;
-		commit = lookup_commit_reference_gently(r, &e->oid, 1);
+		struct string_list_item *e = p->items + i;
+		struct object_id *oid = e->util;
+		commit = lookup_commit_reference_gently(r, oid, 1);
 		if (commit)
 			clear_commit_marks(commit, ALL_REV_FLAGS);
 	}
 
 	if (verbose) {
-		struct ref_list *r;
+		struct string_list *r;
 
 		r = &header->references;
 		printf_ln(Q_("The bundle contains this ref:",
diff --git a/bundle.h b/bundle.h
index f9e2d1c..1927d8c 100644
--- a/bundle.h
+++ b/bundle.h
@@ -3,22 +3,23 @@
 
 #include "strvec.h"
 #include "cache.h"
-
-struct ref_list {
-	unsigned int nr, alloc;
-	struct ref_list_entry {
-		struct object_id oid;
-		char *name;
-	} *list;
-};
+#include "string-list.h"
 
 struct bundle_header {
 	unsigned version;
-	struct ref_list prerequisites;
-	struct ref_list references;
+	struct string_list prerequisites;
+	struct string_list references;
 	const struct git_hash_algo *hash_algo;
 };
 
+#define BUNDLE_HEADER_INIT \
+{ \
+	.prerequisites = STRING_LIST_INIT_DUP, \
+	.references = STRING_LIST_INIT_DUP, \
+}
+void bundle_header_init(struct bundle_header *header);
+void bundle_header_release(struct bundle_header *header);
+
 int is_bundle(const char *path, int quiet);
 int read_bundle_header(const char *path, struct bundle_header *header);
 int create_bundle(struct repository *r, const char *path,
diff --git a/cache-tree.c b/cache-tree.c
index 45e5866..90919f9 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -237,6 +237,11 @@
 	return 1;
 }
 
+static int must_check_existence(const struct cache_entry *ce)
+{
+	return !(has_promisor_remote() && ce_skip_worktree(ce));
+}
+
 static int update_one(struct cache_tree *it,
 		      struct cache_entry **cache,
 		      int entries,
@@ -378,8 +383,7 @@
 		}
 
 		ce_missing_ok = mode == S_IFGITLINK || missing_ok ||
-			(has_promisor_remote() &&
-			 ce_skip_worktree(ce));
+			!must_check_existence(ce);
 		if (is_null_oid(oid) ||
 		    (!ce_missing_ok && !has_object_file(oid))) {
 			strbuf_release(&buffer);
@@ -461,11 +465,12 @@
 	if (i)
 		return i;
 
-	ensure_full_index(istate);
-
 	if (!istate->cache_tree)
 		istate->cache_tree = cache_tree();
 
+	if (!(flags & WRITE_TREE_MISSING_OK) && has_promisor_remote())
+		prefetch_cache_entries(istate, must_check_existence);
+
 	trace_performance_enter();
 	trace2_region_enter("cache_tree", "update", the_repository);
 	i = update_one(istate->cache_tree, istate->cache, istate->cache_nr,
diff --git a/cache.h b/cache.h
index ba04ff8..d23de69 100644
--- a/cache.h
+++ b/cache.h
@@ -410,6 +410,15 @@
  */
 void validate_cache_entries(const struct index_state *istate);
 
+/*
+ * Bulk prefetch all missing cache entries that are not GITLINKs and that match
+ * the given predicate. This function should only be called if
+ * has_promisor_remote() returns true.
+ */
+typedef int (*must_prefetch_predicate)(const struct cache_entry *);
+void prefetch_cache_entries(const struct index_state *istate,
+			    must_prefetch_predicate must_prefetch);
+
 #ifdef USE_THE_INDEX_COMPATIBILITY_MACROS
 extern struct index_state the_index;
 
@@ -1246,7 +1255,9 @@
 int raceproof_create_file(const char *path, create_file_fn fn, void *cb);
 
 int mkdir_in_gitdir(const char *path);
-char *expand_user_path(const char *path, int real_home);
+char *interpolate_path(const char *path, int real_home);
+/* NEEDSWORK: remove this synonym once in-flight topics have migrated */
+#define expand_user_path interpolate_path
 const char *enter_repo(const char *path, int strict);
 static inline int is_absolute_path(const char *path)
 {
@@ -1385,6 +1396,7 @@
 };
 
 int repo_get_oid(struct repository *r, const char *str, struct object_id *oid);
+__attribute__((format (printf, 2, 3)))
 int get_oidf(struct object_id *oid, const char *fmt, ...);
 int repo_get_oid_commit(struct repository *r, const char *str, struct object_id *oid);
 int repo_get_oid_committish(struct repository *r, const char *str, struct object_id *oid);
diff --git a/cbtree.h b/cbtree.h
index fe45870..a04a312 100644
--- a/cbtree.h
+++ b/cbtree.h
@@ -25,7 +25,7 @@
 	 */
 	uint32_t byte;
 	uint8_t otherbits;
-	uint8_t k[FLEX_ARRAY]; /* arbitrary data */
+	uint8_t k[FLEX_ARRAY]; /* arbitrary data, unaligned */
 };
 
 struct cb_tree {
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 67852d0..5772081 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -65,6 +65,11 @@
 	sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
 		libexpat-dev gettext make
 	;;
+sparse)
+	sudo apt-get -q update -q
+	sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \
+		libexpat-dev gettext zlib1g-dev
+	;;
 Documentation)
 	sudo apt-get -q update
 	sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make
diff --git a/ci/lib.sh b/ci/lib.sh
index d848c03..476c3f3 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -229,6 +229,7 @@
 	CC=gcc
 	MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3 USE_LIBPCRE2=Yes"
 	MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
+	MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
 	;;
 esac
 
diff --git a/combine-diff.c b/combine-diff.c
index 7d925ce..d93782d 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -403,11 +403,11 @@
 	state->sline[state->nb-1].p_lno[state->n] = state->ob;
 }
 
-static void consume_line(void *state_, char *line, unsigned long len)
+static int consume_line(void *state_, char *line, unsigned long len)
 {
 	struct combine_diff_state *state = state_;
 	if (!state->lost_bucket)
-		return; /* not in any hunk yet */
+		return 0; /* not in any hunk yet */
 	switch (line[0]) {
 	case '-':
 		append_lost(state->lost_bucket, state->n, line+1, len-1);
@@ -417,6 +417,7 @@
 		state->lno++;
 		break;
 	}
+	return 0;
 }
 
 static void combine_diff(struct repository *r,
diff --git a/commit-graph.c b/commit-graph.c
index 2bcb4e0..00614ac 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -723,7 +723,7 @@
 	o->commit_graph = NULL;
 }
 
-static int bsearch_graph(struct commit_graph *g, struct object_id *oid, uint32_t *pos)
+static int bsearch_graph(struct commit_graph *g, const struct object_id *oid, uint32_t *pos)
 {
 	return bsearch_hash(oid->hash, g->chunk_oid_fanout,
 			    g->chunk_oid_lookup, g->hash_len, pos);
@@ -864,28 +864,57 @@
 	return 1;
 }
 
-static int find_commit_in_graph(struct commit *item, struct commit_graph *g, uint32_t *pos)
+static int search_commit_pos_in_graph(const struct object_id *id, struct commit_graph *g, uint32_t *pos)
+{
+	struct commit_graph *cur_g = g;
+	uint32_t lex_index;
+
+	while (cur_g && !bsearch_graph(cur_g, id, &lex_index))
+		cur_g = cur_g->base_graph;
+
+	if (cur_g) {
+		*pos = lex_index + cur_g->num_commits_in_base;
+		return 1;
+	}
+
+	return 0;
+}
+
+static int find_commit_pos_in_graph(struct commit *item, struct commit_graph *g, uint32_t *pos)
 {
 	uint32_t graph_pos = commit_graph_position(item);
 	if (graph_pos != COMMIT_NOT_FROM_GRAPH) {
 		*pos = graph_pos;
 		return 1;
 	} else {
-		struct commit_graph *cur_g = g;
-		uint32_t lex_index;
-
-		while (cur_g && !bsearch_graph(cur_g, &(item->object.oid), &lex_index))
-			cur_g = cur_g->base_graph;
-
-		if (cur_g) {
-			*pos = lex_index + cur_g->num_commits_in_base;
-			return 1;
-		}
-
-		return 0;
+		return search_commit_pos_in_graph(&item->object.oid, g, pos);
 	}
 }
 
+struct commit *lookup_commit_in_graph(struct repository *repo, const struct object_id *id)
+{
+	struct commit *commit;
+	uint32_t pos;
+
+	if (!repo->objects->commit_graph)
+		return NULL;
+	if (!search_commit_pos_in_graph(id, repo->objects->commit_graph, &pos))
+		return NULL;
+	if (!repo_has_object_file(repo, id))
+		return NULL;
+
+	commit = lookup_commit(repo, id);
+	if (!commit)
+		return NULL;
+	if (commit->object.parsed)
+		return commit;
+
+	if (!fill_commit_in_graph(repo, commit, repo->objects->commit_graph, pos))
+		return NULL;
+
+	return commit;
+}
+
 static int parse_commit_in_graph_one(struct repository *r,
 				     struct commit_graph *g,
 				     struct commit *item)
@@ -895,7 +924,7 @@
 	if (item->object.parsed)
 		return 1;
 
-	if (find_commit_in_graph(item, g, &pos))
+	if (find_commit_pos_in_graph(item, g, &pos))
 		return fill_commit_in_graph(r, item, g, pos);
 
 	return 0;
@@ -921,7 +950,7 @@
 	uint32_t pos;
 	if (!prepare_commit_graph(r))
 		return;
-	if (find_commit_in_graph(item, r->objects->commit_graph, &pos))
+	if (find_commit_pos_in_graph(item, r->objects->commit_graph, &pos))
 		fill_commit_graph_info(item, r->objects->commit_graph, pos);
 }
 
@@ -1091,9 +1120,9 @@
 				edge_value += ctx->new_num_commits_in_base;
 			else if (ctx->new_base_graph) {
 				uint32_t pos;
-				if (find_commit_in_graph(parent->item,
-							 ctx->new_base_graph,
-							 &pos))
+				if (find_commit_pos_in_graph(parent->item,
+							     ctx->new_base_graph,
+							     &pos))
 					edge_value = pos;
 			}
 
@@ -1122,9 +1151,9 @@
 				edge_value += ctx->new_num_commits_in_base;
 			else if (ctx->new_base_graph) {
 				uint32_t pos;
-				if (find_commit_in_graph(parent->item,
-							 ctx->new_base_graph,
-							 &pos))
+				if (find_commit_pos_in_graph(parent->item,
+							     ctx->new_base_graph,
+							     &pos))
 					edge_value = pos;
 			}
 
@@ -1235,9 +1264,9 @@
 				edge_value += ctx->new_num_commits_in_base;
 			else if (ctx->new_base_graph) {
 				uint32_t pos;
-				if (find_commit_in_graph(parent->item,
-							 ctx->new_base_graph,
-							 &pos))
+				if (find_commit_pos_in_graph(parent->item,
+							     ctx->new_base_graph,
+							     &pos))
 					edge_value = pos;
 			}
 
@@ -2408,6 +2437,7 @@
 #define VERIFY_COMMIT_GRAPH_ERROR_HASH 2
 static int verify_commit_graph_error;
 
+__attribute__((format (printf, 1, 2)))
 static void graph_report(const char *fmt, ...)
 {
 	va_list ap;
@@ -2422,14 +2452,16 @@
 #define GENERATION_ZERO_EXISTS 1
 #define GENERATION_NUMBER_EXISTS 2
 
+static int commit_graph_checksum_valid(struct commit_graph *g)
+{
+	return hashfile_checksum_valid(g->data, g->data_len);
+}
+
 int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
 {
 	uint32_t i, cur_fanout_pos = 0;
 	struct object_id prev_oid, cur_oid;
-	unsigned char checksum[GIT_MAX_HEXSZ];
 	int generation_zero = 0;
-	struct hashfile *f;
-	int devnull;
 	struct progress *progress = NULL;
 	int local_error = 0;
 
@@ -2442,11 +2474,7 @@
 	if (verify_commit_graph_error)
 		return verify_commit_graph_error;
 
-	devnull = open("/dev/null", O_WRONLY);
-	f = hashfd(devnull, NULL);
-	hashwrite(f, g->data, g->data_len - g->hash_len);
-	finalize_hashfile(f, checksum, CSUM_CLOSE);
-	if (!hasheq(checksum, g->data + g->data_len - g->hash_len)) {
+	if (!commit_graph_checksum_valid(g)) {
 		graph_report(_("the commit-graph file has incorrect checksum and is likely corrupt"));
 		verify_commit_graph_error = VERIFY_COMMIT_GRAPH_ERROR_HASH;
 	}
diff --git a/commit-graph.h b/commit-graph.h
index 96c24fb..04a94e1 100644
--- a/commit-graph.h
+++ b/commit-graph.h
@@ -41,6 +41,14 @@
 int parse_commit_in_graph(struct repository *r, struct commit *item);
 
 /*
+ * Look up the given commit ID in the commit-graph. This will only return a
+ * commit if the ID exists both in the graph and in the object database such
+ * that we don't return commits whose object has been pruned. Otherwise, this
+ * function returns `NULL`.
+ */
+struct commit *lookup_commit_in_graph(struct repository *repo, const struct object_id *id);
+
+/*
  * It is possible that we loaded commit contents from the commit buffer,
  * but we also want to ensure the commit-graph content is correctly
  * checked and filled. Fill the graph_pos and generation members of
diff --git a/commit.c b/commit.c
index 8ea55a4..551de49 100644
--- a/commit.c
+++ b/commit.c
@@ -25,6 +25,7 @@
 static struct commit_extra_header *read_commit_extra_header_lines(const char *buf, size_t len, const char **);
 
 int save_commit_buffer = 1;
+int no_graft_file_deprecated_advice;
 
 const char *commit_type = "commit";
 
@@ -190,7 +191,8 @@
 	struct strbuf buf = STRBUF_INIT;
 	if (!fp)
 		return -1;
-	if (advice_graft_file_deprecated)
+	if (!no_graft_file_deprecated_advice &&
+	    advice_enabled(ADVICE_GRAFT_FILE_DEPRECATED))
 		advise(_("Support for <GIT_DIR>/info/grafts is deprecated\n"
 			 "and will be removed in a future Git version.\n"
 			 "\n"
@@ -1178,7 +1180,7 @@
 	/*
 	 * We could verify this signature and either omit the tag when
 	 * it does not validate, but the integrator may not have the
-	 * public key of the signer of the tag he is merging, while a
+	 * public key of the signer of the tag being merged, while a
 	 * later auditor may have it while auditing, so let's not run
 	 * verify-signed-buffer here for now...
 	 *
diff --git a/commit.h b/commit.h
index df42eb4..3ea3276 100644
--- a/commit.h
+++ b/commit.h
@@ -41,6 +41,7 @@
 };
 
 extern int save_commit_buffer;
+extern int no_graft_file_deprecated_advice;
 extern const char *commit_type;
 
 /* While we can decorate any object with a name, it's only used for commits.. */
diff --git a/compat/linux/procinfo.c b/compat/linux/procinfo.c
new file mode 100644
index 0000000..578fed4
--- /dev/null
+++ b/compat/linux/procinfo.c
@@ -0,0 +1,55 @@
+#include "cache.h"
+
+#include "strbuf.h"
+#include "strvec.h"
+#include "trace2.h"
+
+static void get_ancestry_names(struct strvec *names)
+{
+	/*
+	 * NEEDSWORK: We could gather the entire pstree into an array to match
+	 * functionality with compat/win32/trace2_win32_process_info.c.
+	 * To do so, we may want to examine /proc/<pid>/stat. For now, just
+	 * gather the immediate parent name which is readily accessible from
+	 * /proc/$(getppid())/comm.
+	 */
+	struct strbuf procfs_path = STRBUF_INIT;
+	struct strbuf name = STRBUF_INIT;
+
+	/* try to use procfs if it's present. */
+	strbuf_addf(&procfs_path, "/proc/%d/comm", getppid());
+	if (strbuf_read_file(&name, procfs_path.buf, 0)) {
+		strbuf_release(&procfs_path);
+		strbuf_trim_trailing_newline(&name);
+		strvec_push(names, strbuf_detach(&name, NULL));
+	}
+
+	return;
+	/* NEEDSWORK: add non-procfs-linux implementations here */
+}
+
+void trace2_collect_process_info(enum trace2_process_info_reason reason)
+{
+	if (!trace2_is_enabled())
+		return;
+
+	/* someday we may want to write something extra here, but not today */
+	if (reason == TRACE2_PROCESS_INFO_EXIT)
+		return;
+
+	if (reason == TRACE2_PROCESS_INFO_STARTUP) {
+		/*
+		 * NEEDSWORK: we could do the entire ptree in an array instead,
+		 * see compat/win32/trace2_win32_process_info.c.
+		 */
+		struct strvec names = STRVEC_INIT;
+
+		get_ancestry_names(&names);
+
+		if (names.nr)
+			trace2_cmd_ancestry(names.v);
+		strvec_clear(&names);
+	}
+
+	return;
+}
diff --git a/compat/mingw.c b/compat/mingw.c
index aa647b3..9e0cd1e 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -341,6 +341,27 @@
 {
 	int ret, tries = 0;
 	wchar_t wpathname[MAX_PATH];
+	struct stat st;
+
+	/*
+	 * Contrary to Linux' `rmdir()`, Windows' _wrmdir() and _rmdir()
+	 * (and `RemoveDirectoryW()`) will attempt to remove the target of a
+	 * symbolic link (if it points to a directory).
+	 *
+	 * This behavior breaks the assumption of e.g. `remove_path()` which
+	 * upon successful deletion of a file will attempt to remove its parent
+	 * directories recursively until failure (which usually happens when
+	 * the directory is not empty).
+	 *
+	 * Therefore, before calling `_wrmdir()`, we first check if the path is
+	 * a symbolic link. If it is, we exit and return the same error as
+	 * Linux' `rmdir()` would, i.e. `ENOTDIR`.
+	 */
+	if (!mingw_lstat(pathname, &st) && S_ISLNK(st.st_mode)) {
+		errno = ENOTDIR;
+		return -1;
+	}
+
 	if (xutftowcs_path(wpathname, pathname) < 0)
 		return -1;
 
diff --git a/compat/mmap.c b/compat/mmap.c
index 14d3101..8d6c02d 100644
--- a/compat/mmap.c
+++ b/compat/mmap.c
@@ -7,7 +7,12 @@
 	if (start != NULL || flags != MAP_PRIVATE || prot != PROT_READ)
 		die("Invalid usage of mmap when built with NO_MMAP");
 
-	start = xmalloc(length);
+	if (length == 0) {
+		errno = EINVAL;
+		return MAP_FAILED;
+	}
+
+	start = malloc(length);
 	if (start == NULL) {
 		errno = ENOMEM;
 		return MAP_FAILED;
diff --git a/compat/stub/procinfo.c b/compat/stub/procinfo.c
new file mode 100644
index 0000000..12c0a23
--- /dev/null
+++ b/compat/stub/procinfo.c
@@ -0,0 +1,11 @@
+#include "git-compat-util.h"
+
+#include "trace2.h"
+
+/*
+ * Stub. See sample implementations in compat/linux/procinfo.c and
+ * compat/win32/trace2_win32_process_info.c.
+ */
+void trace2_collect_process_info(enum trace2_process_info_reason reason)
+{
+}
diff --git a/config.c b/config.c
index f9c400a..cb4a805 100644
--- a/config.c
+++ b/config.c
@@ -137,7 +137,7 @@
 	if (!path)
 		return config_error_nonbool("include.path");
 
-	expanded = expand_user_path(path, 0);
+	expanded = interpolate_path(path, 0);
 	if (!expanded)
 		return error(_("could not expand include path '%s'"), path);
 	path = expanded;
@@ -185,7 +185,7 @@
 	char *expanded;
 	int prefix = 0;
 
-	expanded = expand_user_path(pat->buf, 1);
+	expanded = interpolate_path(pat->buf, 1);
 	if (expanded) {
 		strbuf_reset(pat);
 		strbuf_addstr(pat, expanded);
@@ -1270,7 +1270,7 @@
 {
 	if (!value)
 		return config_error_nonbool(var);
-	*dest = expand_user_path(value, 0);
+	*dest = interpolate_path(value, 0);
 	if (!*dest)
 		die(_("failed to expand user dir in: '%s'"), value);
 	return 0;
@@ -1833,9 +1833,10 @@
 char *git_system_config(void)
 {
 	char *system_config = xstrdup_or_null(getenv("GIT_CONFIG_SYSTEM"));
-	if (system_config)
-		return system_config;
-	return system_path(ETC_GITCONFIG);
+	if (!system_config)
+		system_config = system_path(ETC_GITCONFIG);
+	normalize_path_copy(system_config, system_config);
+	return system_config;
 }
 
 void git_global_config(char **user_out, char **xdg_out)
@@ -1844,7 +1845,7 @@
 	char *xdg_config = NULL;
 
 	if (!user_config) {
-		user_config = expand_user_path("~/.gitconfig", 0);
+		user_config = interpolate_path("~/.gitconfig", 0);
 		xdg_config = xdg_config_home("config");
 	}
 
@@ -2072,7 +2073,7 @@
 		e = xmalloc(sizeof(*e));
 		hashmap_entry_init(&e->ent, strhash(key));
 		e->key = xstrdup(key);
-		string_list_init(&e->value_list, 1);
+		string_list_init_dup(&e->value_list);
 		hashmap_add(&cs->config_hash, &e->ent);
 	}
 	si = string_list_append_nodup(&e->value_list, xstrdup_or_null(value));
@@ -2837,7 +2838,7 @@
 	begin = store->parsed[i].begin;
 
 	/*
-	 * Next, make sure that we are removing he last key(s) in the section,
+	 * Next, make sure that we are removing the last key(s) in the section,
 	 * and that there are no comments that are possibly about the current
 	 * section.
 	 */
@@ -3051,7 +3052,8 @@
 		if (contents == MAP_FAILED) {
 			if (errno == ENODEV && S_ISDIR(st.st_mode))
 				errno = EISDIR;
-			error_errno(_("unable to mmap '%s'"), config_filename);
+			error_errno(_("unable to mmap '%s'%s"),
+					config_filename, mmap_os_err());
 			ret = CONFIG_INVALID_FILE;
 			contents = NULL;
 			goto out_free;
diff --git a/config.h b/config.h
index 9038538..a2200f3 100644
--- a/config.h
+++ b/config.h
@@ -450,8 +450,8 @@
 /**
  * Parses the file and adds the variable-value pairs to the `config_set`,
  * dies if there is an error in parsing the file. Returns 0 on success, or
- * -1 if the file does not exist or is inaccessible. The user has to decide
- * if he wants to free the incomplete configset or continue using it when
+ * -1 if the file does not exist or is inaccessible. The caller decides
+ * whether to free the incomplete configset or continue using it when
  * the function returns -1.
  */
 int git_configset_add_file(struct config_set *cs, const char *filename);
diff --git a/config.mak.uname b/config.mak.uname
index cb443b4..76516aa 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -58,6 +58,8 @@
 	FREAD_READS_DIRECTORIES = UnfortunatelyYes
 	BASIC_CFLAGS += -DHAVE_SYSINFO
 	PROCFS_EXECUTABLE_PATH = /proc/self/exe
+	HAVE_PLATFORM_PROCINFO = YesPlease
+	COMPAT_OBJS += compat/linux/procinfo.o
 endif
 ifeq ($(uname_S),GNU/kFreeBSD)
 	HAVE_ALLOCA_H = YesPlease
@@ -437,6 +439,11 @@
 	NO_POSIX_GOODIES = UnfortunatelyYes
 	NATIVE_CRLF = YesPlease
 	DEFAULT_HELP_FORMAT = html
+ifeq (/mingw64,$(subst 32,64,$(prefix)))
+	# Move system config into top-level /etc/
+	ETC_GITCONFIG = ../etc/gitconfig
+	ETC_GITATTRIBUTES = ../etc/gitattributes
+endif
 
 	CC = compat/vcbuild/scripts/clink.pl
 	AR = compat/vcbuild/scripts/lib.pl
@@ -612,6 +619,7 @@
 	ETAGS_TARGET = ETAGS
 	NO_POSIX_GOODIES = UnfortunatelyYes
 	DEFAULT_HELP_FORMAT = html
+	HAVE_PLATFORM_PROCINFO = YesPlease
 	BASIC_LDFLAGS += -municode
 	COMPAT_CFLAGS += -DNOGDI -Icompat -Icompat/win32
 	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
@@ -668,9 +676,14 @@
 		HAVE_LIBCHARSET_H = YesPlease
 		NO_GETTEXT =
 		USE_GETTEXT_SCHEME = fallthrough
-		USE_LIBPCRE= YesPlease
+		USE_LIBPCRE = YesPlease
 		NO_CURL =
 		USE_NED_ALLOCATOR = YesPlease
+		ifeq (/mingw64,$(subst 32,64,$(prefix)))
+			# Move system config into top-level /etc/
+			ETC_GITCONFIG = ../etc/gitconfig
+			ETC_GITATTRIBUTES = ../etc/gitattributes
+		endif
 	else
 		COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO
 		NO_CURL = YesPlease
diff --git a/connect.c b/connect.c
index 70b1338..aff13a2 100644
--- a/connect.c
+++ b/connect.c
@@ -164,6 +164,8 @@
 		BUG("unknown protocol version");
 	}
 
+	trace2_data_intmax("transfer", NULL, "negotiated-version", version);
+
 	return version;
 }
 
diff --git a/connected.c b/connected.c
index b18299f..b5f9523 100644
--- a/connected.c
+++ b/connected.c
@@ -106,6 +106,7 @@
 	if (opt->progress)
 		strvec_pushf(&rev_list.args, "--progress=%s",
 			     _("Checking connectivity"));
+	strvec_push(&rev_list.args, "--unsorted-input");
 
 	rev_list.git_cmd = 1;
 	rev_list.env = opt->env;
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index a878413..171b412 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -43,14 +43,27 @@
 to use another tool say `ninja` add this to the command line when configuring.
 `-G Ninja`
 
+NOTE: By default CMake will install vcpkg locally to your source tree on configuration,
+to avoid this, add `-DNO_VCPKG=TRUE` to the command line when configuring.
+
 ]]
 cmake_minimum_required(VERSION 3.14)
 
 #set the source directory to root of git
 set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
-if(WIN32)
+
+option(USE_VCPKG "Whether or not to use vcpkg for obtaining dependencies.  Only applicable to Windows platforms" ON)
+if(NOT WIN32)
+	set(USE_VCPKG OFF CACHE BOOL FORCE)
+endif()
+
+if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS)
+	set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
+endif()
+
+if(USE_VCPKG)
 	set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg")
-	if(MSVC AND NOT EXISTS ${VCPKG_DIR})
+	if(NOT EXISTS ${VCPKG_DIR})
 		message("Initializing vcpkg and building the Git's dependencies (this will take a while...)")
 		execute_process(COMMAND ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg_install.bat)
 	endif()
@@ -176,12 +189,18 @@
 	endif()
 endif()
 
-find_program(MSGFMT_EXE msgfmt)
-if(NOT MSGFMT_EXE)
-	set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
-	if(NOT EXISTS ${MSGFMT_EXE})
-		message(WARNING "Text Translations won't be built")
-		unset(MSGFMT_EXE)
+if(NO_GETTEXT)
+	message(STATUS "msgfmt not used under NO_GETTEXT")
+else()
+	find_program(MSGFMT_EXE msgfmt)
+	if(NOT MSGFMT_EXE)
+		if(USE_VCPKG)
+			set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
+		endif()
+		if(NOT EXISTS ${MSGFMT_EXE})
+			message(WARNING "Text Translations won't be built")
+			unset(MSGFMT_EXE)
+		endif()
 	endif()
 endif()
 
@@ -204,8 +223,6 @@
 
 
 add_compile_definitions(PAGER_ENV="LESS=FRX LV=-c"
-			ETC_GITATTRIBUTES="etc/gitattributes"
-			ETC_GITCONFIG="etc/gitconfig"
 			GIT_EXEC_PATH="libexec/git-core"
 			GIT_LOCALE_PATH="share/locale"
 			GIT_MAN_PATH="share/man"
@@ -220,10 +237,15 @@
 
 if(WIN32)
 	set(FALLBACK_RUNTIME_PREFIX /mingw64)
-	add_compile_definitions(FALLBACK_RUNTIME_PREFIX="${FALLBACK_RUNTIME_PREFIX}")
+	# Move system config into top-level /etc/
+	add_compile_definitions(FALLBACK_RUNTIME_PREFIX="${FALLBACK_RUNTIME_PREFIX}"
+		ETC_GITATTRIBUTES="../etc/gitattributes"
+		ETC_GITCONFIG="../etc/gitconfig")
 else()
 	set(FALLBACK_RUNTIME_PREFIX /home/$ENV{USER})
-	add_compile_definitions(FALLBACK_RUNTIME_PREFIX="${FALLBACK_RUNTIME_PREFIX}")
+	add_compile_definitions(FALLBACK_RUNTIME_PREFIX="${FALLBACK_RUNTIME_PREFIX}"
+		ETC_GITATTRIBUTES="etc/gitattributes"
+		ETC_GITCONFIG="etc/gitconfig")
 endif()
 
 
@@ -982,7 +1004,7 @@
 file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "RUNTIME_PREFIX='${RUNTIME_PREFIX}'\n")
 file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PYTHON='${NO_PYTHON}'\n")
 file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "SUPPORTS_SIMPLE_IPC='${SUPPORTS_SIMPLE_IPC}'\n")
-if(WIN32)
+if(USE_VCPKG)
 	file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
 endif()
 
diff --git a/contrib/coccinelle/xopen.cocci b/contrib/coccinelle/xopen.cocci
new file mode 100644
index 0000000..814d7b8
--- /dev/null
+++ b/contrib/coccinelle/xopen.cocci
@@ -0,0 +1,16 @@
+@@
+identifier fd;
+identifier die_fn =~ "^(die|die_errno)$";
+@@
+(
+  fd =
+- open
++ xopen
+  (...);
+|
+  int fd =
+- open
++ xopen
+  (...);
+)
+- if ( \( fd < 0 \| fd == -1 \) ) { die_fn(...); }
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index b50c5d0..8108eda 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -356,7 +356,7 @@
 	local cur_="${3-$cur}"
 
 	case "$cur_" in
-	--*=)
+	*=)
 		;;
 	--no-*)
 		local c i=0 IFS=$' \t\n'
@@ -421,7 +421,7 @@
 	local incl="${2-}"
 	local excl="${3-}"
 
-	local var=__gitcomp_builtin_"${cmd/-/_}"
+	local var=__gitcomp_builtin_"${cmd//-/_}"
 	local options
 	eval "options=\${$var-}"
 
@@ -1729,6 +1729,7 @@
 			--indent-heuristic --no-indent-heuristic
 			--textconv --no-textconv
 			--patch --no-patch
+			--anchored=
 "
 
 __git_diff_difftool_options="--cached --staged --pickaxe-all --pickaxe-regex
@@ -2649,10 +2650,10 @@
 		return
 		;;
 	branch.*)
-		local pfx="${cur%.*}."
-		cur_="${cur#*.}"
+		local pfx="${cur_%.*}."
+		cur_="${cur_#*.}"
 		__gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")"
-		__gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "$sfx"
+		__gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "${sfx- }"
 		return
 		;;
 	guitool.*.*)
@@ -2686,7 +2687,7 @@
 		local pfx="${cur_%.*}."
 		cur_="${cur_#*.}"
 		__git_compute_all_commands
-		__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "$sfx"
+		__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "${sfx- }"
 		return
 		;;
 	remote.*.*)
@@ -2702,7 +2703,7 @@
 		local pfx="${cur_%.*}."
 		cur_="${cur_#*.}"
 		__gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
-		__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "$sfx"
+		__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "${sfx- }"
 		return
 		;;
 	url.*.*)
@@ -3512,6 +3513,7 @@
 __git_func_wrap ()
 {
 	local cur words cword prev
+	local __git_cmd_idx=0
 	_get_comp_words_by_ref -n =: cur words cword prev
 	$1
 }
diff --git a/contrib/completion/git-completion.tcsh b/contrib/completion/git-completion.tcsh
index 4a790d8..ba797e5 100644
--- a/contrib/completion/git-completion.tcsh
+++ b/contrib/completion/git-completion.tcsh
@@ -80,8 +80,9 @@
 	COMP_CWORD=\$((\${#COMP_WORDS[@]}-1))
 fi
 
-# Call _git() or _gitk() of the bash script, based on the first argument
-_\${1}
+# Call __git_wrap__git_main() or __git_wrap__gitk_main() of the bash script,
+# based on the first argument
+__git_wrap__\${1}_main
 
 IFS=\$'\n'
 if [ \${#COMPREPLY[*]} -eq 0 ]; then
diff --git a/contrib/credential/osxkeychain/git-credential-osxkeychain.c b/contrib/credential/osxkeychain/git-credential-osxkeychain.c
index bcd3f57..0b44a9b 100644
--- a/contrib/credential/osxkeychain/git-credential-osxkeychain.c
+++ b/contrib/credential/osxkeychain/git-credential-osxkeychain.c
@@ -10,6 +10,7 @@
 static char *password;
 static UInt16 port;
 
+__attribute__((format (printf, 1, 2)))
 static void die(const char *err, ...)
 {
 	char msg[4096];
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 5bdad41..5091048 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -11,6 +11,7 @@
 
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
 
+__attribute__((format (printf, 1, 2)))
 static void die(const char *err, ...)
 {
 	char msg[4096];
diff --git a/contrib/hooks/multimail/CHANGES b/contrib/hooks/multimail/CHANGES
deleted file mode 100644
index 35791fd..0000000
--- a/contrib/hooks/multimail/CHANGES
+++ /dev/null
@@ -1,285 +0,0 @@
-Release 1.5.0
-=============
-
-Backward-incompatible change
-----------------------------
-
-The name of classes for environment was misnamed as `*Environement`.
-It is now `*Environment`.
-
-New features
-------------
-
-* A Thread-Index header is now added to each email sent (except for
-  combined emails where it would not make sense), so that MS Outlook
-  properly groups messages by threads even though they have a
-  different subject line. Unfortunately, even adding this header the
-  threading still seems to be unreliable, but it is unclear whether
-  this is an issue on our side or on MS Outlook's side (see discussion
-  here: https://github.com/git-multimail/git-multimail/pull/194).
-
-* A new variable multimailhook.ExcludeMergeRevisions was added to send
-  notification emails only for non-merge commits.
-
-* For gitolite environment, it is now possible to specify the mail map
-  in a separate file in addition to gitolite.conf, using the variable
-  multimailhook.MailaddressMap.
-
-Internal changes
-----------------
-
-* The testsuite now uses GIT_PRINT_SHA1_ELLIPSIS where needed for
-  compatibility with recent Git versions. Only tests are affected.
-
-* We don't try to install pyflakes in the continuous integration job
-  for old Python versions where it's no longer available.
-
-* Stop using the deprecated cgi.escape in Python 3.
-
-* New flake8 warnings have been fixed.
-
-* Python 3.6 is now tested against on Travis-CI.
-
-* A bunch of lgtm.com warnings have been fixed.
-
-Bug fixes
----------
-
-* SMTPMailer logs in only once now. It used to re-login for each email
-  sent which triggered errors for some SMTP servers.
-
-* migrate-mailhook-config was broken by internal refactoring, it
-  should now work again.
-
-This version was tested with Python 2.6 to 3.7. It was tested with Git
-1.7.10.406.gdc801, 2.15.1 and 2.20.1.98.gecbdaf0.
-
-Release 1.4.0
-=============
-
-New features to troubleshoot a git-multimail installation
----------------------------------------------------------
-
-* One can now perform a basic check of git-multimail's setup by
-  running the hook with the environment variable
-  GIT_MULTIMAIL_CHECK_SETUP set to a non-empty string. See
-  doc/troubleshooting.rst for details.
-
-* A new log files system was added. See the multimailhook.logFile,
-  multimailhook.errorLogFile and multimailhook.debugLogFile variables.
-
-* git_multimail.py can now be made more verbose using
-  multimailhook.verbose.
-
-* A new option --check-ref-filter is now available to help debugging
-  the refFilter* options.
-
-Formatting emails
------------------
-
-* Formatting of emails was made slightly more compact, to reduce the
-  odds of having long subject lines truncated or wrapped in short list
-  of commits.
-
-* multimailhook.emailPrefix may now use the '%(repo_shortname)s'
-  placeholder for the repository's short name.
-
-* A new option multimailhook.subjectMaxLength is available to truncate
-  overly long subject lines.
-
-Bug fixes and minor changes
----------------------------
-
-* Options refFilterDoSendRegex and refFilterDontSendRegex were
-  essentially broken. They should work now.
-
-* The behavior when both refFilter{Do,Dont}SendRegex and
-  refFilter{Exclusion,Inclusion}Regex are set have been slightly
-  changed. Exclusion/Inclusion is now strictly stronger than
-  DoSend/DontSend.
-
-* The management of precedence when a setting can be computed in
-  multiple ways has been considerably refactored and modified.
-  multimailhook.from and multimailhook.reponame now have precedence
-  over the environment-specific settings ($GL_REPO/$GL_USER for
-  gitolite, --stash-user/repo for Stash, --submitter/--project for
-  Gerrit).
-
-* The coverage of the testsuite has been considerably improved. All
-  configuration variables now appear at least once in the testsuite.
-
-This version was tested with Python 2.6 to 3.5. It also mostly works
-with Python 2.4, but there is one known breakage in the testsuite
-related to non-ascii characters. It was tested with Git
-1.7.10.406.gdc801, 1.8.5.6, 2.1.4, and 2.10.0.rc0.1.g07c9292.
-
-Release 1.3.1 (bugfix-only release)
-===================================
-
-* Generate links to commits in combined emails (it was done only for
-  commit emails in 1.3.0).
-
-* Fix broken links on PyPi.
-
-Release 1.3.0
-=============
-
-* New options multimailhook.htmlInIntro and multimailhook.htmlInFooter
-  now allow using HTML in the introduction and footer of emails (e.g.
-  for a more pleasant formatting or to insert a link to the commit on
-  a web interface).
-
-* A new option multimailhook.commitBrowseURL gives a simpler (and less
-  flexible) way to add a link to a web interface for commit emails
-  than multimailhook.htmlInIntro and multimailhook.htmlInFooter.
-
-* A new public function config.add_config_parameters was added to
-  allow custom hooks to set specific Git configuration variables
-  without modifying the configuration files. See an example in
-  post-receive.example.
-
-* Error handling for SMTP has been improved (we used to print Python
-  backtraces for legitimate errors).
-
-* The SMTP mailer can now check TLS certificates when the newly added
-  configuration variable multimailhook.smtpCACerts.
-
-* Python 3 portability has been improved.
-
-* The documentation's formatting has been improved.
-
-* The testsuite has been improved (we now use pyflakes to check for
-  errors in the code).
-
-This version has been tested with Python 2.4 and 2.6 to 3.5, and Git
-v1.7.10-406-gdc801e7, 2.1.4 and 2.8.1.339.g3ad15fd.
-
-No change since 1.3 RC1.
-
-Release 1.2.0
-=============
-
-* It is now possible to exclude some refs (e.g. exclude some branches
-  or tags). See refFilterDoSendRegex, refFilterDontSendRegex,
-  refFilterInclusionRegex and refFilterExclusionRegex.
-
-* New commitEmailFormat option which can be set to "html" to generate
-  simple colorized diffs using HTML for the commit emails.
-
-* git-multimail can now be ran as a Gerrit ref-updated hook, or from
-  Atlassian BitBucket Server (formerly known as Atlassian Stash).
-
-* The From: field is now more customizeable. It can be set
-  independently for refchange emails and commit emails (see
-  fromCommit, fromRefChange). The special values pusher and author can
-  be used in these configuration variable.
-
-* A new command-line option, --version, was added. The version is also
-  available in the X-Git-Multimail-Version header of sent emails.
-
-* Set X-Git-NotificationType header to differentiate the various types
-  of notifications. Current values are: diff, ref_changed_plus_diff,
-  ref_changed.
-
-* Preliminary support for Python 3. The testsuite passes with Python 3,
-  but it has not received as much testing as the Python 2 version yet.
-
-* Several encoding-related fixes. UTF-8 characters work in more
-  situations (but non-ascii characters in email address are still not
-  supported).
-
-* The testsuite and its documentation has been greatly improved.
-
-Plus all the bugfixes from version 1.1.1.
-
-This version has been tested with Python 2.4 and 2.6 to 3.5, and Git
-v1.7.10-406-gdc801e7, git-1.8.2.3 and 2.6.0. Git versions prior to
-v1.7.10-406-gdc801e7 probably work, but cannot run the testsuite
-properly.
-
-Release 1.1.1 (bugfix-only release)
-===================================
-
-* The SMTP mailer was not working with Python 2.4.
-
-Release 1.1.0
-=============
-
-* When a single commit is pushed, omit the reference changed email.
-  Set multimailhook.combineWhenSingleCommit to false to disable this
-  new feature.
-
-* In gitolite environments, the pusher's email address can be used as
-  the From address by creating a specially formatted comment block in
-  gitolite.conf (see multimailhook.from in README).
-
-* Support for SMTP authentication and SSL/TLS encryption was added,
-  see smtpUser, smtpPass, smtpEncryption in README.
-
-* A new option scanCommitForCc was added to allow git-multimail to
-  search the commit message for 'Cc: ...' lines, and add the
-  corresponding emails in Cc.
-
-* If $USER is not set, use the variable $USERNAME. This is needed on
-  Windows platform to recognize the pusher.
-
-* The emailPrefix variable can now be set to an empty string to remove
-  the prefix.
-
-* A short tutorial was added in doc/gitolite.rst to set up
-  git-multimail with gitolite.
-
-* The post-receive file was renamed to post-receive.example. It has
-  always been an example (the standard way to call git-multimail is to
-  call git_multimail.py), but it was unclear to many users.
-
-* A new refchangeShowGraph option was added to make it possible to
-  include both a graph and a log in the summary emails.  The options
-  to control the graph formatting can be set via the new graphOpts
-  option.
-
-* New option --force-send was added to disable new commit detection
-  for update hook. One use-case is to run git_multimail.py after
-  running "git fetch" to send emails about commits that have just been
-  fetched (the detection of new commits was unreliable in this mode).
-
-* The testing infrastructure was considerably improved (continuous
-  integration with travis-ci, automatic check of PEP8 and RST syntax,
-  many improvements to the test scripts).
-
-This version has been tested with Python 2.4 to 2.7, and Git 1.7.1 to
-2.4.
-
-Release 1.0.0
-=============
-
-* Fix encoding of non-ASCII email addresses in email headers.
-
-* Fix backwards-compatibility bugs for older Python 2.x versions.
-
-* Fix a backwards-compatibility bug for Git 1.7.1.
-
-* Add an option commitDiffOpts to customize logs for revisions.
-
-* Pass "-oi" to sendmail by default to prevent premature termination
-  on a line containing only ".".
-
-* Stagger email "Date:" values in an attempt to help mail clients
-  thread the emails in the right order.
-
-* If a mailing list setting is missing, just skip sending the
-  corresponding email (with a warning) instead of failing.
-
-* Add a X-Git-Host header that can be used for email filtering.
-
-* Allow the sender's fully-qualified domain name to be configured.
-
-* Minor documentation improvements.
-
-* Add this CHANGES file.
-
-
-Release 0.9.0
-=============
-
-* Initial release.
diff --git a/contrib/hooks/multimail/CONTRIBUTING.rst b/contrib/hooks/multimail/CONTRIBUTING.rst
deleted file mode 100644
index de20a54..0000000
--- a/contrib/hooks/multimail/CONTRIBUTING.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-Contributing
-============
-
-git-multimail is an open-source project, built by volunteers. We would
-welcome your help!
-
-The current maintainers are `Matthieu Moy <http://matthieu-moy.fr>`__ and
-`Michael Haggerty <https://github.com/mhagger>`__.
-
-Please note that although a copy of git-multimail is distributed in
-the "contrib" section of the main Git project, development takes place
-in a separate `git-multimail repository on GitHub`_.
-
-Whenever enough changes to git-multimail have accumulated, a new
-code-drop of git-multimail will be submitted for inclusion in the Git
-project.
-
-We use the GitHub issue tracker to keep track of bugs and feature
-requests, and we use GitHub pull requests to exchange patches (though,
-if you prefer, you can send patches via the Git mailing list with CC
-to the maintainers). Please sign off your patches as per the `Git
-project practice
-<https://github.com/git/git/blob/master/Documentation/SubmittingPatches#L234>`__.
-
-Please vote for issues you would like to be addressed in priority
-(click "add your reaction" and then the "+1" thumbs-up button on the
-GitHub issue).
-
-General discussion of git-multimail can take place on the main `Git
-mailing list`_.
-
-Please CC emails regarding git-multimail to the maintainers so that we
-don't overlook them.
-
-Help needed: testers/maintainer for specific environments/OS
-------------------------------------------------------------
-
-The current maintainer uses and tests git-multimail on Linux with the
-Generic environment. More testers, or better contributors are needed
-to test git-multimail on other real-life setups:
-
-* Mac OS X, Windows: git-multimail is currently not supported on these
-  platforms. But since we have no external dependencies and try to
-  write code as portable as possible, it is possible that
-  git-multimail already runs there and if not, it is likely that it
-  could be ported easily.
-
-  Patches to improve support for Windows and OS X are welcome.
-  Ideally, there would be a sub-maintainer for each OS who would test
-  at least once before each release (around twice a year).
-
-* Gerrit, Stash, Gitolite environments: although the testsuite
-  contains tests for these environments, a tester/maintainer for each
-  environment would be welcome to test and report failure (or success)
-  on real-life environments periodically (here also, feedback before
-  each release would be highly appreciated).
-
-
-.. _`git-multimail repository on GitHub`: https://github.com/git-multimail/git-multimail
-.. _`Git mailing list`: git@vger.kernel.org
diff --git a/contrib/hooks/multimail/README.Git b/contrib/hooks/multimail/README.Git
index 0444442..c427efc 100644
--- a/contrib/hooks/multimail/README.Git
+++ b/contrib/hooks/multimail/README.Git
@@ -1,15 +1,7 @@
-This copy of git-multimail is distributed as part of the "contrib"
-section of the Git project as a convenience to Git users.
 git-multimail is developed as an independent project at the following
 website:
 
     https://github.com/git-multimail/git-multimail
 
-The version in this directory was obtained from the upstream project
-on January 07 2019 and consists of the "git-multimail" subdirectory from
-revision
-
-    04e80e6c40be465cc62b6c246f0fcb8fd2cfd454 refs/tags/1.5.0
-
-Please see the README file in this directory for information about how
-to report bugs or contribute to git-multimail.
+Please refer to that project page for information about how to report
+bugs or contribute to git-multimail.
diff --git a/contrib/hooks/multimail/README.migrate-from-post-receive-email b/contrib/hooks/multimail/README.migrate-from-post-receive-email
deleted file mode 100644
index 1e6a976..0000000
--- a/contrib/hooks/multimail/README.migrate-from-post-receive-email
+++ /dev/null
@@ -1,145 +0,0 @@
-git-multimail is close to, but not exactly, a plug-in replacement for
-the old Git project script contrib/hooks/post-receive-email.  This
-document describes the differences and explains how to configure
-git-multimail to get behavior closest to that of post-receive-email.
-
-If you are in a hurry
-=====================
-
-A script called migrate-mailhook-config is included with
-git-multimail.  If you run this script within a Git repository that is
-configured to use post-receive-email, it will convert the
-configuration settings into the approximate equivalent settings for
-git-multimail.  For more information, run
-
-    migrate-mailhook-config --help
-
-
-Configuration differences
-=========================
-
-* The names of the config options for git-multimail are in namespace
-  "multimailhook.*" instead of "hooks.*".  (Editorial comment:
-  post-receive-email should never have used such a generic top-level
-  namespace.)
-
-* In emails about new annotated tags, post-receive-email includes a
-  shortlog of all changes since the previous annotated tag.  To get
-  this behavior with git-multimail, you need to set
-  multimailhook.announceshortlog to true:
-
-      git config multimailhook.announceshortlog true
-
-* multimailhook.commitlist -- This is a new configuration variable.
-  Recipients listed here will receive a separate email for each new
-  commit.  However, if this variable is *not* set, it defaults to the
-  value of multimailhook.mailinglist.  Therefore, if you *don't* want
-  the members of multimailhook.mailinglist to receive one email per
-  commit, then set this value to the empty string:
-
-      git config multimailhook.commitlist ''
-
-* multimailhook.emailprefix -- If this value is not set, then the
-  subjects of generated emails are prefixed with the short name of the
-  repository enclosed in square brackets; e.g., "[myrepo]".
-  post-receive-email defaults to prefix "[SCM]" if this option is not
-  set.  So if you were using the old default and want to retain it
-  (for example, to avoid having to change your email filters), set
-  this variable explicitly to the old value:
-
-      git config multimailhook.emailprefix "[SCM]"
-
-* The "multimailhook.showrev" configuration option is not supported.
-  Its main use is obsoleted by the one-email-per-commit feature of
-  git-multimail.
-
-
-Other differences
-=================
-
-This section describes other differences in the behavior of
-git-multimail vs. post-receive-email.  For full details, please refer
-to the main README file:
-
-* One email per commit.  For each reference change, the script first
-  outputs one email summarizing the reference change (including
-  one-line summaries of the new commits), then it outputs a separate
-  email for each new commit that was introduced, including patches.
-  These one-email-per-commit emails go to the addresses listed in
-  multimailhook.commitlist.  post-receive-email sends only one email
-  for each *reference* that is changed, no matter how many commits
-  were added to the reference.
-
-* Better algorithm for detecting new commits.  post-receive-email
-  processes one reference change at a time, which causes it to fail to
-  describe new commits that were included in multiple branches.  For
-  example, if a single push adds the "*" commits in the diagram below,
-  then post-receive-email would never include the details of the two
-  commits that are common to "master" and "branch" in its
-  notifications.
-
-      o---o---o---*---*---*    <-- master
-                       \
-                        *---*  <-- branch
-
-  git-multimail analyzes all reference modifications to determine
-  which commits were not present before the change, therefore avoiding
-  that error.
-
-* In reference change emails, git-multimail tells which commits have
-  been added to the reference vs. are entirely new to the repository,
-  and which commits that have been omitted from the reference
-  vs. entirely discarded from the repository.
-
-* The environment in which Git is running can be configured via an
-  "Environment" abstraction.
-
-* Built-in support for Gitolite-managed repositories.
-
-* Instead of using full SHA1 object names in emails, git-multimail
-  mostly uses abbreviated SHA1s, plus one-line log message summaries
-  where appropriate.
-
-* In the schematic diagrams that explain non-fast-forward commits,
-  git-multimail shows the names of the branches involved.
-
-* The emails generated by git-multimail include the name of the Git
-  repository that was modified; this is convenient for recipients who
-  are monitoring multiple repositories.
-
-* git-multimail allows the email "From" addresses to be configured.
-
-* The recipients lists (multimailhook.mailinglist,
-  multimailhook.refchangelist, multimailhook.announcelist, and
-  multimailhook.commitlist) can be comma-separated values and/or
-  multivalued settings in the config file; e.g.,
-
-      [multimailhook]
-              mailinglist = mr.brown@example.com, mr.black@example.com
-              announcelist = Him <him@example.com>
-              announcelist = Jim <jim@example.com>
-              announcelist = pop@example.com
-
-  This might make it easier to maintain short recipients lists without
-  requiring full-fledged mailing list software.
-
-* By default, git-multimail sets email "Reply-To" headers to reply to
-  the pusher (for reference updates) and to the author (for commit
-  notifications).  By default, the pusher's email address is
-  constructed by appending "multimailhook.emaildomain" to the pusher's
-  username.
-
-* The generated emails contain a configurable footer.  By default, it
-  lists the name of the administrator who should be contacted to
-  unsubscribe from notification emails.
-
-* New option multimailhook.emailmaxlinelength to limit the length of
-  lines in the main part of the email body.  The default limit is 500
-  characters.
-
-* New option multimailhook.emailstrictutf8 to ensure that the main
-  part of the email body is valid UTF-8.  Invalid characters are
-  turned into the Unicode replacement character, U+FFFD.  By default
-  this option is turned on.
-
-* Written in Python.  Easier to add new features.
diff --git a/contrib/hooks/multimail/README.rst b/contrib/hooks/multimail/README.rst
deleted file mode 100644
index 7c0fc4a..0000000
--- a/contrib/hooks/multimail/README.rst
+++ /dev/null
@@ -1,774 +0,0 @@
-git-multimail version 1.5.0
-===========================
-
-.. image:: https://travis-ci.org/git-multimail/git-multimail.svg?branch=master
-    :target: https://travis-ci.org/git-multimail/git-multimail
-
-git-multimail is a tool for sending notification emails on pushes to a
-Git repository.  It includes a Python module called ``git_multimail.py``,
-which can either be used as a hook script directly or can be imported
-as a Python module into another script.
-
-git-multimail is derived from the Git project's old
-contrib/hooks/post-receive-email, and is mostly compatible with that
-script.  See README.migrate-from-post-receive-email for details about
-the differences and for how to migrate from post-receive-email to
-git-multimail.
-
-git-multimail, like the rest of the Git project, is licensed under
-GPLv2 (see the COPYING file for details).
-
-Please note: although, as a convenience, git-multimail may be
-distributed along with the main Git project, development of
-git-multimail takes place in its own, separate project.  Please, read
-`<CONTRIBUTING.rst>`__ for more information.
-
-
-By default, for each push received by the repository, git-multimail:
-
-1. Outputs one email summarizing each reference that was changed.
-   These "reference change" (called "refchange" below) emails describe
-   the nature of the change (e.g., was the reference created, deleted,
-   fast-forwarded, etc.) and include a one-line summary of each commit
-   that was added to the reference.
-
-2. Outputs one email for each new commit that was introduced by the
-   reference change.  These "commit" emails include a list of the
-   files changed by the commit, followed by the diffs of files
-   modified by the commit.  The commit emails are threaded to the
-   corresponding reference change email via "In-Reply-To".  This style
-   (similar to the "git format-patch" style used on the Git mailing
-   list) makes it easy to scan through the emails, jump to patches
-   that need further attention, and write comments about specific
-   commits.  Commits are handled in reverse topological order (i.e.,
-   parents shown before children).  For example::
-
-     [git] branch master updated
-     + [git] 01/08: doc: fix xref link from api docs to manual pages
-     + [git] 02/08: api-credentials.txt: show the big picture first
-     + [git] 03/08: api-credentials.txt: mention credential.helper explicitly
-     + [git] 04/08: api-credentials.txt: add "see also" section
-     + [git] 05/08: t3510 (cherry-pick-sequence): add missing '&&'
-     + [git] 06/08: Merge branch 'rr/maint-t3510-cascade-fix'
-     + [git] 07/08: Merge branch 'mm/api-credentials-doc'
-     + [git] 08/08: Git 1.7.11-rc2
-
-   By default, each commit appears in exactly one commit email, the
-   first time that it is pushed to the repository.  If a commit is later
-   merged into another branch, then a one-line summary of the commit
-   is included in the reference change email (as usual), but no
-   additional commit email is generated. See
-   `multimailhook.refFilter(Inclusion|Exclusion|DoSend|DontSend)Regex`
-   below to configure which branches and tags are watched by the hook.
-
-   By default, reference change emails have their "Reply-To" field set
-   to the person who pushed the change, and commit emails have their
-   "Reply-To" field set to the author of the commit.
-
-3. Output one "announce" mail for each new annotated tag, including
-   information about the tag and optionally a shortlog describing the
-   changes since the previous tag.  Such emails might be useful if you
-   use annotated tags to mark releases of your project.
-
-
-Requirements
-------------
-
-* Python 2.x, version 2.4 or later.  No non-standard Python modules
-  are required.  git-multimail has preliminary support for Python 3
-  (but it has been better tested with Python 2).
-
-* The ``git`` command must be in your PATH.  git-multimail is known to
-  work with Git versions back to 1.7.1.  (Earlier versions have not
-  been tested; if you do so, please report your results.)
-
-* To send emails using the default configuration, a standard sendmail
-  program must be located at '/usr/sbin/sendmail' or
-  '/usr/lib/sendmail' and must be configured correctly to send emails.
-  If this is not the case, set multimailhook.sendmailCommand, or see
-  the multimailhook.mailer configuration variable below for how to
-  configure git-multimail to send emails via an SMTP server.
-
-* git-multimail is currently tested only on Linux. It may or may not
-  work on other platforms such as Windows and Mac OS. See
-  `<CONTRIBUTING.rst>`__ to improve the situation.
-
-
-Invocation
-----------
-
-``git_multimail.py`` is designed to be used as a ``post-receive`` hook in a
-Git repository (see githooks(5)).  Link or copy it to
-$GIT_DIR/hooks/post-receive within the repository for which email
-notifications are desired.  Usually it should be installed on the
-central repository for a project, to which all commits are eventually
-pushed.
-
-For use on pre-v1.5.1 Git servers, ``git_multimail.py`` can also work as
-an ``update`` hook, taking its arguments on the command line.  To use
-this script in this manner, link or copy it to $GIT_DIR/hooks/update.
-Please note that the script is not completely reliable in this mode
-[1]_.
-
-Alternatively, ``git_multimail.py`` can be imported as a Python module
-into your own Python post-receive script.  This method is a bit more
-work, but allows the behavior of the hook to be customized using
-arbitrary Python code.  For example, you can use a custom environment
-(perhaps inheriting from GenericEnvironment or GitoliteEnvironment) to
-
-* change how the user who did the push is determined
-
-* read users' email addresses from an LDAP server or from a database
-
-* decide which users should be notified about which commits based on
-  the contents of the commits (e.g., for users who want to be notified
-  only about changes affecting particular files or subdirectories)
-
-Or you can change how emails are sent by writing your own Mailer
-class.  The ``post-receive`` script in this directory demonstrates how
-to use ``git_multimail.py`` as a Python module.  (If you make interesting
-changes of this type, please consider sharing them with the
-community.)
-
-
-Troubleshooting/FAQ
--------------------
-
-Please read `<doc/troubleshooting.rst>`__ for frequently asked
-questions and common issues with git-multimail.
-
-
-Configuration
--------------
-
-By default, git-multimail mostly takes its configuration from the
-following ``git config`` settings:
-
-multimailhook.environment
-    This describes the general environment of the repository. In most
-    cases, you do not need to specify a value for this variable:
-    `git-multimail` will autodetect which environment to use.
-    Currently supported values:
-
-    generic
-      the username of the pusher is read from $USER or $USERNAME and
-      the repository name is derived from the repository's path.
-
-    gitolite
-      Environment to use when ``git-multimail`` is ran as a gitolite_
-      hook.
-
-      The username of the pusher is read from $GL_USER, the repository
-      name is read from $GL_REPO, and the From: header value is
-      optionally read from gitolite.conf (see multimailhook.from).
-
-      For more information about gitolite and git-multimail, read
-      `<doc/gitolite.rst>`__
-
-    stash
-      Environment to use when ``git-multimail`` is ran as an Atlassian
-      BitBucket Server (formerly known as Atlassian Stash) hook.
-
-      **Warning:** this mode was provided by a third-party contributor
-      and never tested by the git-multimail maintainers. It is
-      provided as-is and may or may not work for you.
-
-      This value is automatically assumed when the stash-specific
-      flags (``--stash-user`` and ``--stash-repo``) are specified on
-      the command line. When this environment is active, the username
-      and repo come from these two command line flags, which must be
-      specified.
-
-    gerrit
-      Environment to use when ``git-multimail`` is ran as a
-      ``ref-updated`` Gerrit hook.
-
-      This value is used when the gerrit-specific command line flags
-      (``--oldrev``, ``--newrev``, ``--refname``, ``--project``) for
-      gerrit's ref-updated hook are present. When this environment is
-      active, the username of the pusher is taken from the
-      ``--submitter`` argument if that command line option is passed,
-      otherwise 'Gerrit' is used. The repository name is taken from
-      the ``--project`` option on the command line, which must be passed.
-
-      For more information about gerrit and git-multimail, read
-      `<doc/gerrit.rst>`__
-
-    If none of these environments is suitable for your setup, then you
-    can implement a Python class that inherits from Environment and
-    instantiate it via a script that looks like the example
-    post-receive script.
-
-    The environment value can be specified on the command line using
-    the ``--environment`` option. If it is not specified on the
-    command line or by ``multimailhook.environment``, the value is
-    guessed as follows:
-
-    * If stash-specific (respectively gerrit-specific) command flags
-      are present on the command-line, then ``stash`` (respectively
-      ``gerrit``) is used.
-
-    * If the environment variables $GL_USER and $GL_REPO are set, then
-      ``gitolite`` is used.
-
-    * If none of the above apply, then ``generic`` is used.
-
-multimailhook.repoName
-    A short name of this Git repository, to be used in various places
-    in the notification email text.  The default is to use $GL_REPO
-    for gitolite repositories, or otherwise to derive this value from
-    the repository path name.
-
-multimailhook.mailingList
-    The list of email addresses to which notification emails should be
-    sent, as RFC 2822 email addresses separated by commas.  This
-    configuration option can be multivalued.  Leave it unset or set it
-    to the empty string to not send emails by default.  The next few
-    settings can be used to configure specific address lists for
-    specific types of notification email.
-
-multimailhook.refchangeList
-    The list of email addresses to which summary emails about
-    reference changes should be sent, as RFC 2822 email addresses
-    separated by commas.  This configuration option can be
-    multivalued.  The default is the value in
-    multimailhook.mailingList.  Set this value to "none" (or the empty
-    string) to prevent reference change emails from being sent even if
-    multimailhook.mailingList is set.
-
-multimailhook.announceList
-    The list of email addresses to which emails about new annotated
-    tags should be sent, as RFC 2822 email addresses separated by
-    commas.  This configuration option can be multivalued.  The
-    default is the value in multimailhook.refchangeList or
-    multimailhook.mailingList.  Set this value to "none" (or the empty
-    string) to prevent annotated tag announcement emails from being sent
-    even if one of the other values is set.
-
-multimailhook.commitList
-    The list of email addresses to which emails about individual new
-    commits should be sent, as RFC 2822 email addresses separated by
-    commas.  This configuration option can be multivalued.  The
-    default is the value in multimailhook.mailingList.  Set this value
-    to "none" (or the empty string) to prevent notification emails about
-    individual commits from being sent even if
-    multimailhook.mailingList is set.
-
-multimailhook.announceShortlog
-    If this option is set to true, then emails about changes to
-    annotated tags include a shortlog of changes since the previous
-    tag.  This can be useful if the annotated tags represent releases;
-    then the shortlog will be a kind of rough summary of what has
-    happened since the last release.  But if your tagging policy is
-    not so straightforward, then the shortlog might be confusing
-    rather than useful.  Default is false.
-
-multimailhook.commitEmailFormat
-    The format of email messages for the individual commits, can be "text" or
-    "html". In the latter case, the emails will include diffs using colorized
-    HTML instead of plain text used by default. Note that this  currently the
-    ref change emails are always sent in plain text.
-
-    Note that when using "html", the formatting is done by parsing the
-    output of ``git log`` with ``-p``. When using
-    ``multimailhook.commitLogOpts`` to specify a ``--format`` for
-    ``git log``, one may get false positive (e.g. lines in the body of
-    the message starting with ``+++`` or ``---`` colored in red or
-    green).
-
-    By default, all the message is HTML-escaped. See
-    ``multimailhook.htmlInIntro`` to change this behavior.
-
-multimailhook.commitBrowseURL
-    Used to generate a link to an online repository browser in commit
-    emails. This variable must be a string. Format directives like
-    ``%(<variable>)s`` will be expanded the same way as template
-    strings. In particular, ``%(id)s`` will be replaced by the full
-    Git commit identifier (40-chars hexadecimal).
-
-    If the string does not contain any format directive, then
-    ``%(id)s`` will be automatically added to the string. If you don't
-    want ``%(id)s`` to be automatically added, use the empty format
-    directive ``%()s`` anywhere in the string.
-
-    For example, a suitable value for the git-multimail project itself
-    would be
-    ``https://github.com/git-multimail/git-multimail/commit/%(id)s``.
-
-multimailhook.htmlInIntro, multimailhook.htmlInFooter
-    When generating an HTML message, git-multimail escapes any HTML
-    sequence by default. This means that if a template contains HTML
-    like ``<a href="foo">link</a>``, the reader will see the HTML
-    source code and not a proper link.
-
-    Set ``multimailhook.htmlInIntro`` to true to allow writing HTML
-    formatting in introduction templates. Similarly, set
-    ``multimailhook.htmlInFooter`` for HTML in the footer.
-
-    Variables expanded in the template are still escaped. For example,
-    if a repository's path contains a ``<``, it will be rendered as
-    such in the message.
-
-    Read `<doc/customizing-emails.rst>`__ for more details and
-    examples.
-
-multimailhook.refchangeShowGraph
-    If this option is set to true, then summary emails about reference
-    changes will additionally include:
-
-    * a graph of the added commits (if any)
-
-    * a graph of the discarded commits (if any)
-
-    The log is generated by running ``git log --graph`` with the options
-    specified in graphOpts.  The default is false.
-
-multimailhook.refchangeShowLog
-    If this option is set to true, then summary emails about reference
-    changes will include a detailed log of the added commits in
-    addition to the one line summary.  The log is generated by running
-    ``git log`` with the options specified in multimailhook.logOpts.
-    Default is false.
-
-multimailhook.mailer
-    This option changes the way emails are sent.  Accepted values are:
-
-    * **sendmail (the default)**: use the command ``/usr/sbin/sendmail`` or
-      ``/usr/lib/sendmail`` (or sendmailCommand, if configured).  This
-      mode can be further customized via the following options:
-
-      multimailhook.sendmailCommand
-          The command used by mailer ``sendmail`` to send emails.  Shell
-          quoting is allowed in the value of this setting, but remember that
-          Git requires double-quotes to be escaped; e.g.::
-
-              git config multimailhook.sendmailcommand '/usr/sbin/sendmail -oi -t -F \"Git Repo\"'
-
-          Default is '/usr/sbin/sendmail -oi -t' or
-          '/usr/lib/sendmail -oi -t' (depending on which file is
-          present and executable).
-
-      multimailhook.envelopeSender
-          If set then pass this value to sendmail via the -f option to set
-          the envelope sender address.
-
-    * **smtp**: use Python's smtplib.  This is useful when the sendmail
-      command is not available on the system.  This mode can be
-      further customized via the following options:
-
-      multimailhook.smtpServer
-          The name of the SMTP server to connect to.  The value can
-          also include a colon and a port number; e.g.,
-          ``mail.example.com:25``.  Default is 'localhost' using port 25.
-
-      multimailhook.smtpUser, multimailhook.smtpPass
-          Server username and password. Required if smtpEncryption is 'ssl'.
-          Note that the username and password currently need to be
-          set cleartext in the configuration file, which is not
-          recommended. If you need to use this option, be sure your
-          configuration file is read-only.
-
-      multimailhook.envelopeSender
-        The sender address to be passed to the SMTP server.  If
-        unset, then the value of multimailhook.from is used.
-
-      multimailhook.smtpServerTimeout
-        Timeout in seconds. Default is 10.
-
-      multimailhook.smtpEncryption
-        Set the security type. Allowed values: ``none``, ``ssl``, ``tls`` (starttls).
-        Default is ``none``.
-
-      multimailhook.smtpCACerts
-        Set the path to a list of trusted CA certificate to verify the
-        server certificate, only supported when ``smtpEncryption`` is
-        ``tls``. If unset or empty, the server certificate is not
-        verified. If it targets a file containing a list of trusted CA
-        certificates (PEM format) these CAs will be used to verify the
-        server certificate. For debian, you can set
-        ``/etc/ssl/certs/ca-certificates.crt`` for using the system
-        trusted CAs. For self-signed server, you can add your server
-        certificate to the system store::
-
-            cd /usr/local/share/ca-certificates/
-            openssl s_client -starttls smtp \
-                   -connect mail.example.net:587 -showcerts \
-                   </dev/null 2>/dev/null \
-                 | openssl x509 -outform PEM >mail.example.net.crt
-            update-ca-certificates
-
-        and used the updated ``/etc/ssl/certs/ca-certificates.crt``. Or
-        directly use your ``/path/to/mail.example.net.crt``. Default is
-        unset.
-
-      multimailhook.smtpServerDebugLevel
-        Integer number. Set to greater than 0 to activate debugging.
-
-multimailhook.from, multimailhook.fromCommit, multimailhook.fromRefchange
-    If set, use this value in the From: field of generated emails.
-    ``fromCommit`` is used for commit emails, ``fromRefchange`` is
-    used for refchange emails, and ``from`` is used as fall-back in
-    all cases.
-
-    The value for these variables can be either:
-
-    - An email address, which will be used directly.
-
-    - The value ``pusher``, in which case the pusher's address (if
-      available) will be used.
-
-    - The value ``author`` (meaningful only for ``fromCommit``), in which
-      case the commit author's address will be used.
-
-    If config values are unset, the value of the From: header is
-    determined as follows:
-
-    1. (gitolite environment only)
-       1.a) If ``multimailhook.MailaddressMap`` is set, and is a path
-       to an existing file (if relative, it is considered relative to
-       the place where ``gitolite.conf`` is located), then this file
-       should contain lines like::
-
-           username Firstname Lastname <email@example.com>
-
-       git-multimail will then look for a line where ``$GL_USER``
-       matches the ``username`` part, and use the rest of the line for
-       the ``From:`` header.
-
-       1.b) Parse gitolite.conf, looking for a block of comments that
-       looks like this::
-
-           # BEGIN USER EMAILS
-           # username Firstname Lastname <email@example.com>
-           # END USER EMAILS
-
-       If that block exists, and there is a line between the BEGIN
-       USER EMAILS and END USER EMAILS lines where the first field
-       matches the gitolite username ($GL_USER), use the rest of the
-       line for the From: header.
-
-    2. If the user.email configuration setting is set, use its value
-       (and the value of user.name, if set).
-
-    3. Use the value of multimailhook.envelopeSender.
-
-multimailhook.MailaddressMap
-    (gitolite environment only)
-    File to look for a ``From:`` address based on the user doing the
-    push. Defaults to unset. See ``multimailhook.from`` for details.
-
-multimailhook.administrator
-    The name and/or email address of the administrator of the Git
-    repository; used in FOOTER_TEMPLATE.  Default is
-    multimailhook.envelopesender if it is set; otherwise a generic
-    string is used.
-
-multimailhook.emailPrefix
-    All emails have this string prepended to their subjects, to aid
-    email filtering (though filtering based on the X-Git-* email
-    headers is probably more robust).  Default is the short name of
-    the repository in square brackets; e.g., ``[myrepo]``.  Set this
-    value to the empty string to suppress the email prefix. You may
-    use the placeholder ``%(repo_shortname)s`` for the short name of
-    the repository.
-
-multimailhook.emailMaxLines
-    The maximum number of lines that should be included in the body of
-    a generated email.  If not specified, there is no limit.  Lines
-    beyond the limit are suppressed and counted, and a final line is
-    added indicating the number of suppressed lines.
-
-multimailhook.emailMaxLineLength
-    The maximum length of a line in the email body.  Lines longer than
-    this limit are truncated to this length with a trailing ``[...]``
-    added to indicate the missing text.  The default is 500, because
-    (a) diffs with longer lines are probably from binary files, for
-    which a diff is useless, and (b) even if a text file has such long
-    lines, the diffs are probably unreadable anyway.  To disable line
-    truncation, set this option to 0.
-
-multimailhook.subjectMaxLength
-    The maximum length of the subject line (i.e. the ``oneline`` field
-    in templates, not including the prefix). Lines longer than this
-    limit are truncated to this length with a trailing ``[...]`` added
-    to indicate the missing text. This option The default is to use
-    ``multimailhook.emailMaxLineLength``. This option avoids sending
-    emails with overly long subject lines, but should not be needed if
-    the commit messages follow the Git convention (one short subject
-    line, then a blank line, then the message body). To disable line
-    truncation, set this option to 0.
-
-multimailhook.maxCommitEmails
-    The maximum number of commit emails to send for a given change.
-    When the number of patches is larger that this value, only the
-    summary refchange email is sent.  This can avoid accidental
-    mailbombing, for example on an initial push.  To disable commit
-    emails limit, set this option to 0.  The default is 500.
-
-multimailhook.excludeMergeRevisions
-    When sending out revision emails, do not consider merge commits (the
-    functional equivalent of `rev-list --no-merges`).
-    The default is `false` (send merge commit emails).
-
-multimailhook.emailStrictUTF8
-    If this boolean option is set to `true`, then the main part of the
-    email body is forced to be valid UTF-8.  Any characters that are
-    not valid UTF-8 are converted to the Unicode replacement
-    character, U+FFFD.  The default is `true`.
-
-    This option is ineffective with Python 3, where non-UTF-8
-    characters are unconditionally replaced.
-
-multimailhook.diffOpts
-    Options passed to ``git diff-tree`` when generating the summary
-    information for ReferenceChange emails.  Default is ``--stat
-    --summary --find-copies-harder``.  Add -p to those options to
-    include a unified diff of changes in addition to the usual summary
-    output.  Shell quoting is allowed; see ``multimailhook.logOpts`` for
-    details.
-
-multimailhook.graphOpts
-    Options passed to ``git log --graph`` when generating graphs for the
-    reference change summary emails (used only if refchangeShowGraph
-    is true).  The default is '--oneline --decorate'.
-
-    Shell quoting is allowed; see logOpts for details.
-
-multimailhook.logOpts
-    Options passed to ``git log`` to generate additional info for
-    reference change emails (used only if refchangeShowLog is set).
-    For example, adding -p will show each commit's complete diff.  The
-    default is empty.
-
-    Shell quoting is allowed; for example, a log format that contains
-    spaces can be specified using something like::
-
-      git config multimailhook.logopts '--pretty=format:"%h %aN <%aE>%n%s%n%n%b%n"'
-
-    If you want to set this by editing your configuration file
-    directly, remember that Git requires double-quotes to be escaped
-    (see git-config(1) for more information)::
-
-      [multimailhook]
-              logopts = --pretty=format:\"%h %aN <%aE>%n%s%n%n%b%n\"
-
-multimailhook.commitLogOpts
-    Options passed to ``git log`` to generate additional info for
-    revision change emails.  For example, adding --ignore-all-spaces
-    will suppress whitespace changes.  The default options are ``-C
-    --stat -p --cc``.  Shell quoting is allowed; see
-    multimailhook.logOpts for details.
-
-multimailhook.dateSubstitute
-    String to use as a substitute for ``Date:`` in the output of ``git
-    log`` while formatting commit messages. This is useful to avoid
-    emitting a line that can be interpreted by mailers as the start of
-    a cited message (Zimbra webmail in particular). Defaults to
-    ``CommitDate:``. Set to an empty string or ``none`` to deactivate
-    the behavior.
-
-multimailhook.emailDomain
-    Domain name appended to the username of the person doing the push
-    to convert it into an email address
-    (via ``"%s@%s" % (username, emaildomain)``). More complicated
-    schemes can be implemented by overriding Environment and
-    overriding its get_pusher_email() method.
-
-multimailhook.replyTo, multimailhook.replyToCommit, multimailhook.replyToRefchange
-    Addresses to use in the Reply-To: field for commit emails
-    (replyToCommit) and refchange emails (replyToRefchange).
-    multimailhook.replyTo is used as default when replyToCommit or
-    replyToRefchange is not set. The shortcuts ``pusher`` and
-    ``author`` are allowed with the same semantics as for
-    ``multimailhook.from``. In addition, the value ``none`` can be
-    used to omit the ``Reply-To:`` field.
-
-    The default is ``pusher`` for refchange emails, and ``author`` for
-    commit emails.
-
-multimailhook.quiet
-    Do not output the list of email recipients from the hook
-
-multimailhook.stdout
-    For debugging, send emails to stdout rather than to the
-    mailer.  Equivalent to the --stdout command line option
-
-multimailhook.scanCommitForCc
-    If this option is set to true, than recipients from lines in commit body
-    that starts with ``CC:`` will be added to CC list.
-    Default: false
-
-multimailhook.combineWhenSingleCommit
-    If this option is set to true and a single new commit is pushed to
-    a branch, combine the summary and commit email messages into a
-    single email.
-    Default: true
-
-multimailhook.refFilterInclusionRegex, multimailhook.refFilterExclusionRegex, multimailhook.refFilterDoSendRegex, multimailhook.refFilterDontSendRegex
-    **Warning:** these options are experimental. They should work, but
-    the user-interface is not stable yet (in particular, the option
-    names may change). If you want to participate in stabilizing the
-    feature, please contact the maintainers and/or send pull-requests.
-    If you are happy with the current shape of the feature, please
-    report it too.
-
-    Regular expressions that can be used to limit refs for which email
-    updates will be sent.  It is an error to specify both an inclusion
-    and an exclusion regex.  If a ``refFilterInclusionRegex`` is
-    specified, emails will only be sent for refs which match this
-    regex.  If a ``refFilterExclusionRegex`` regex is specified,
-    emails will be sent for all refs except those that match this
-    regex (or that match a predefined regex specific to the
-    environment, such as "^refs/notes" for most environments and
-    "^refs/notes|^refs/changes" for the gerrit environment).
-
-    The expressions are matched against the complete refname, and is
-    considered to match if any substring matches. For example, to
-    filter-out all tags, set ``refFilterExclusionRegex`` to
-    ``^refs/tags/`` (note the leading ``^`` but no trailing ``$``). If
-    you set ``refFilterExclusionRegex`` to ``master``, then any ref
-    containing ``master`` will be excluded (the ``master`` branch, but
-    also ``refs/tags/master`` or ``refs/heads/foo-master-bar``).
-
-    ``refFilterDoSendRegex`` and ``refFilterDontSendRegex`` are
-    analogous to ``refFilterInclusionRegex`` and
-    ``refFilterExclusionRegex`` with one difference: with
-    ``refFilterDoSendRegex`` and ``refFilterDontSendRegex``, commits
-    introduced by one excluded ref will not be considered as new when
-    they reach an included ref. Typically, if you add a branch ``foo``
-    to  ``refFilterDontSendRegex``, push commits to this branch, and
-    later merge branch ``foo`` into ``master``, then the notification
-    email for ``master`` will contain a commit email only for the
-    merge commit. If you include ``foo`` in
-    ``refFilterExclusionRegex``, then at the time of merge, you will
-    receive one commit email per commit in the branch.
-
-    These variables can be multi-valued, like::
-
-      [multimailhook]
-              refFilterExclusionRegex = ^refs/tags/
-              refFilterExclusionRegex = ^refs/heads/master$
-
-    You can also provide a whitespace-separated list like::
-
-      [multimailhook]
-              refFilterExclusionRegex = ^refs/tags/ ^refs/heads/master$
-
-    Both examples exclude tags and the master branch, and are
-    equivalent to::
-
-      [multimailhook]
-              refFilterExclusionRegex = ^refs/tags/|^refs/heads/master$
-
-    ``refFilterInclusionRegex`` and ``refFilterExclusionRegex`` are
-    strictly stronger than ``refFilterDoSendRegex`` and
-    ``refFilterDontSendRegex``. In other words, adding a ref to a
-    DoSend/DontSend regex has no effect if it is already excluded by a
-    Exclusion/Inclusion regex.
-
-multimailhook.logFile, multimailhook.errorLogFile, multimailhook.debugLogFile
-
-    When set, these variable designate path to files where
-    git-multimail will log some messages. Normal messages and error
-    messages are sent to ``logFile``, and error messages are also sent
-    to ``errorLogFile``. Debug messages and all other messages are
-    sent to ``debugLogFile``. The recommended way is to set only one
-    of these variables, but it is also possible to set several of them
-    (part of the information is then duplicated in several log files,
-    for example errors are duplicated to all log files).
-
-    Relative path are relative to the Git repository where the push is
-    done.
-
-multimailhook.verbose
-
-    Verbosity level of git-multimail on its standard output. By
-    default, show only error and info messages. If set to true, show
-    also debug messages.
-
-Email filtering aids
---------------------
-
-All emails include extra headers to enable fine tuned filtering and
-give information for debugging.  All emails include the headers
-``X-Git-Host``, ``X-Git-Repo``, ``X-Git-Refname``, and ``X-Git-Reftype``.
-ReferenceChange emails also include headers ``X-Git-Oldrev`` and ``X-Git-Newrev``;
-Revision emails also include header ``X-Git-Rev``.
-
-
-Customizing email contents
---------------------------
-
-git-multimail mostly generates emails by expanding templates.  The
-templates can be customized.  To avoid the need to edit
-``git_multimail.py`` directly, the preferred way to change the templates
-is to write a separate Python script that imports ``git_multimail.py`` as
-a module, then replaces the templates in place.  See the provided
-post-receive script for an example of how this is done.
-
-
-Customizing git-multimail for your environment
-----------------------------------------------
-
-git-multimail is mostly customized via an "environment" that describes
-the local environment in which Git is running.  Two types of
-environment are built in:
-
-GenericEnvironment
-    a stand-alone Git repository.
-
-GitoliteEnvironment
-    a Git repository that is managed by gitolite_.  For such
-    repositories, the identity of the pusher is read from
-    environment variable $GL_USER, the name of the repository is read
-    from $GL_REPO (if it is not overridden by multimailhook.reponame),
-    and the From: header value is optionally read from gitolite.conf
-    (see multimailhook.from).
-
-By default, git-multimail assumes GitoliteEnvironment if $GL_USER and
-$GL_REPO are set, and otherwise assumes GenericEnvironment.
-Alternatively, you can choose one of these two environments explicitly
-by setting a ``multimailhook.environment`` config setting (which can
-have the value `generic` or `gitolite`) or by passing an --environment
-option to the script.
-
-If you need to customize the script in ways that are not supported by
-the existing environments, you can define your own environment class
-class using arbitrary Python code.  To do so, you need to import
-``git_multimail.py`` as a Python module, as demonstrated by the example
-post-receive script.  Then implement your environment class; it should
-usually inherit from one of the existing Environment classes and
-possibly one or more of the EnvironmentMixin classes.  Then set the
-``environment`` variable to an instance of your own environment class
-and pass it to ``run_as_post_receive_hook()``.
-
-The standard environment classes, GenericEnvironment and
-GitoliteEnvironment, are in fact themselves put together out of a
-number of mixin classes, each of which handles one aspect of the
-customization.  For the finest control over your configuration, you
-can specify exactly which mixin classes your own environment class
-should inherit from, and override individual methods (or even add your
-own mixin classes) to implement entirely new behaviors.  If you
-implement any mixins that might be useful to other people, please
-consider sharing them with the community!
-
-
-Getting involved
-----------------
-
-Please, read `<CONTRIBUTING.rst>`__ for instructions on how to
-contribute to git-multimail.
-
-
-Footnotes
----------
-
-.. [1] Because of the way information is passed to update hooks, the
-       script's method of determining whether a commit has already
-       been seen does not work when it is used as an ``update`` script.
-       In particular, no notification email will be generated for a
-       new commit that is added to multiple references in the same
-       push. A workaround is to use --force-send to force sending the
-       emails.
-
-.. _gitolite: https://github.com/sitaramc/gitolite
diff --git a/contrib/hooks/multimail/doc/customizing-emails.rst b/contrib/hooks/multimail/doc/customizing-emails.rst
deleted file mode 100644
index 3f5b67f..0000000
--- a/contrib/hooks/multimail/doc/customizing-emails.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-Customizing the content and formatting of emails
-================================================
-
-Overloading template strings
-----------------------------
-
-The content of emails is generated based on template strings defined
-in ``git_multimail.py``. You can customize these template strings
-without changing the script itself, by defining a Python wrapper
-around it. The python wrapper should ``import git_multimail`` and then
-override the ``git_multimail.*`` strings like this::
-
-  import sys  # needed for sys.argv
-
-  # Import and customize git_multimail:
-  import git_multimail
-  git_multimail.REVISION_INTRO_TEMPLATE = """..."""
-  git_multimail.COMBINED_INTRO_TEMPLATE = git_multimail.REVISION_INTRO_TEMPLATE
-
-  # start git_multimail itself:
-  git_multimail.main(sys.argv[1:])
-
-The template strings can use any value already used in the existing
-templates (read the source code).
-
-Using HTML in template strings
-------------------------------
-
-If ``multimailhook.commitEmailFormat`` is set to HTML, then
-git-multimail will generate HTML emails for commit notifications. The
-log and diff will be formatted automatically by git-multimail. By
-default, any HTML special character in the templates will be escaped.
-
-To use HTML formatting in the introduction of the email, set
-``multimailhook.htmlInIntro`` to ``true``. Then, the template can
-contain any HTML tags, that will be sent as-is in the email. For
-example, to add some formatting and a link to the online commit, use
-a format like::
-
-  git_multimail.REVISION_INTRO_TEMPLATE = """\
-  <span style="color:#808080">This is an automated email from the git hooks/post-receive script.</span><br /><br />
-
-  <strong>%(pusher)s</strong> pushed a commit to %(refname_type)s %(short_refname)s
-  in repository %(repo_shortname)s.<br />
-
-  <a href="https://github.com/git-multimail/git-multimail/commit/%(newrev)s">View on GitHub</a>.
-  """
-
-Note that the values expanded from ``%(variable)s`` in the format
-strings will still be escaped.
-
-For a less flexible but easier to set up way to add a link to commit
-emails, see ``multimailhook.commitBrowseURL``.
-
-Similarly, one can set ``multimailhook.htmlInFooter`` and override any
-of the ``*_FOOTER*`` template strings.
diff --git a/contrib/hooks/multimail/doc/gerrit.rst b/contrib/hooks/multimail/doc/gerrit.rst
deleted file mode 100644
index 8011d05..0000000
--- a/contrib/hooks/multimail/doc/gerrit.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-Setting up git-multimail on Gerrit
-==================================
-
-Gerrit has its own email-sending system, but you may prefer using
-``git-multimail`` instead. It supports Gerrit natively as a Gerrit
-``ref-updated`` hook (Warning: `Gerrit hooks
-<https://gerrit-review.googlesource.com/Documentation/config-hooks.html>`__
-are distinct from Git hooks). Setting up ``git-multimail`` on a Gerrit
-installation can be done following the instructions below.
-
-The explanations show an easy way to set up ``git-multimail``,
-but leave ``git-multimail`` installed and unconfigured for a while. If
-you run Gerrit on a production server, it is advised that you
-execute the step "Set up the hook" last to avoid confusing your users
-in the meantime.
-
-Set up the hook
----------------
-
-Create a directory ``$site_path/hooks/`` if it does not exist (if you
-don't know what ``$site_path`` is, run ``gerrit.sh status`` and look
-for a ``GERRIT_SITE`` line). Either copy ``git_multimail.py`` to
-``$site_path/hooks/ref-updated`` or create a wrapper script like
-this::
-
-  #! /bin/sh
-  exec /path/to/git_multimail.py "$@"
-
-In both cases, make sure the file is named exactly
-``$site_path/hooks/ref-updated`` and is executable.
-
-(Alternatively, you may configure the ``[hooks]`` section of
-gerrit.config)
-
-Configuration
--------------
-
-Log on the gerrit server and edit ``$site_path/git/$project/config``
-to configure ``git-multimail``.
-
-Troubleshooting
----------------
-
-Warning: this will disable ``git-multimail`` during the debug, and
-could confuse your users. Don't run on a production server.
-
-To debug configuration issues with ``git-multimail``, you can add the
-``--stdout`` option when calling ``git_multimail.py`` like this::
-
-  #!/bin/sh
-  exec /path/to/git-multimail/git-multimail/git_multimail.py \
-    --stdout "$@" >> /tmp/log.txt
-
-and try pushing from a test repository. You should see the source of
-the email that would have been sent in the output of ``git push`` in
-the file ``/tmp/log.txt``.
diff --git a/contrib/hooks/multimail/doc/gitolite.rst b/contrib/hooks/multimail/doc/gitolite.rst
deleted file mode 100644
index 5054833..0000000
--- a/contrib/hooks/multimail/doc/gitolite.rst
+++ /dev/null
@@ -1,118 +0,0 @@
-Setting up git-multimail on gitolite
-====================================
-
-``git-multimail`` supports gitolite 3 natively.
-The explanations below show an easy way to set up ``git-multimail``,
-but leave ``git-multimail`` installed and unconfigured for a while. If
-you run gitolite on a production server, it is advised that you
-execute the step "Set up the hook" last to avoid confusing your users
-in the meantime.
-
-Set up the hook
----------------
-
-Log in as your gitolite user.
-
-Create a file ``.gitolite/hooks/common/post-receive`` on your gitolite
-account containing (adapt the path, obviously)::
-
-  #!/bin/sh
-  exec /path/to/git-multimail/git-multimail/git_multimail.py "$@"
-
-Make sure it's executable (``chmod +x``). Record the hook in
-gitolite::
-
-  gitolite setup
-
-Configuration
--------------
-
-First, you have to allow the admin to set Git configuration variables.
-
-As gitolite user, edit the line containing ``GIT_CONFIG_KEYS`` in file
-``.gitolite.rc``, to make it look like::
-
-  GIT_CONFIG_KEYS                 =>  'multimailhook\..*',
-
-You can now log out and return to your normal user.
-
-In the ``gitolite-admin`` clone, edit the file ``conf/gitolite.conf``
-and add::
-
-  repo @all
-      # Not strictly needed as git_multimail.py will chose gitolite if
-      # $GL_USER is set.
-      config multimailhook.environment = gitolite
-      config multimailhook.mailingList = # Where emails should be sent
-      config multimailhook.from = # From address to use
-
-Note that by default, gitolite forbids ``<`` and ``>`` in variable
-values (for security/paranoia reasons, see
-`compensating for UNSAFE_PATT
-<http://gitolite.com/gitolite/git-config/index.html#compensating-for-unsafe95patt>`__
-in gitolite's documentation for explanations and a way to disable
-this). As a consequence, you will not be able to use ``First Last
-<First.Last@example.com>`` as recipient email, but specifying
-``First.Last@example.com`` alone works.
-
-Obviously, you can customize all parameters on a per-repository basis by
-adding these ``config multimailhook.*`` lines in the section
-corresponding to a repository or set of repositories.
-
-To activate ``git-multimail`` on a per-repository basis, do not set
-``multimailhook.mailingList`` in the ``@all`` section and set it only
-for repositories for which you want ``git-multimail``.
-
-Alternatively, you can set up the ``From:`` field on a per-user basis
-by adding a ``BEGIN USER EMAILS``/``END USER EMAILS`` section (see
-``../README``).
-
-Specificities of Gitolite for Configuration
--------------------------------------------
-
-Empty configuration variables
-.............................
-
-With gitolite, the syntax ``config multimailhook.commitList = ""``
-unsets the variable instead of setting it to an empty string (see
-`here
-<http://gitolite.com/gitolite/git-config.html#an-important-warning-about-deleting-a-config-line>`__).
-As a result, there is no way to set a variable to the empty string.
-In all most places where an empty value is required, git-multimail
-now allows to specify special ``"none"`` value (case-sensitive) to
-mean the same.
-
-Alternatively, one can use ``" "`` (a single space) instead of ``""``.
-In most cases (in particular ``multimailhook.*List`` variables), this
-will be equivalent to an empty string.
-
-If you have a use-case where ``"none"`` is not an acceptable value and
-you need ``" "`` or  ``""`` instead, please report it as a bug to
-git-multimail.
-
-Allowing Regular Expressions in Configuration
-.............................................
-
-gitolite has a mechanism to prevent unsafe configuration variable
-values, which prevent characters like ``|`` commonly used in regular
-expressions. If you do not need the safety feature of gitolite and
-need to use regular expressions in your configuration (e.g. for
-``multimailhook.refFilter*`` variables), set
-`UNSAFE_PATT
-<http://gitolite.com/gitolite/git-config.html#unsafe-patt>`__ to a
-less restrictive value.
-
-Troubleshooting
----------------
-
-Warning: this will disable ``git-multimail`` during the debug, and
-could confuse your users. Don't run on a production server.
-
-To debug configuration issues with ``git-multimail``, you can add the
-``--stdout`` option when calling ``git_multimail.py`` like this::
-
-  #!/bin/sh
-  exec /path/to/git-multimail/git-multimail/git_multimail.py --stdout "$@"
-
-and try pushing from a test repository. You should see the source of
-the email that would have been sent in the output of ``git push``.
diff --git a/contrib/hooks/multimail/doc/troubleshooting.rst b/contrib/hooks/multimail/doc/troubleshooting.rst
deleted file mode 100644
index 651b509..0000000
--- a/contrib/hooks/multimail/doc/troubleshooting.rst
+++ /dev/null
@@ -1,78 +0,0 @@
-Troubleshooting issues with git-multimail: a FAQ
-================================================
-
-How to check that git-multimail is properly set up?
----------------------------------------------------
-
-Since version 1.4.0, git-multimail allows a simple self-checking of
-its configuration: run it with the environment variable
-``GIT_MULTIMAIL_CHECK_SETUP`` set to a non-empty string. You should
-get something like this::
-
-  $ GIT_MULTIMAIL_CHECK_SETUP=true /home/moy/dev/git-multimail/git-multimail/git_multimail.py
-  Environment values:
-      administrator : 'the administrator of this repository'
-      charset : 'utf-8'
-      emailprefix : '[git-multimail] '
-      fqdn : 'anie'
-      projectdesc : 'UNNAMED PROJECT'
-      pusher : 'moy'
-      repo_path : '/home/moy/dev/git-multimail'
-      repo_shortname : 'git-multimail'
-
-  Now, checking that git-multimail's standard input is properly set ...
-  Please type some text and then press Return
-  foo
-  You have just entered:
-  foo
-  git-multimail seems properly set up.
-
-If you forgot to set an important variable, you may get instead::
-
-  $ GIT_MULTIMAIL_CHECK_SETUP=true /home/moy/dev/git-multimail/git-multimail/git_multimail.py
-  No email recipients configured!
-
-Do not set ``$GIT_MULTIMAIL_CHECK_SETUP`` other than for testing your
-configuration: it would disable the hook completely.
-
-Git is not using the right address in the From/To/Reply-To field
-----------------------------------------------------------------
-
-First, make sure that git-multimail actually uses what you think it is
-using. A lot happens to your email (especially when posting to a
-mailing-list) between the time `git_multimail.py` sends it and the
-time it reaches your inbox.
-
-A simple test (to do on a test repository, do not use in production as
-it would disable email sending): change your post-receive hook to call
-`git_multimail.py` with the `--stdout` option, and try to push to the
-repository. You should see something like::
-
-  Counting objects: 3, done.
-  Writing objects: 100% (3/3), 263 bytes | 0 bytes/s, done.
-  Total 3 (delta 0), reused 0 (delta 0)
-  remote: Sending notification emails to: foo.bar@example.com
-  remote: ===========================================================================
-  remote: Date: Mon, 25 Apr 2016 18:39:59 +0200
-  remote: To: foo.bar@example.com
-  remote: Subject: [git] branch master updated: foo
-  remote: MIME-Version: 1.0
-  remote: Content-Type: text/plain; charset=utf-8
-  remote: Content-Transfer-Encoding: 8bit
-  remote: Message-ID: <20160425163959.2311.20498@anie>
-  remote: From: Auth Or <Foo.Bar@example.com>
-  remote: Reply-To: Auth Or <Foo.Bar@example.com>
-  remote: X-Git-Host: example
-  ...
-  remote: --
-  remote: To stop receiving notification emails like this one, please contact
-  remote: the administrator of this repository.
-  remote: ===========================================================================
-  To /path/to/repo
-     6278f04..e173f20  master -> master
-
-Note: this does not include the sender (Return-Path: header), as it is
-not part of the message content but passed to the mailer. Some mailer
-show the ``Sender:`` field instead of the ``From:`` field (for
-example, Zimbra Webmail shows ``From: <sender-field> on behalf of
-<from-field>``).
diff --git a/contrib/hooks/multimail/git_multimail.py b/contrib/hooks/multimail/git_multimail.py
deleted file mode 100755
index f563be8..0000000
--- a/contrib/hooks/multimail/git_multimail.py
+++ /dev/null
@@ -1,4346 +0,0 @@
-#! /usr/bin/env python
-
-__version__ = '1.5.0'
-
-# Copyright (c) 2015-2016 Matthieu Moy and others
-# Copyright (c) 2012-2014 Michael Haggerty and others
-# Derived from contrib/hooks/post-receive-email, which is
-# Copyright (c) 2007 Andy Parkins
-# and also includes contributions by other authors.
-#
-# This file is part of git-multimail.
-#
-# git-multimail is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see
-# <http://www.gnu.org/licenses/>.
-
-"""Generate notification emails for pushes to a git repository.
-
-This hook sends emails describing changes introduced by pushes to a
-git repository.  For each reference that was changed, it emits one
-ReferenceChange email summarizing how the reference was changed,
-followed by one Revision email for each new commit that was introduced
-by the reference change.
-
-Each commit is announced in exactly one Revision email.  If the same
-commit is merged into another branch in the same or a later push, then
-the ReferenceChange email will list the commit's SHA1 and its one-line
-summary, but no new Revision email will be generated.
-
-This script is designed to be used as a "post-receive" hook in a git
-repository (see githooks(5)).  It can also be used as an "update"
-script, but this usage is not completely reliable and is deprecated.
-
-To help with debugging, this script accepts a --stdout option, which
-causes the emails to be written to standard output rather than sent
-using sendmail.
-
-See the accompanying README file for the complete documentation.
-
-"""
-
-import sys
-import os
-import re
-import bisect
-import socket
-import subprocess
-import shlex
-import optparse
-import logging
-import smtplib
-try:
-    import ssl
-except ImportError:
-    # Python < 2.6 do not have ssl, but that's OK if we don't use it.
-    pass
-import time
-
-import uuid
-import base64
-
-PYTHON3 = sys.version_info >= (3, 0)
-
-if sys.version_info <= (2, 5):
-    def all(iterable):
-        for element in iterable:
-            if not element:
-                return False
-        return True
-
-
-def is_ascii(s):
-    return all(ord(c) < 128 and ord(c) > 0 for c in s)
-
-
-if PYTHON3:
-    def is_string(s):
-        return isinstance(s, str)
-
-    def str_to_bytes(s):
-        return s.encode(ENCODING)
-
-    def bytes_to_str(s, errors='strict'):
-        return s.decode(ENCODING, errors)
-
-    unicode = str
-
-    def write_str(f, msg):
-        # Try outputting with the default encoding. If it fails,
-        # try UTF-8.
-        try:
-            f.buffer.write(msg.encode(sys.getdefaultencoding()))
-        except UnicodeEncodeError:
-            f.buffer.write(msg.encode(ENCODING))
-
-    def read_line(f):
-        # Try reading with the default encoding. If it fails,
-        # try UTF-8.
-        out = f.buffer.readline()
-        try:
-            return out.decode(sys.getdefaultencoding())
-        except UnicodeEncodeError:
-            return out.decode(ENCODING)
-
-    import html
-
-    def html_escape(s):
-        return html.escape(s)
-
-else:
-    def is_string(s):
-        try:
-            return isinstance(s, basestring)
-        except NameError:  # Silence Pyflakes warning
-            raise
-
-    def str_to_bytes(s):
-        return s
-
-    def bytes_to_str(s, errors='strict'):
-        return s
-
-    def write_str(f, msg):
-        f.write(msg)
-
-    def read_line(f):
-        return f.readline()
-
-    def next(it):
-        return it.next()
-
-    import cgi
-
-    def html_escape(s):
-        return cgi.escape(s, True)
-
-try:
-    from email.charset import Charset
-    from email.utils import make_msgid
-    from email.utils import getaddresses
-    from email.utils import formataddr
-    from email.utils import formatdate
-    from email.header import Header
-except ImportError:
-    # Prior to Python 2.5, the email module used different names:
-    from email.Charset import Charset
-    from email.Utils import make_msgid
-    from email.Utils import getaddresses
-    from email.Utils import formataddr
-    from email.Utils import formatdate
-    from email.Header import Header
-
-
-DEBUG = False
-
-ZEROS = '0' * 40
-LOGBEGIN = '- Log -----------------------------------------------------------------\n'
-LOGEND = '-----------------------------------------------------------------------\n'
-
-ADDR_HEADERS = set(['from', 'to', 'cc', 'bcc', 'reply-to', 'sender'])
-
-# It is assumed in many places that the encoding is uniformly UTF-8,
-# so changing these constants is unsupported.  But define them here
-# anyway, to make it easier to find (at least most of) the places
-# where the encoding is important.
-(ENCODING, CHARSET) = ('UTF-8', 'utf-8')
-
-
-REF_CREATED_SUBJECT_TEMPLATE = (
-    '%(emailprefix)s%(refname_type)s %(short_refname)s created'
-    ' (now %(newrev_short)s)'
-    )
-REF_UPDATED_SUBJECT_TEMPLATE = (
-    '%(emailprefix)s%(refname_type)s %(short_refname)s updated'
-    ' (%(oldrev_short)s -> %(newrev_short)s)'
-    )
-REF_DELETED_SUBJECT_TEMPLATE = (
-    '%(emailprefix)s%(refname_type)s %(short_refname)s deleted'
-    ' (was %(oldrev_short)s)'
-    )
-
-COMBINED_REFCHANGE_REVISION_SUBJECT_TEMPLATE = (
-    '%(emailprefix)s%(refname_type)s %(short_refname)s updated: %(oneline)s'
-    )
-
-REFCHANGE_HEADER_TEMPLATE = """\
-Date: %(send_date)s
-To: %(recipients)s
-Subject: %(subject)s
-MIME-Version: 1.0
-Content-Type: text/%(contenttype)s; charset=%(charset)s
-Content-Transfer-Encoding: 8bit
-Message-ID: %(msgid)s
-From: %(fromaddr)s
-Reply-To: %(reply_to)s
-Thread-Index: %(thread_index)s
-X-Git-Host: %(fqdn)s
-X-Git-Repo: %(repo_shortname)s
-X-Git-Refname: %(refname)s
-X-Git-Reftype: %(refname_type)s
-X-Git-Oldrev: %(oldrev)s
-X-Git-Newrev: %(newrev)s
-X-Git-NotificationType: ref_changed
-X-Git-Multimail-Version: %(multimail_version)s
-Auto-Submitted: auto-generated
-"""
-
-REFCHANGE_INTRO_TEMPLATE = """\
-This is an automated email from the git hooks/post-receive script.
-
-%(pusher)s pushed a change to %(refname_type)s %(short_refname)s
-in repository %(repo_shortname)s.
-
-"""
-
-
-FOOTER_TEMPLATE = """\
-
--- \n\
-To stop receiving notification emails like this one, please contact
-%(administrator)s.
-"""
-
-
-REWIND_ONLY_TEMPLATE = """\
-This update removed existing revisions from the reference, leaving the
-reference pointing at a previous point in the repository history.
-
- * -- * -- N   %(refname)s (%(newrev_short)s)
-            \\
-             O -- O -- O   (%(oldrev_short)s)
-
-Any revisions marked "omit" are not gone; other references still
-refer to them.  Any revisions marked "discard" are gone forever.
-"""
-
-
-NON_FF_TEMPLATE = """\
-This update added new revisions after undoing existing revisions.
-That is to say, some revisions that were in the old version of the
-%(refname_type)s are not in the new version.  This situation occurs
-when a user --force pushes a change and generates a repository
-containing something like this:
-
- * -- * -- B -- O -- O -- O   (%(oldrev_short)s)
-            \\
-             N -- N -- N   %(refname)s (%(newrev_short)s)
-
-You should already have received notification emails for all of the O
-revisions, and so the following emails describe only the N revisions
-from the common base, B.
-
-Any revisions marked "omit" are not gone; other references still
-refer to them.  Any revisions marked "discard" are gone forever.
-"""
-
-
-NO_NEW_REVISIONS_TEMPLATE = """\
-No new revisions were added by this update.
-"""
-
-
-DISCARDED_REVISIONS_TEMPLATE = """\
-This change permanently discards the following revisions:
-"""
-
-
-NO_DISCARDED_REVISIONS_TEMPLATE = """\
-The revisions that were on this %(refname_type)s are still contained in
-other references; therefore, this change does not discard any commits
-from the repository.
-"""
-
-
-NEW_REVISIONS_TEMPLATE = """\
-The %(tot)s revisions listed above as "new" are entirely new to this
-repository and will be described in separate emails.  The revisions
-listed as "add" were already present in the repository and have only
-been added to this reference.
-
-"""
-
-
-TAG_CREATED_TEMPLATE = """\
-      at %(newrev_short)-8s (%(newrev_type)s)
-"""
-
-
-TAG_UPDATED_TEMPLATE = """\
-*** WARNING: tag %(short_refname)s was modified! ***
-
-    from %(oldrev_short)-8s (%(oldrev_type)s)
-      to %(newrev_short)-8s (%(newrev_type)s)
-"""
-
-
-TAG_DELETED_TEMPLATE = """\
-*** WARNING: tag %(short_refname)s was deleted! ***
-
-"""
-
-
-# The template used in summary tables.  It looks best if this uses the
-# same alignment as TAG_CREATED_TEMPLATE and TAG_UPDATED_TEMPLATE.
-BRIEF_SUMMARY_TEMPLATE = """\
-%(action)8s %(rev_short)-8s %(text)s
-"""
-
-
-NON_COMMIT_UPDATE_TEMPLATE = """\
-This is an unusual reference change because the reference did not
-refer to a commit either before or after the change.  We do not know
-how to provide full information about this reference change.
-"""
-
-
-REVISION_HEADER_TEMPLATE = """\
-Date: %(send_date)s
-To: %(recipients)s
-Cc: %(cc_recipients)s
-Subject: %(emailprefix)s%(num)02d/%(tot)02d: %(oneline)s
-MIME-Version: 1.0
-Content-Type: text/%(contenttype)s; charset=%(charset)s
-Content-Transfer-Encoding: 8bit
-From: %(fromaddr)s
-Reply-To: %(reply_to)s
-In-Reply-To: %(reply_to_msgid)s
-References: %(reply_to_msgid)s
-Thread-Index: %(thread_index)s
-X-Git-Host: %(fqdn)s
-X-Git-Repo: %(repo_shortname)s
-X-Git-Refname: %(refname)s
-X-Git-Reftype: %(refname_type)s
-X-Git-Rev: %(rev)s
-X-Git-NotificationType: diff
-X-Git-Multimail-Version: %(multimail_version)s
-Auto-Submitted: auto-generated
-"""
-
-REVISION_INTRO_TEMPLATE = """\
-This is an automated email from the git hooks/post-receive script.
-
-%(pusher)s pushed a commit to %(refname_type)s %(short_refname)s
-in repository %(repo_shortname)s.
-
-"""
-
-LINK_TEXT_TEMPLATE = """\
-View the commit online:
-%(browse_url)s
-
-"""
-
-LINK_HTML_TEMPLATE = """\
-<p><a href="%(browse_url)s">View the commit online</a>.</p>
-"""
-
-
-REVISION_FOOTER_TEMPLATE = FOOTER_TEMPLATE
-
-
-# Combined, meaning refchange+revision email (for single-commit additions)
-COMBINED_HEADER_TEMPLATE = """\
-Date: %(send_date)s
-To: %(recipients)s
-Subject: %(subject)s
-MIME-Version: 1.0
-Content-Type: text/%(contenttype)s; charset=%(charset)s
-Content-Transfer-Encoding: 8bit
-Message-ID: %(msgid)s
-From: %(fromaddr)s
-Reply-To: %(reply_to)s
-X-Git-Host: %(fqdn)s
-X-Git-Repo: %(repo_shortname)s
-X-Git-Refname: %(refname)s
-X-Git-Reftype: %(refname_type)s
-X-Git-Oldrev: %(oldrev)s
-X-Git-Newrev: %(newrev)s
-X-Git-Rev: %(rev)s
-X-Git-NotificationType: ref_changed_plus_diff
-X-Git-Multimail-Version: %(multimail_version)s
-Auto-Submitted: auto-generated
-"""
-
-COMBINED_INTRO_TEMPLATE = """\
-This is an automated email from the git hooks/post-receive script.
-
-%(pusher)s pushed a commit to %(refname_type)s %(short_refname)s
-in repository %(repo_shortname)s.
-
-"""
-
-COMBINED_FOOTER_TEMPLATE = FOOTER_TEMPLATE
-
-
-class CommandError(Exception):
-    def __init__(self, cmd, retcode):
-        self.cmd = cmd
-        self.retcode = retcode
-        Exception.__init__(
-            self,
-            'Command "%s" failed with retcode %s' % (' '.join(cmd), retcode,)
-            )
-
-
-class ConfigurationException(Exception):
-    pass
-
-
-# The "git" program (this could be changed to include a full path):
-GIT_EXECUTABLE = 'git'
-
-
-# How "git" should be invoked (including global arguments), as a list
-# of words.  This variable is usually initialized automatically by
-# read_git_output() via choose_git_command(), but if a value is set
-# here then it will be used unconditionally.
-GIT_CMD = None
-
-
-def choose_git_command():
-    """Decide how to invoke git, and record the choice in GIT_CMD."""
-
-    global GIT_CMD
-
-    if GIT_CMD is None:
-        try:
-            # Check to see whether the "-c" option is accepted (it was
-            # only added in Git 1.7.2).  We don't actually use the
-            # output of "git --version", though if we needed more
-            # specific version information this would be the place to
-            # do it.
-            cmd = [GIT_EXECUTABLE, '-c', 'foo.bar=baz', '--version']
-            read_output(cmd)
-            GIT_CMD = [GIT_EXECUTABLE, '-c', 'i18n.logoutputencoding=%s' % (ENCODING,)]
-        except CommandError:
-            GIT_CMD = [GIT_EXECUTABLE]
-
-
-def read_git_output(args, input=None, keepends=False, **kw):
-    """Read the output of a Git command."""
-
-    if GIT_CMD is None:
-        choose_git_command()
-
-    return read_output(GIT_CMD + args, input=input, keepends=keepends, **kw)
-
-
-def read_output(cmd, input=None, keepends=False, **kw):
-    if input:
-        stdin = subprocess.PIPE
-        input = str_to_bytes(input)
-    else:
-        stdin = None
-    errors = 'strict'
-    if 'errors' in kw:
-        errors = kw['errors']
-        del kw['errors']
-    p = subprocess.Popen(
-        tuple(str_to_bytes(w) for w in cmd),
-        stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kw
-        )
-    (out, err) = p.communicate(input)
-    out = bytes_to_str(out, errors=errors)
-    retcode = p.wait()
-    if retcode:
-        raise CommandError(cmd, retcode)
-    if not keepends:
-        out = out.rstrip('\n\r')
-    return out
-
-
-def read_git_lines(args, keepends=False, **kw):
-    """Return the lines output by Git command.
-
-    Return as single lines, with newlines stripped off."""
-
-    return read_git_output(args, keepends=True, **kw).splitlines(keepends)
-
-
-def git_rev_list_ish(cmd, spec, args=None, **kw):
-    """Common functionality for invoking a 'git rev-list'-like command.
-
-    Parameters:
-      * cmd is the Git command to run, e.g., 'rev-list' or 'log'.
-      * spec is a list of revision arguments to pass to the named
-        command.  If None, this function returns an empty list.
-      * args is a list of extra arguments passed to the named command.
-      * All other keyword arguments (if any) are passed to the
-        underlying read_git_lines() function.
-
-    Return the output of the Git command in the form of a list, one
-    entry per output line.
-    """
-    if spec is None:
-        return []
-    if args is None:
-        args = []
-    args = [cmd, '--stdin'] + args
-    spec_stdin = ''.join(s + '\n' for s in spec)
-    return read_git_lines(args, input=spec_stdin, **kw)
-
-
-def git_rev_list(spec, **kw):
-    """Run 'git rev-list' with the given list of revision arguments.
-
-    See git_rev_list_ish() for parameter and return value
-    documentation.
-    """
-    return git_rev_list_ish('rev-list', spec, **kw)
-
-
-def git_log(spec, **kw):
-    """Run 'git log' with the given list of revision arguments.
-
-    See git_rev_list_ish() for parameter and return value
-    documentation.
-    """
-    return git_rev_list_ish('log', spec, **kw)
-
-
-def header_encode(text, header_name=None):
-    """Encode and line-wrap the value of an email header field."""
-
-    # Convert to unicode, if required.
-    if not isinstance(text, unicode):
-        text = unicode(text, 'utf-8')
-
-    if is_ascii(text):
-        charset = 'ascii'
-    else:
-        charset = 'utf-8'
-
-    return Header(text, header_name=header_name, charset=Charset(charset)).encode()
-
-
-def addr_header_encode(text, header_name=None):
-    """Encode and line-wrap the value of an email header field containing
-    email addresses."""
-
-    # Convert to unicode, if required.
-    if not isinstance(text, unicode):
-        text = unicode(text, 'utf-8')
-
-    text = ', '.join(
-        formataddr((header_encode(name), emailaddr))
-        for name, emailaddr in getaddresses([text])
-        )
-
-    if is_ascii(text):
-        charset = 'ascii'
-    else:
-        charset = 'utf-8'
-
-    return Header(text, header_name=header_name, charset=Charset(charset)).encode()
-
-
-class Config(object):
-    def __init__(self, section, git_config=None):
-        """Represent a section of the git configuration.
-
-        If git_config is specified, it is passed to "git config" in
-        the GIT_CONFIG environment variable, meaning that "git config"
-        will read the specified path rather than the Git default
-        config paths."""
-
-        self.section = section
-        if git_config:
-            self.env = os.environ.copy()
-            self.env['GIT_CONFIG'] = git_config
-        else:
-            self.env = None
-
-    @staticmethod
-    def _split(s):
-        """Split NUL-terminated values."""
-
-        words = s.split('\0')
-        assert words[-1] == ''
-        return words[:-1]
-
-    @staticmethod
-    def add_config_parameters(c):
-        """Add configuration parameters to Git.
-
-        c is either an str or a list of str, each element being of the
-        form 'var=val' or 'var', with the same syntax and meaning as
-        the argument of 'git -c var=val'.
-        """
-        if isinstance(c, str):
-            c = (c,)
-        parameters = os.environ.get('GIT_CONFIG_PARAMETERS', '')
-        if parameters:
-            parameters += ' '
-        # git expects GIT_CONFIG_PARAMETERS to be of the form
-        #    "'name1=value1' 'name2=value2' 'name3=value3'"
-        # including everything inside the double quotes (but not the double
-        # quotes themselves).  Spacing is critical.  Also, if a value contains
-        # a literal single quote that quote must be represented using the
-        # four character sequence: '\''
-        parameters += ' '.join("'" + x.replace("'", "'\\''") + "'" for x in c)
-        os.environ['GIT_CONFIG_PARAMETERS'] = parameters
-
-    def get(self, name, default=None):
-        try:
-            values = self._split(read_git_output(
-                ['config', '--get', '--null', '%s.%s' % (self.section, name)],
-                env=self.env, keepends=True,
-                ))
-            assert len(values) == 1
-            return values[0]
-        except CommandError:
-            return default
-
-    def get_bool(self, name, default=None):
-        try:
-            value = read_git_output(
-                ['config', '--get', '--bool', '%s.%s' % (self.section, name)],
-                env=self.env,
-                )
-        except CommandError:
-            return default
-        return value == 'true'
-
-    def get_all(self, name, default=None):
-        """Read a (possibly multivalued) setting from the configuration.
-
-        Return the result as a list of values, or default if the name
-        is unset."""
-
-        try:
-            return self._split(read_git_output(
-                ['config', '--get-all', '--null', '%s.%s' % (self.section, name)],
-                env=self.env, keepends=True,
-                ))
-        except CommandError:
-            t, e, traceback = sys.exc_info()
-            if e.retcode == 1:
-                # "the section or key is invalid"; i.e., there is no
-                # value for the specified key.
-                return default
-            else:
-                raise
-
-    def set(self, name, value):
-        read_git_output(
-            ['config', '%s.%s' % (self.section, name), value],
-            env=self.env,
-            )
-
-    def add(self, name, value):
-        read_git_output(
-            ['config', '--add', '%s.%s' % (self.section, name), value],
-            env=self.env,
-            )
-
-    def __contains__(self, name):
-        return self.get_all(name, default=None) is not None
-
-    # We don't use this method anymore internally, but keep it here in
-    # case somebody is calling it from their own code:
-    def has_key(self, name):
-        return name in self
-
-    def unset_all(self, name):
-        try:
-            read_git_output(
-                ['config', '--unset-all', '%s.%s' % (self.section, name)],
-                env=self.env,
-                )
-        except CommandError:
-            t, e, traceback = sys.exc_info()
-            if e.retcode == 5:
-                # The name doesn't exist, which is what we wanted anyway...
-                pass
-            else:
-                raise
-
-    def set_recipients(self, name, value):
-        self.unset_all(name)
-        for pair in getaddresses([value]):
-            self.add(name, formataddr(pair))
-
-
-def generate_summaries(*log_args):
-    """Generate a brief summary for each revision requested.
-
-    log_args are strings that will be passed directly to "git log" as
-    revision selectors.  Iterate over (sha1_short, subject) for each
-    commit specified by log_args (subject is the first line of the
-    commit message as a string without EOLs)."""
-
-    cmd = [
-        'log', '--abbrev', '--format=%h %s',
-        ] + list(log_args) + ['--']
-    for line in read_git_lines(cmd):
-        yield tuple(line.split(' ', 1))
-
-
-def limit_lines(lines, max_lines):
-    for (index, line) in enumerate(lines):
-        if index < max_lines:
-            yield line
-
-    if index >= max_lines:
-        yield '... %d lines suppressed ...\n' % (index + 1 - max_lines,)
-
-
-def limit_linelength(lines, max_linelength):
-    for line in lines:
-        # Don't forget that lines always include a trailing newline.
-        if len(line) > max_linelength + 1:
-            line = line[:max_linelength - 7] + ' [...]\n'
-        yield line
-
-
-class CommitSet(object):
-    """A (constant) set of object names.
-
-    The set should be initialized with full SHA1 object names.  The
-    __contains__() method returns True iff its argument is an
-    abbreviation of any the names in the set."""
-
-    def __init__(self, names):
-        self._names = sorted(names)
-
-    def __len__(self):
-        return len(self._names)
-
-    def __contains__(self, sha1_abbrev):
-        """Return True iff this set contains sha1_abbrev (which might be abbreviated)."""
-
-        i = bisect.bisect_left(self._names, sha1_abbrev)
-        return i < len(self) and self._names[i].startswith(sha1_abbrev)
-
-
-class GitObject(object):
-    def __init__(self, sha1, type=None):
-        if sha1 == ZEROS:
-            self.sha1 = self.type = self.commit_sha1 = None
-        else:
-            self.sha1 = sha1
-            self.type = type or read_git_output(['cat-file', '-t', self.sha1])
-
-            if self.type == 'commit':
-                self.commit_sha1 = self.sha1
-            elif self.type == 'tag':
-                try:
-                    self.commit_sha1 = read_git_output(
-                        ['rev-parse', '--verify', '%s^0' % (self.sha1,)]
-                        )
-                except CommandError:
-                    # Cannot deref tag to determine commit_sha1
-                    self.commit_sha1 = None
-            else:
-                self.commit_sha1 = None
-
-        self.short = read_git_output(['rev-parse', '--short', sha1])
-
-    def get_summary(self):
-        """Return (sha1_short, subject) for this commit."""
-
-        if not self.sha1:
-            raise ValueError('Empty commit has no summary')
-
-        return next(iter(generate_summaries('--no-walk', self.sha1)))
-
-    def __eq__(self, other):
-        return isinstance(other, GitObject) and self.sha1 == other.sha1
-
-    def __ne__(self, other):
-        return not self == other
-
-    def __hash__(self):
-        return hash(self.sha1)
-
-    def __nonzero__(self):
-        return bool(self.sha1)
-
-    def __bool__(self):
-        """Python 2 backward compatibility"""
-        return self.__nonzero__()
-
-    def __str__(self):
-        return self.sha1 or ZEROS
-
-
-class Change(object):
-    """A Change that has been made to the Git repository.
-
-    Abstract class from which both Revisions and ReferenceChanges are
-    derived.  A Change knows how to generate a notification email
-    describing itself."""
-
-    def __init__(self, environment):
-        self.environment = environment
-        self._values = None
-        self._contains_html_diff = False
-
-    def _contains_diff(self):
-        # We do contain a diff, should it be rendered in HTML?
-        if self.environment.commit_email_format == "html":
-            self._contains_html_diff = True
-
-    def _compute_values(self):
-        """Return a dictionary {keyword: expansion} for this Change.
-
-        Derived classes overload this method to add more entries to
-        the return value.  This method is used internally by
-        get_values().  The return value should always be a new
-        dictionary."""
-
-        values = self.environment.get_values()
-        fromaddr = self.environment.get_fromaddr(change=self)
-        if fromaddr is not None:
-            values['fromaddr'] = fromaddr
-        values['multimail_version'] = get_version()
-        return values
-
-    # Aliases usable in template strings. Tuple of pairs (destination,
-    # source).
-    VALUES_ALIAS = (
-        ("id", "newrev"),
-        )
-
-    def get_values(self, **extra_values):
-        """Return a dictionary {keyword: expansion} for this Change.
-
-        Return a dictionary mapping keywords to the values that they
-        should be expanded to for this Change (used when interpolating
-        template strings).  If any keyword arguments are supplied, add
-        those to the return value as well.  The return value is always
-        a new dictionary."""
-
-        if self._values is None:
-            self._values = self._compute_values()
-
-        values = self._values.copy()
-        if extra_values:
-            values.update(extra_values)
-
-        for alias, val in self.VALUES_ALIAS:
-            values[alias] = values[val]
-        return values
-
-    def expand(self, template, **extra_values):
-        """Expand template.
-
-        Expand the template (which should be a string) using string
-        interpolation of the values for this Change.  If any keyword
-        arguments are provided, also include those in the keywords
-        available for interpolation."""
-
-        return template % self.get_values(**extra_values)
-
-    def expand_lines(self, template, html_escape_val=False, **extra_values):
-        """Break template into lines and expand each line."""
-
-        values = self.get_values(**extra_values)
-        if html_escape_val:
-            for k in values:
-                if is_string(values[k]):
-                    values[k] = html_escape(values[k])
-        for line in template.splitlines(True):
-            yield line % values
-
-    def expand_header_lines(self, template, **extra_values):
-        """Break template into lines and expand each line as an RFC 2822 header.
-
-        Encode values and split up lines that are too long.  Silently
-        skip lines that contain references to unknown variables."""
-
-        values = self.get_values(**extra_values)
-        if self._contains_html_diff:
-            self._content_type = 'html'
-        else:
-            self._content_type = 'plain'
-        values['contenttype'] = self._content_type
-
-        for line in template.splitlines():
-            (name, value) = line.split(': ', 1)
-
-            try:
-                value = value % values
-            except KeyError:
-                t, e, traceback = sys.exc_info()
-                if DEBUG:
-                    self.environment.log_warning(
-                        'Warning: unknown variable %r in the following line; line skipped:\n'
-                        '    %s\n'
-                        % (e.args[0], line,)
-                        )
-            else:
-                if name.lower() in ADDR_HEADERS:
-                    value = addr_header_encode(value, name)
-                else:
-                    value = header_encode(value, name)
-                for splitline in ('%s: %s\n' % (name, value)).splitlines(True):
-                    yield splitline
-
-    def generate_email_header(self):
-        """Generate the RFC 2822 email headers for this Change, a line at a time.
-
-        The output should not include the trailing blank line."""
-
-        raise NotImplementedError()
-
-    def generate_browse_link(self, base_url):
-        """Generate a link to an online repository browser."""
-        return iter(())
-
-    def generate_email_intro(self, html_escape_val=False):
-        """Generate the email intro for this Change, a line at a time.
-
-        The output will be used as the standard boilerplate at the top
-        of the email body."""
-
-        raise NotImplementedError()
-
-    def generate_email_body(self, push):
-        """Generate the main part of the email body, a line at a time.
-
-        The text in the body might be truncated after a specified
-        number of lines (see multimailhook.emailmaxlines)."""
-
-        raise NotImplementedError()
-
-    def generate_email_footer(self, html_escape_val):
-        """Generate the footer of the email, a line at a time.
-
-        The footer is always included, irrespective of
-        multimailhook.emailmaxlines."""
-
-        raise NotImplementedError()
-
-    def _wrap_for_html(self, lines):
-        """Wrap the lines in HTML <pre> tag when using HTML format.
-
-        Escape special HTML characters and add <pre> and </pre> tags around
-        the given lines if we should be generating HTML as indicated by
-        self._contains_html_diff being set to true.
-        """
-        if self._contains_html_diff:
-            yield "<pre style='margin:0'>\n"
-
-            for line in lines:
-                yield html_escape(line)
-
-            yield '</pre>\n'
-        else:
-            for line in lines:
-                yield line
-
-    def generate_email(self, push, body_filter=None, extra_header_values={}):
-        """Generate an email describing this change.
-
-        Iterate over the lines (including the header lines) of an
-        email describing this change.  If body_filter is not None,
-        then use it to filter the lines that are intended for the
-        email body.
-
-        The extra_header_values field is received as a dict and not as
-        **kwargs, to allow passing other keyword arguments in the
-        future (e.g. passing extra values to generate_email_intro()"""
-
-        for line in self.generate_email_header(**extra_header_values):
-            yield line
-        yield '\n'
-        html_escape_val = (self.environment.html_in_intro and
-                           self._contains_html_diff)
-        intro = self.generate_email_intro(html_escape_val)
-        if not self.environment.html_in_intro:
-            intro = self._wrap_for_html(intro)
-        for line in intro:
-            yield line
-
-        if self.environment.commitBrowseURL:
-            for line in self.generate_browse_link(self.environment.commitBrowseURL):
-                yield line
-
-        body = self.generate_email_body(push)
-        if body_filter is not None:
-            body = body_filter(body)
-
-        diff_started = False
-        if self._contains_html_diff:
-            # "white-space: pre" is the default, but we need to
-            # specify it again in case the message is viewed in a
-            # webmail which wraps it in an element setting white-space
-            # to something else (Zimbra does this and sets
-            # white-space: pre-line).
-            yield '<pre style="white-space: pre; background: #F8F8F8">'
-        for line in body:
-            if self._contains_html_diff:
-                # This is very, very naive. It would be much better to really
-                # parse the diff, i.e. look at how many lines do we have in
-                # the hunk headers instead of blindly highlighting everything
-                # that looks like it might be part of a diff.
-                bgcolor = ''
-                fgcolor = ''
-                if line.startswith('--- a/'):
-                    diff_started = True
-                    bgcolor = 'e0e0ff'
-                elif line.startswith('diff ') or line.startswith('index '):
-                    diff_started = True
-                    fgcolor = '808080'
-                elif diff_started:
-                    if line.startswith('+++ '):
-                        bgcolor = 'e0e0ff'
-                    elif line.startswith('@@'):
-                        bgcolor = 'e0e0e0'
-                    elif line.startswith('+'):
-                        bgcolor = 'e0ffe0'
-                    elif line.startswith('-'):
-                        bgcolor = 'ffe0e0'
-                elif line.startswith('commit '):
-                    fgcolor = '808000'
-                elif line.startswith('    '):
-                    fgcolor = '404040'
-
-                # Chop the trailing LF, we don't want it inside <pre>.
-                line = html_escape(line[:-1])
-
-                if bgcolor or fgcolor:
-                    style = 'display:block; white-space:pre;'
-                    if bgcolor:
-                        style += 'background:#' + bgcolor + ';'
-                    if fgcolor:
-                        style += 'color:#' + fgcolor + ';'
-                    # Use a <span style='display:block> to color the
-                    # whole line. The newline must be inside the span
-                    # to display properly both in Firefox and in
-                    # text-based browser.
-                    line = "<span style='%s'>%s\n</span>" % (style, line)
-                else:
-                    line = line + '\n'
-
-            yield line
-        if self._contains_html_diff:
-            yield '</pre>'
-        html_escape_val = (self.environment.html_in_footer and
-                           self._contains_html_diff)
-        footer = self.generate_email_footer(html_escape_val)
-        if not self.environment.html_in_footer:
-            footer = self._wrap_for_html(footer)
-        for line in footer:
-            yield line
-
-    def get_specific_fromaddr(self):
-        """For kinds of Changes which specify it, return the kind-specific
-        From address to use."""
-        return None
-
-
-class Revision(Change):
-    """A Change consisting of a single git commit."""
-
-    CC_RE = re.compile(r'^\s*C[Cc]:\s*(?P<to>[^#]+@[^\s#]*)\s*(#.*)?$')
-
-    def __init__(self, reference_change, rev, num, tot):
-        Change.__init__(self, reference_change.environment)
-        self.reference_change = reference_change
-        self.rev = rev
-        self.change_type = self.reference_change.change_type
-        self.refname = self.reference_change.refname
-        self.num = num
-        self.tot = tot
-        self.author = read_git_output(['log', '--no-walk', '--format=%aN <%aE>', self.rev.sha1])
-        self.recipients = self.environment.get_revision_recipients(self)
-
-        # -s is short for --no-patch, but -s works on older git's (e.g. 1.7)
-        self.parents = read_git_lines(['show', '-s', '--format=%P',
-                                      self.rev.sha1])[0].split()
-
-        self.cc_recipients = ''
-        if self.environment.get_scancommitforcc():
-            self.cc_recipients = ', '.join(to.strip() for to in self._cc_recipients())
-            if self.cc_recipients:
-                self.environment.log_msg(
-                    'Add %s to CC for %s' % (self.cc_recipients, self.rev.sha1))
-
-    def _cc_recipients(self):
-        cc_recipients = []
-        message = read_git_output(['log', '--no-walk', '--format=%b', self.rev.sha1])
-        lines = message.strip().split('\n')
-        for line in lines:
-            m = re.match(self.CC_RE, line)
-            if m:
-                cc_recipients.append(m.group('to'))
-
-        return cc_recipients
-
-    def _compute_values(self):
-        values = Change._compute_values(self)
-
-        oneline = read_git_output(
-            ['log', '--format=%s', '--no-walk', self.rev.sha1]
-            )
-
-        max_subject_length = self.environment.get_max_subject_length()
-        if max_subject_length > 0 and len(oneline) > max_subject_length:
-            oneline = oneline[:max_subject_length - 6] + ' [...]'
-
-        values['rev'] = self.rev.sha1
-        values['parents'] = ' '.join(self.parents)
-        values['rev_short'] = self.rev.short
-        values['change_type'] = self.change_type
-        values['refname'] = self.refname
-        values['newrev'] = self.rev.sha1
-        values['short_refname'] = self.reference_change.short_refname
-        values['refname_type'] = self.reference_change.refname_type
-        values['reply_to_msgid'] = self.reference_change.msgid
-        values['thread_index'] = self.reference_change.thread_index
-        values['num'] = self.num
-        values['tot'] = self.tot
-        values['recipients'] = self.recipients
-        if self.cc_recipients:
-            values['cc_recipients'] = self.cc_recipients
-        values['oneline'] = oneline
-        values['author'] = self.author
-
-        reply_to = self.environment.get_reply_to_commit(self)
-        if reply_to:
-            values['reply_to'] = reply_to
-
-        return values
-
-    def generate_email_header(self, **extra_values):
-        for line in self.expand_header_lines(
-                REVISION_HEADER_TEMPLATE, **extra_values
-                ):
-            yield line
-
-    def generate_browse_link(self, base_url):
-        if '%(' not in base_url:
-            base_url += '%(id)s'
-        url = "".join(self.expand_lines(base_url))
-        if self._content_type == 'html':
-            for line in self.expand_lines(LINK_HTML_TEMPLATE,
-                                          html_escape_val=True,
-                                          browse_url=url):
-                yield line
-        elif self._content_type == 'plain':
-            for line in self.expand_lines(LINK_TEXT_TEMPLATE,
-                                          html_escape_val=False,
-                                          browse_url=url):
-                yield line
-        else:
-            raise NotImplementedError("Content-type %s unsupported. Please report it as a bug.")
-
-    def generate_email_intro(self, html_escape_val=False):
-        for line in self.expand_lines(REVISION_INTRO_TEMPLATE,
-                                      html_escape_val=html_escape_val):
-            yield line
-
-    def generate_email_body(self, push):
-        """Show this revision."""
-
-        for line in read_git_lines(
-                ['log'] + self.environment.commitlogopts + ['-1', self.rev.sha1],
-                keepends=True,
-                errors='replace'):
-            if line.startswith('Date:   ') and self.environment.date_substitute:
-                yield self.environment.date_substitute + line[len('Date:   '):]
-            else:
-                yield line
-
-    def generate_email_footer(self, html_escape_val):
-        return self.expand_lines(REVISION_FOOTER_TEMPLATE,
-                                 html_escape_val=html_escape_val)
-
-    def generate_email(self, push, body_filter=None, extra_header_values={}):
-        self._contains_diff()
-        return Change.generate_email(self, push, body_filter, extra_header_values)
-
-    def get_specific_fromaddr(self):
-        return self.environment.from_commit
-
-
-class ReferenceChange(Change):
-    """A Change to a Git reference.
-
-    An abstract class representing a create, update, or delete of a
-    Git reference.  Derived classes handle specific types of reference
-    (e.g., tags vs. branches).  These classes generate the main
-    reference change email summarizing the reference change and
-    whether it caused any any commits to be added or removed.
-
-    ReferenceChange objects are usually created using the static
-    create() method, which has the logic to decide which derived class
-    to instantiate."""
-
-    REF_RE = re.compile(r'^refs\/(?P<area>[^\/]+)\/(?P<shortname>.*)$')
-
-    @staticmethod
-    def create(environment, oldrev, newrev, refname):
-        """Return a ReferenceChange object representing the change.
-
-        Return an object that represents the type of change that is being
-        made. oldrev and newrev should be SHA1s or ZEROS."""
-
-        old = GitObject(oldrev)
-        new = GitObject(newrev)
-        rev = new or old
-
-        # The revision type tells us what type the commit is, combined with
-        # the location of the ref we can decide between
-        #  - working branch
-        #  - tracking branch
-        #  - unannotated tag
-        #  - annotated tag
-        m = ReferenceChange.REF_RE.match(refname)
-        if m:
-            area = m.group('area')
-            short_refname = m.group('shortname')
-        else:
-            area = ''
-            short_refname = refname
-
-        if rev.type == 'tag':
-            # Annotated tag:
-            klass = AnnotatedTagChange
-        elif rev.type == 'commit':
-            if area == 'tags':
-                # Non-annotated tag:
-                klass = NonAnnotatedTagChange
-            elif area == 'heads':
-                # Branch:
-                klass = BranchChange
-            elif area == 'remotes':
-                # Tracking branch:
-                environment.log_warning(
-                    '*** Push-update of tracking branch %r\n'
-                    '***  - incomplete email generated.'
-                    % (refname,)
-                    )
-                klass = OtherReferenceChange
-            else:
-                # Some other reference namespace:
-                environment.log_warning(
-                    '*** Push-update of strange reference %r\n'
-                    '***  - incomplete email generated.'
-                    % (refname,)
-                    )
-                klass = OtherReferenceChange
-        else:
-            # Anything else (is there anything else?)
-            environment.log_warning(
-                '*** Unknown type of update to %r (%s)\n'
-                '***  - incomplete email generated.'
-                % (refname, rev.type,)
-                )
-            klass = OtherReferenceChange
-
-        return klass(
-            environment,
-            refname=refname, short_refname=short_refname,
-            old=old, new=new, rev=rev,
-            )
-
-    @staticmethod
-    def make_thread_index():
-        """Return a string appropriate for the Thread-Index header,
-        needed by MS Outlook to get threading right.
-
-        The format is (base64-encoded):
-        - 1 byte must be 1
-        - 5 bytes encode a date (hardcoded here)
-        - 16 bytes for a globally unique identifier
-
-        FIXME: Unfortunately, even with the Thread-Index field, MS
-        Outlook doesn't seem to do the threading reliably (see
-        https://github.com/git-multimail/git-multimail/pull/194).
-        """
-        thread_index = b'\x01\x00\x00\x12\x34\x56' + uuid.uuid4().bytes
-        return base64.standard_b64encode(thread_index).decode('ascii')
-
-    def __init__(self, environment, refname, short_refname, old, new, rev):
-        Change.__init__(self, environment)
-        self.change_type = {
-            (False, True): 'create',
-            (True, True): 'update',
-            (True, False): 'delete',
-            }[bool(old), bool(new)]
-        self.refname = refname
-        self.short_refname = short_refname
-        self.old = old
-        self.new = new
-        self.rev = rev
-        self.msgid = make_msgid()
-        self.thread_index = self.make_thread_index()
-        self.diffopts = environment.diffopts
-        self.graphopts = environment.graphopts
-        self.logopts = environment.logopts
-        self.commitlogopts = environment.commitlogopts
-        self.showgraph = environment.refchange_showgraph
-        self.showlog = environment.refchange_showlog
-
-        self.header_template = REFCHANGE_HEADER_TEMPLATE
-        self.intro_template = REFCHANGE_INTRO_TEMPLATE
-        self.footer_template = FOOTER_TEMPLATE
-
-    def _compute_values(self):
-        values = Change._compute_values(self)
-
-        values['change_type'] = self.change_type
-        values['refname_type'] = self.refname_type
-        values['refname'] = self.refname
-        values['short_refname'] = self.short_refname
-        values['msgid'] = self.msgid
-        values['thread_index'] = self.thread_index
-        values['recipients'] = self.recipients
-        values['oldrev'] = str(self.old)
-        values['oldrev_short'] = self.old.short
-        values['newrev'] = str(self.new)
-        values['newrev_short'] = self.new.short
-
-        if self.old:
-            values['oldrev_type'] = self.old.type
-        if self.new:
-            values['newrev_type'] = self.new.type
-
-        reply_to = self.environment.get_reply_to_refchange(self)
-        if reply_to:
-            values['reply_to'] = reply_to
-
-        return values
-
-    def send_single_combined_email(self, known_added_sha1s):
-        """Determine if a combined refchange/revision email should be sent
-
-        If there is only a single new (non-merge) commit added by a
-        change, it is useful to combine the ReferenceChange and
-        Revision emails into one.  In such a case, return the single
-        revision; otherwise, return None.
-
-        This method is overridden in BranchChange."""
-
-        return None
-
-    def generate_combined_email(self, push, revision, body_filter=None, extra_header_values={}):
-        """Generate an email describing this change AND specified revision.
-
-        Iterate over the lines (including the header lines) of an
-        email describing this change.  If body_filter is not None,
-        then use it to filter the lines that are intended for the
-        email body.
-
-        The extra_header_values field is received as a dict and not as
-        **kwargs, to allow passing other keyword arguments in the
-        future (e.g. passing extra values to generate_email_intro()
-
-        This method is overridden in BranchChange."""
-
-        raise NotImplementedError
-
-    def get_subject(self):
-        template = {
-            'create': REF_CREATED_SUBJECT_TEMPLATE,
-            'update': REF_UPDATED_SUBJECT_TEMPLATE,
-            'delete': REF_DELETED_SUBJECT_TEMPLATE,
-            }[self.change_type]
-        return self.expand(template)
-
-    def generate_email_header(self, **extra_values):
-        if 'subject' not in extra_values:
-            extra_values['subject'] = self.get_subject()
-
-        for line in self.expand_header_lines(
-                self.header_template, **extra_values
-                ):
-            yield line
-
-    def generate_email_intro(self, html_escape_val=False):
-        for line in self.expand_lines(self.intro_template,
-                                      html_escape_val=html_escape_val):
-            yield line
-
-    def generate_email_body(self, push):
-        """Call the appropriate body-generation routine.
-
-        Call one of generate_create_summary() /
-        generate_update_summary() / generate_delete_summary()."""
-
-        change_summary = {
-            'create': self.generate_create_summary,
-            'delete': self.generate_delete_summary,
-            'update': self.generate_update_summary,
-            }[self.change_type](push)
-        for line in change_summary:
-            yield line
-
-        for line in self.generate_revision_change_summary(push):
-            yield line
-
-    def generate_email_footer(self, html_escape_val):
-        return self.expand_lines(self.footer_template,
-                                 html_escape_val=html_escape_val)
-
-    def generate_revision_change_graph(self, push):
-        if self.showgraph:
-            args = ['--graph'] + self.graphopts
-            for newold in ('new', 'old'):
-                has_newold = False
-                spec = push.get_commits_spec(newold, self)
-                for line in git_log(spec, args=args, keepends=True):
-                    if not has_newold:
-                        has_newold = True
-                        yield '\n'
-                        yield 'Graph of %s commits:\n\n' % (
-                            {'new': 'new', 'old': 'discarded'}[newold],)
-                    yield '  ' + line
-                if has_newold:
-                    yield '\n'
-
-    def generate_revision_change_log(self, new_commits_list):
-        if self.showlog:
-            yield '\n'
-            yield 'Detailed log of new commits:\n\n'
-            for line in read_git_lines(
-                    ['log', '--no-walk'] +
-                    self.logopts +
-                    new_commits_list +
-                    ['--'],
-                    keepends=True,
-                    ):
-                yield line
-
-    def generate_new_revision_summary(self, tot, new_commits_list, push):
-        for line in self.expand_lines(NEW_REVISIONS_TEMPLATE, tot=tot):
-            yield line
-        for line in self.generate_revision_change_graph(push):
-            yield line
-        for line in self.generate_revision_change_log(new_commits_list):
-            yield line
-
-    def generate_revision_change_summary(self, push):
-        """Generate a summary of the revisions added/removed by this change."""
-
-        if self.new.commit_sha1 and not self.old.commit_sha1:
-            # A new reference was created.  List the new revisions
-            # brought by the new reference (i.e., those revisions that
-            # were not in the repository before this reference
-            # change).
-            sha1s = list(push.get_new_commits(self))
-            sha1s.reverse()
-            tot = len(sha1s)
-            new_revisions = [
-                Revision(self, GitObject(sha1), num=i + 1, tot=tot)
-                for (i, sha1) in enumerate(sha1s)
-                ]
-
-            if new_revisions:
-                yield self.expand('This %(refname_type)s includes the following new commits:\n')
-                yield '\n'
-                for r in new_revisions:
-                    (sha1, subject) = r.rev.get_summary()
-                    yield r.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action='new', text=subject,
-                        )
-                yield '\n'
-                for line in self.generate_new_revision_summary(
-                        tot, [r.rev.sha1 for r in new_revisions], push):
-                    yield line
-            else:
-                for line in self.expand_lines(NO_NEW_REVISIONS_TEMPLATE):
-                    yield line
-
-        elif self.new.commit_sha1 and self.old.commit_sha1:
-            # A reference was changed to point at a different commit.
-            # List the revisions that were removed and/or added *from
-            # that reference* by this reference change, along with a
-            # diff between the trees for its old and new values.
-
-            # List of the revisions that were added to the branch by
-            # this update.  Note this list can include revisions that
-            # have already had notification emails; we want such
-            # revisions in the summary even though we will not send
-            # new notification emails for them.
-            adds = list(generate_summaries(
-                '--topo-order', '--reverse', '%s..%s'
-                % (self.old.commit_sha1, self.new.commit_sha1,)
-                ))
-
-            # List of the revisions that were removed from the branch
-            # by this update.  This will be empty except for
-            # non-fast-forward updates.
-            discards = list(generate_summaries(
-                '%s..%s' % (self.new.commit_sha1, self.old.commit_sha1,)
-                ))
-
-            if adds:
-                new_commits_list = push.get_new_commits(self)
-            else:
-                new_commits_list = []
-            new_commits = CommitSet(new_commits_list)
-
-            if discards:
-                discarded_commits = CommitSet(push.get_discarded_commits(self))
-            else:
-                discarded_commits = CommitSet([])
-
-            if discards and adds:
-                for (sha1, subject) in discards:
-                    if sha1 in discarded_commits:
-                        action = 'discard'
-                    else:
-                        action = 'omit'
-                    yield self.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action=action,
-                        rev_short=sha1, text=subject,
-                        )
-                for (sha1, subject) in adds:
-                    if sha1 in new_commits:
-                        action = 'new'
-                    else:
-                        action = 'add'
-                    yield self.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action=action,
-                        rev_short=sha1, text=subject,
-                        )
-                yield '\n'
-                for line in self.expand_lines(NON_FF_TEMPLATE):
-                    yield line
-
-            elif discards:
-                for (sha1, subject) in discards:
-                    if sha1 in discarded_commits:
-                        action = 'discard'
-                    else:
-                        action = 'omit'
-                    yield self.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action=action,
-                        rev_short=sha1, text=subject,
-                        )
-                yield '\n'
-                for line in self.expand_lines(REWIND_ONLY_TEMPLATE):
-                    yield line
-
-            elif adds:
-                (sha1, subject) = self.old.get_summary()
-                yield self.expand(
-                    BRIEF_SUMMARY_TEMPLATE, action='from',
-                    rev_short=sha1, text=subject,
-                    )
-                for (sha1, subject) in adds:
-                    if sha1 in new_commits:
-                        action = 'new'
-                    else:
-                        action = 'add'
-                    yield self.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action=action,
-                        rev_short=sha1, text=subject,
-                        )
-
-            yield '\n'
-
-            if new_commits:
-                for line in self.generate_new_revision_summary(
-                        len(new_commits), new_commits_list, push):
-                    yield line
-            else:
-                for line in self.expand_lines(NO_NEW_REVISIONS_TEMPLATE):
-                    yield line
-                for line in self.generate_revision_change_graph(push):
-                    yield line
-
-            # The diffstat is shown from the old revision to the new
-            # revision.  This is to show the truth of what happened in
-            # this change.  There's no point showing the stat from the
-            # base to the new revision because the base is effectively a
-            # random revision at this point - the user will be interested
-            # in what this revision changed - including the undoing of
-            # previous revisions in the case of non-fast-forward updates.
-            yield '\n'
-            yield 'Summary of changes:\n'
-            for line in read_git_lines(
-                    ['diff-tree'] +
-                    self.diffopts +
-                    ['%s..%s' % (self.old.commit_sha1, self.new.commit_sha1,)],
-                    keepends=True,
-                    ):
-                yield line
-
-        elif self.old.commit_sha1 and not self.new.commit_sha1:
-            # A reference was deleted.  List the revisions that were
-            # removed from the repository by this reference change.
-
-            sha1s = list(push.get_discarded_commits(self))
-            tot = len(sha1s)
-            discarded_revisions = [
-                Revision(self, GitObject(sha1), num=i + 1, tot=tot)
-                for (i, sha1) in enumerate(sha1s)
-                ]
-
-            if discarded_revisions:
-                for line in self.expand_lines(DISCARDED_REVISIONS_TEMPLATE):
-                    yield line
-                yield '\n'
-                for r in discarded_revisions:
-                    (sha1, subject) = r.rev.get_summary()
-                    yield r.expand(
-                        BRIEF_SUMMARY_TEMPLATE, action='discard', text=subject,
-                        )
-                for line in self.generate_revision_change_graph(push):
-                    yield line
-            else:
-                for line in self.expand_lines(NO_DISCARDED_REVISIONS_TEMPLATE):
-                    yield line
-
-        elif not self.old.commit_sha1 and not self.new.commit_sha1:
-            for line in self.expand_lines(NON_COMMIT_UPDATE_TEMPLATE):
-                yield line
-
-    def generate_create_summary(self, push):
-        """Called for the creation of a reference."""
-
-        # This is a new reference and so oldrev is not valid
-        (sha1, subject) = self.new.get_summary()
-        yield self.expand(
-            BRIEF_SUMMARY_TEMPLATE, action='at',
-            rev_short=sha1, text=subject,
-            )
-        yield '\n'
-
-    def generate_update_summary(self, push):
-        """Called for the change of a pre-existing branch."""
-
-        return iter([])
-
-    def generate_delete_summary(self, push):
-        """Called for the deletion of any type of reference."""
-
-        (sha1, subject) = self.old.get_summary()
-        yield self.expand(
-            BRIEF_SUMMARY_TEMPLATE, action='was',
-            rev_short=sha1, text=subject,
-            )
-        yield '\n'
-
-    def get_specific_fromaddr(self):
-        return self.environment.from_refchange
-
-
-class BranchChange(ReferenceChange):
-    refname_type = 'branch'
-
-    def __init__(self, environment, refname, short_refname, old, new, rev):
-        ReferenceChange.__init__(
-            self, environment,
-            refname=refname, short_refname=short_refname,
-            old=old, new=new, rev=rev,
-            )
-        self.recipients = environment.get_refchange_recipients(self)
-        self._single_revision = None
-
-    def send_single_combined_email(self, known_added_sha1s):
-        if not self.environment.combine_when_single_commit:
-            return None
-
-        # In the sadly-all-too-frequent usecase of people pushing only
-        # one of their commits at a time to a repository, users feel
-        # the reference change summary emails are noise rather than
-        # important signal.  This is because, in this particular
-        # usecase, there is a reference change summary email for each
-        # new commit, and all these summaries do is point out that
-        # there is one new commit (which can readily be inferred by
-        # the existence of the individual revision email that is also
-        # sent).  In such cases, our users prefer there to be a combined
-        # reference change summary/new revision email.
-        #
-        # So, if the change is an update and it doesn't discard any
-        # commits, and it adds exactly one non-merge commit (gerrit
-        # forces a workflow where every commit is individually merged
-        # and the git-multimail hook fired off for just this one
-        # change), then we send a combined refchange/revision email.
-        try:
-            # If this change is a reference update that doesn't discard
-            # any commits...
-            if self.change_type != 'update':
-                return None
-
-            if read_git_lines(
-                    ['merge-base', self.old.sha1, self.new.sha1]
-                    ) != [self.old.sha1]:
-                return None
-
-            # Check if this update introduced exactly one non-merge
-            # commit:
-
-            def split_line(line):
-                """Split line into (sha1, [parent,...])."""
-
-                words = line.split()
-                return (words[0], words[1:])
-
-            # Get the new commits introduced by the push as a list of
-            # (sha1, [parent,...])
-            new_commits = [
-                split_line(line)
-                for line in read_git_lines(
-                    [
-                        'log', '-3', '--format=%H %P',
-                        '%s..%s' % (self.old.sha1, self.new.sha1),
-                        ]
-                    )
-                ]
-
-            if not new_commits:
-                return None
-
-            # If the newest commit is a merge, save it for a later check
-            # but otherwise ignore it
-            merge = None
-            tot = len(new_commits)
-            if len(new_commits[0][1]) > 1:
-                merge = new_commits[0][0]
-                del new_commits[0]
-
-            # Our primary check: we can't combine if more than one commit
-            # is introduced.  We also currently only combine if the new
-            # commit is a non-merge commit, though it may make sense to
-            # combine if it is a merge as well.
-            if not (
-                    len(new_commits) == 1 and
-                    len(new_commits[0][1]) == 1 and
-                    new_commits[0][0] in known_added_sha1s
-                    ):
-                return None
-
-            # We do not want to combine revision and refchange emails if
-            # those go to separate locations.
-            rev = Revision(self, GitObject(new_commits[0][0]), 1, tot)
-            if rev.recipients != self.recipients:
-                return None
-
-            # We ignored the newest commit if it was just a merge of the one
-            # commit being introduced.  But we don't want to ignore that
-            # merge commit it it involved conflict resolutions.  Check that.
-            if merge and merge != read_git_output(['diff-tree', '--cc', merge]):
-                return None
-
-            # We can combine the refchange and one new revision emails
-            # into one.  Return the Revision that a combined email should
-            # be sent about.
-            return rev
-        except CommandError:
-            # Cannot determine number of commits in old..new or new..old;
-            # don't combine reference/revision emails:
-            return None
-
-    def generate_combined_email(self, push, revision, body_filter=None, extra_header_values={}):
-        values = revision.get_values()
-        if extra_header_values:
-            values.update(extra_header_values)
-        if 'subject' not in extra_header_values:
-            values['subject'] = self.expand(COMBINED_REFCHANGE_REVISION_SUBJECT_TEMPLATE, **values)
-
-        self._single_revision = revision
-        self._contains_diff()
-        self.header_template = COMBINED_HEADER_TEMPLATE
-        self.intro_template = COMBINED_INTRO_TEMPLATE
-        self.footer_template = COMBINED_FOOTER_TEMPLATE
-
-        def revision_gen_link(base_url):
-            # revision is used only to generate the body, and
-            # _content_type is set while generating headers. Get it
-            # from the BranchChange object.
-            revision._content_type = self._content_type
-            return revision.generate_browse_link(base_url)
-        self.generate_browse_link = revision_gen_link
-        for line in self.generate_email(push, body_filter, values):
-            yield line
-
-    def generate_email_body(self, push):
-        '''Call the appropriate body generation routine.
-
-        If this is a combined refchange/revision email, the special logic
-        for handling this combined email comes from this function.  For
-        other cases, we just use the normal handling.'''
-
-        # If self._single_revision isn't set; don't override
-        if not self._single_revision:
-            for line in super(BranchChange, self).generate_email_body(push):
-                yield line
-            return
-
-        # This is a combined refchange/revision email; we first provide
-        # some info from the refchange portion, and then call the revision
-        # generate_email_body function to handle the revision portion.
-        adds = list(generate_summaries(
-            '--topo-order', '--reverse', '%s..%s'
-            % (self.old.commit_sha1, self.new.commit_sha1,)
-            ))
-
-        yield self.expand("The following commit(s) were added to %(refname)s by this push:\n")
-        for (sha1, subject) in adds:
-            yield self.expand(
-                BRIEF_SUMMARY_TEMPLATE, action='new',
-                rev_short=sha1, text=subject,
-                )
-
-        yield self._single_revision.rev.short + " is described below\n"
-        yield '\n'
-
-        for line in self._single_revision.generate_email_body(push):
-            yield line
-
-
-class AnnotatedTagChange(ReferenceChange):
-    refname_type = 'annotated tag'
-
-    def __init__(self, environment, refname, short_refname, old, new, rev):
-        ReferenceChange.__init__(
-            self, environment,
-            refname=refname, short_refname=short_refname,
-            old=old, new=new, rev=rev,
-            )
-        self.recipients = environment.get_announce_recipients(self)
-        self.show_shortlog = environment.announce_show_shortlog
-
-    ANNOTATED_TAG_FORMAT = (
-        '%(*objectname)\n'
-        '%(*objecttype)\n'
-        '%(taggername)\n'
-        '%(taggerdate)'
-        )
-
-    def describe_tag(self, push):
-        """Describe the new value of an annotated tag."""
-
-        # Use git for-each-ref to pull out the individual fields from
-        # the tag
-        [tagobject, tagtype, tagger, tagged] = read_git_lines(
-            ['for-each-ref', '--format=%s' % (self.ANNOTATED_TAG_FORMAT,), self.refname],
-            )
-
-        yield self.expand(
-            BRIEF_SUMMARY_TEMPLATE, action='tagging',
-            rev_short=tagobject, text='(%s)' % (tagtype,),
-            )
-        if tagtype == 'commit':
-            # If the tagged object is a commit, then we assume this is a
-            # release, and so we calculate which tag this tag is
-            # replacing
-            try:
-                prevtag = read_git_output(['describe', '--abbrev=0', '%s^' % (self.new,)])
-            except CommandError:
-                prevtag = None
-            if prevtag:
-                yield ' replaces %s\n' % (prevtag,)
-        else:
-            prevtag = None
-            yield '  length %s bytes\n' % (read_git_output(['cat-file', '-s', tagobject]),)
-
-        yield '      by %s\n' % (tagger,)
-        yield '      on %s\n' % (tagged,)
-        yield '\n'
-
-        # Show the content of the tag message; this might contain a
-        # change log or release notes so is worth displaying.
-        yield LOGBEGIN
-        contents = list(read_git_lines(['cat-file', 'tag', self.new.sha1], keepends=True))
-        contents = contents[contents.index('\n') + 1:]
-        if contents and contents[-1][-1:] != '\n':
-            contents.append('\n')
-        for line in contents:
-            yield line
-
-        if self.show_shortlog and tagtype == 'commit':
-            # Only commit tags make sense to have rev-list operations
-            # performed on them
-            yield '\n'
-            if prevtag:
-                # Show changes since the previous release
-                revlist = read_git_output(
-                    ['rev-list', '--pretty=short', '%s..%s' % (prevtag, self.new,)],
-                    keepends=True,
-                    )
-            else:
-                # No previous tag, show all the changes since time
-                # began
-                revlist = read_git_output(
-                    ['rev-list', '--pretty=short', '%s' % (self.new,)],
-                    keepends=True,
-                    )
-            for line in read_git_lines(['shortlog'], input=revlist, keepends=True):
-                yield line
-
-        yield LOGEND
-        yield '\n'
-
-    def generate_create_summary(self, push):
-        """Called for the creation of an annotated tag."""
-
-        for line in self.expand_lines(TAG_CREATED_TEMPLATE):
-            yield line
-
-        for line in self.describe_tag(push):
-            yield line
-
-    def generate_update_summary(self, push):
-        """Called for the update of an annotated tag.
-
-        This is probably a rare event and may not even be allowed."""
-
-        for line in self.expand_lines(TAG_UPDATED_TEMPLATE):
-            yield line
-
-        for line in self.describe_tag(push):
-            yield line
-
-    def generate_delete_summary(self, push):
-        """Called when a non-annotated reference is updated."""
-
-        for line in self.expand_lines(TAG_DELETED_TEMPLATE):
-            yield line
-
-        yield self.expand('   tag was  %(oldrev_short)s\n')
-        yield '\n'
-
-
-class NonAnnotatedTagChange(ReferenceChange):
-    refname_type = 'tag'
-
-    def __init__(self, environment, refname, short_refname, old, new, rev):
-        ReferenceChange.__init__(
-            self, environment,
-            refname=refname, short_refname=short_refname,
-            old=old, new=new, rev=rev,
-            )
-        self.recipients = environment.get_refchange_recipients(self)
-
-    def generate_create_summary(self, push):
-        """Called for the creation of an annotated tag."""
-
-        for line in self.expand_lines(TAG_CREATED_TEMPLATE):
-            yield line
-
-    def generate_update_summary(self, push):
-        """Called when a non-annotated reference is updated."""
-
-        for line in self.expand_lines(TAG_UPDATED_TEMPLATE):
-            yield line
-
-    def generate_delete_summary(self, push):
-        """Called when a non-annotated reference is updated."""
-
-        for line in self.expand_lines(TAG_DELETED_TEMPLATE):
-            yield line
-
-        for line in ReferenceChange.generate_delete_summary(self, push):
-            yield line
-
-
-class OtherReferenceChange(ReferenceChange):
-    refname_type = 'reference'
-
-    def __init__(self, environment, refname, short_refname, old, new, rev):
-        # We use the full refname as short_refname, because otherwise
-        # the full name of the reference would not be obvious from the
-        # text of the email.
-        ReferenceChange.__init__(
-            self, environment,
-            refname=refname, short_refname=refname,
-            old=old, new=new, rev=rev,
-            )
-        self.recipients = environment.get_refchange_recipients(self)
-
-
-class Mailer(object):
-    """An object that can send emails."""
-
-    def __init__(self, environment):
-        self.environment = environment
-
-    def close(self):
-        pass
-
-    def send(self, lines, to_addrs):
-        """Send an email consisting of lines.
-
-        lines must be an iterable over the lines constituting the
-        header and body of the email.  to_addrs is a list of recipient
-        addresses (can be needed even if lines already contains a
-        "To:" field).  It can be either a string (comma-separated list
-        of email addresses) or a Python list of individual email
-        addresses.
-
-        """
-
-        raise NotImplementedError()
-
-
-class SendMailer(Mailer):
-    """Send emails using 'sendmail -oi -t'."""
-
-    SENDMAIL_CANDIDATES = [
-        '/usr/sbin/sendmail',
-        '/usr/lib/sendmail',
-        ]
-
-    @staticmethod
-    def find_sendmail():
-        for path in SendMailer.SENDMAIL_CANDIDATES:
-            if os.access(path, os.X_OK):
-                return path
-        else:
-            raise ConfigurationException(
-                'No sendmail executable found.  '
-                'Try setting multimailhook.sendmailCommand.'
-                )
-
-    def __init__(self, environment, command=None, envelopesender=None):
-        """Construct a SendMailer instance.
-
-        command should be the command and arguments used to invoke
-        sendmail, as a list of strings.  If an envelopesender is
-        provided, it will also be passed to the command, via '-f
-        envelopesender'."""
-        super(SendMailer, self).__init__(environment)
-        if command:
-            self.command = command[:]
-        else:
-            self.command = [self.find_sendmail(), '-oi', '-t']
-
-        if envelopesender:
-            self.command.extend(['-f', envelopesender])
-
-    def send(self, lines, to_addrs):
-        try:
-            p = subprocess.Popen(self.command, stdin=subprocess.PIPE)
-        except OSError:
-            self.environment.get_logger().error(
-                '*** Cannot execute command: %s\n' % ' '.join(self.command) +
-                '*** %s\n' % sys.exc_info()[1] +
-                '*** Try setting multimailhook.mailer to "smtp"\n' +
-                '*** to send emails without using the sendmail command.\n'
-                )
-            sys.exit(1)
-        try:
-            lines = (str_to_bytes(line) for line in lines)
-            p.stdin.writelines(lines)
-        except Exception:
-            self.environment.get_logger().error(
-                '*** Error while generating commit email\n'
-                '***  - mail sending aborted.\n'
-                )
-            if hasattr(p, 'terminate'):
-                # subprocess.terminate() is not available in Python 2.4
-                p.terminate()
-            else:
-                import signal
-                os.kill(p.pid, signal.SIGTERM)
-            raise
-        else:
-            p.stdin.close()
-            retcode = p.wait()
-            if retcode:
-                raise CommandError(self.command, retcode)
-
-
-class SMTPMailer(Mailer):
-    """Send emails using Python's smtplib."""
-
-    def __init__(self, environment,
-                 envelopesender, smtpserver,
-                 smtpservertimeout=10.0, smtpserverdebuglevel=0,
-                 smtpencryption='none',
-                 smtpuser='', smtppass='',
-                 smtpcacerts=''
-                 ):
-        super(SMTPMailer, self).__init__(environment)
-        if not envelopesender:
-            self.environment.get_logger().error(
-                'fatal: git_multimail: cannot use SMTPMailer without a sender address.\n'
-                'please set either multimailhook.envelopeSender or user.email\n'
-                )
-            sys.exit(1)
-        if smtpencryption == 'ssl' and not (smtpuser and smtppass):
-            raise ConfigurationException(
-                'Cannot use SMTPMailer with security option ssl '
-                'without options username and password.'
-                )
-        self.envelopesender = envelopesender
-        self.smtpserver = smtpserver
-        self.smtpservertimeout = smtpservertimeout
-        self.smtpserverdebuglevel = smtpserverdebuglevel
-        self.security = smtpencryption
-        self.username = smtpuser
-        self.password = smtppass
-        self.smtpcacerts = smtpcacerts
-        self.loggedin = False
-        try:
-            def call(klass, server, timeout):
-                try:
-                    return klass(server, timeout=timeout)
-                except TypeError:
-                    # Old Python versions do not have timeout= argument.
-                    return klass(server)
-            if self.security == 'none':
-                self.smtp = call(smtplib.SMTP, self.smtpserver, timeout=self.smtpservertimeout)
-            elif self.security == 'ssl':
-                if self.smtpcacerts:
-                    raise smtplib.SMTPException(
-                        "Checking certificate is not supported for ssl, prefer starttls"
-                        )
-                self.smtp = call(smtplib.SMTP_SSL, self.smtpserver, timeout=self.smtpservertimeout)
-            elif self.security == 'tls':
-                if 'ssl' not in sys.modules:
-                    self.environment.get_logger().error(
-                        '*** Your Python version does not have the ssl library installed\n'
-                        '*** smtpEncryption=tls is not available.\n'
-                        '*** Either upgrade Python to 2.6 or later\n'
-                        '    or use git_multimail.py version 1.2.\n')
-                if ':' not in self.smtpserver:
-                    self.smtpserver += ':587'  # default port for TLS
-                self.smtp = call(smtplib.SMTP, self.smtpserver, timeout=self.smtpservertimeout)
-                # start: ehlo + starttls
-                # equivalent to
-                #     self.smtp.ehlo()
-                #     self.smtp.starttls()
-                # with access to the ssl layer
-                self.smtp.ehlo()
-                if not self.smtp.has_extn("starttls"):
-                    raise smtplib.SMTPException("STARTTLS extension not supported by server")
-                resp, reply = self.smtp.docmd("STARTTLS")
-                if resp != 220:
-                    raise smtplib.SMTPException("Wrong answer to the STARTTLS command")
-                if self.smtpcacerts:
-                    self.smtp.sock = ssl.wrap_socket(
-                        self.smtp.sock,
-                        ca_certs=self.smtpcacerts,
-                        cert_reqs=ssl.CERT_REQUIRED
-                        )
-                else:
-                    self.smtp.sock = ssl.wrap_socket(
-                        self.smtp.sock,
-                        cert_reqs=ssl.CERT_NONE
-                        )
-                    self.environment.get_logger().error(
-                        '*** Warning, the server certificate is not verified (smtp) ***\n'
-                        '***          set the option smtpCACerts                   ***\n'
-                        )
-                if not hasattr(self.smtp.sock, "read"):
-                    # using httplib.FakeSocket with Python 2.5.x or earlier
-                    self.smtp.sock.read = self.smtp.sock.recv
-                self.smtp.file = smtplib.SSLFakeFile(self.smtp.sock)
-                self.smtp.helo_resp = None
-                self.smtp.ehlo_resp = None
-                self.smtp.esmtp_features = {}
-                self.smtp.does_esmtp = 0
-                # end:   ehlo + starttls
-                self.smtp.ehlo()
-            else:
-                sys.stdout.write('*** Error: Control reached an invalid option. ***')
-                sys.exit(1)
-            if self.smtpserverdebuglevel > 0:
-                sys.stdout.write(
-                    "*** Setting debug on for SMTP server connection (%s) ***\n"
-                    % self.smtpserverdebuglevel)
-                self.smtp.set_debuglevel(self.smtpserverdebuglevel)
-        except Exception:
-            self.environment.get_logger().error(
-                '*** Error establishing SMTP connection to %s ***\n'
-                '*** %s\n'
-                % (self.smtpserver, sys.exc_info()[1]))
-            sys.exit(1)
-
-    def close(self):
-        if hasattr(self, 'smtp'):
-            self.smtp.quit()
-            del self.smtp
-
-    def __del__(self):
-        self.close()
-
-    def send(self, lines, to_addrs):
-        try:
-            if self.username or self.password:
-                if not self.loggedin:
-                    self.smtp.login(self.username, self.password)
-                    self.loggedin = True
-            msg = ''.join(lines)
-            # turn comma-separated list into Python list if needed.
-            if is_string(to_addrs):
-                to_addrs = [email for (name, email) in getaddresses([to_addrs])]
-            self.smtp.sendmail(self.envelopesender, to_addrs, msg)
-        except socket.timeout:
-            self.environment.get_logger().error(
-                '*** Error sending email ***\n'
-                '*** SMTP server timed out (timeout is %s)\n'
-                % self.smtpservertimeout)
-        except smtplib.SMTPResponseException:
-            err = sys.exc_info()[1]
-            self.environment.get_logger().error(
-                '*** Error sending email ***\n'
-                '*** Error %d: %s\n'
-                % (err.smtp_code, bytes_to_str(err.smtp_error)))
-            try:
-                smtp = self.smtp
-                # delete the field before quit() so that in case of
-                # error, self.smtp is deleted anyway.
-                del self.smtp
-                smtp.quit()
-            except:
-                self.environment.get_logger().error(
-                    '*** Error closing the SMTP connection ***\n'
-                    '*** Exiting anyway ... ***\n'
-                    '*** %s\n' % sys.exc_info()[1])
-            sys.exit(1)
-
-
-class OutputMailer(Mailer):
-    """Write emails to an output stream, bracketed by lines of '=' characters.
-
-    This is intended for debugging purposes."""
-
-    SEPARATOR = '=' * 75 + '\n'
-
-    def __init__(self, f, environment=None):
-        super(OutputMailer, self).__init__(environment=environment)
-        self.f = f
-
-    def send(self, lines, to_addrs):
-        write_str(self.f, self.SEPARATOR)
-        for line in lines:
-            write_str(self.f, line)
-        write_str(self.f, self.SEPARATOR)
-
-
-def get_git_dir():
-    """Determine GIT_DIR.
-
-    Determine GIT_DIR either from the GIT_DIR environment variable or
-    from the working directory, using Git's usual rules."""
-
-    try:
-        return read_git_output(['rev-parse', '--git-dir'])
-    except CommandError:
-        sys.stderr.write('fatal: git_multimail: not in a git directory\n')
-        sys.exit(1)
-
-
-class Environment(object):
-    """Describes the environment in which the push is occurring.
-
-    An Environment object encapsulates information about the local
-    environment.  For example, it knows how to determine:
-
-    * the name of the repository to which the push occurred
-
-    * what user did the push
-
-    * what users want to be informed about various types of changes.
-
-    An Environment object is expected to have the following methods:
-
-        get_repo_shortname()
-
-            Return a short name for the repository, for display
-            purposes.
-
-        get_repo_path()
-
-            Return the absolute path to the Git repository.
-
-        get_emailprefix()
-
-            Return a string that will be prefixed to every email's
-            subject.
-
-        get_pusher()
-
-            Return the username of the person who pushed the changes.
-            This value is used in the email body to indicate who
-            pushed the change.
-
-        get_pusher_email() (may return None)
-
-            Return the email address of the person who pushed the
-            changes.  The value should be a single RFC 2822 email
-            address as a string; e.g., "Joe User <user@example.com>"
-            if available, otherwise "user@example.com".  If set, the
-            value is used as the Reply-To address for refchange
-            emails.  If it is impossible to determine the pusher's
-            email, this attribute should be set to None (in which case
-            no Reply-To header will be output).
-
-        get_sender()
-
-            Return the address to be used as the 'From' email address
-            in the email envelope.
-
-        get_fromaddr(change=None)
-
-            Return the 'From' email address used in the email 'From:'
-            headers.  If the change is known when this function is
-            called, it is passed in as the 'change' parameter.  (May
-            be a full RFC 2822 email address like 'Joe User
-            <user@example.com>'.)
-
-        get_administrator()
-
-            Return the name and/or email of the repository
-            administrator.  This value is used in the footer as the
-            person to whom requests to be removed from the
-            notification list should be sent.  Ideally, it should
-            include a valid email address.
-
-        get_reply_to_refchange()
-        get_reply_to_commit()
-
-            Return the address to use in the email "Reply-To" header,
-            as a string.  These can be an RFC 2822 email address, or
-            None to omit the "Reply-To" header.
-            get_reply_to_refchange() is used for refchange emails;
-            get_reply_to_commit() is used for individual commit
-            emails.
-
-        get_ref_filter_regex()
-
-            Return a tuple -- a compiled regex, and a boolean indicating
-            whether the regex picks refs to include (if False, the regex
-            matches on refs to exclude).
-
-        get_default_ref_ignore_regex()
-
-            Return a regex that should be ignored for both what emails
-            to send and when computing what commits are considered new
-            to the repository.  Default is "^refs/notes/".
-
-        get_max_subject_length()
-
-            Return an int giving the maximal length for the subject
-            (git log --oneline).
-
-    They should also define the following attributes:
-
-        announce_show_shortlog (bool)
-
-            True iff announce emails should include a shortlog.
-
-        commit_email_format (string)
-
-            If "html", generate commit emails in HTML instead of plain text
-            used by default.
-
-        html_in_intro (bool)
-        html_in_footer (bool)
-
-            When generating HTML emails, the introduction (respectively,
-            the footer) will be HTML-escaped iff html_in_intro (respectively,
-            the footer) is true. When false, only the values used to expand
-            the template are escaped.
-
-        refchange_showgraph (bool)
-
-            True iff refchanges emails should include a detailed graph.
-
-        refchange_showlog (bool)
-
-            True iff refchanges emails should include a detailed log.
-
-        diffopts (list of strings)
-
-            The options that should be passed to 'git diff' for the
-            summary email.  The value should be a list of strings
-            representing words to be passed to the command.
-
-        graphopts (list of strings)
-
-            Analogous to diffopts, but contains options passed to
-            'git log --graph' when generating the detailed graph for
-            a set of commits (see refchange_showgraph)
-
-        logopts (list of strings)
-
-            Analogous to diffopts, but contains options passed to
-            'git log' when generating the detailed log for a set of
-            commits (see refchange_showlog)
-
-        commitlogopts (list of strings)
-
-            The options that should be passed to 'git log' for each
-            commit mail.  The value should be a list of strings
-            representing words to be passed to the command.
-
-        date_substitute (string)
-
-            String to be used in substitution for 'Date:' at start of
-            line in the output of 'git log'.
-
-        quiet (bool)
-            On success do not write to stderr
-
-        stdout (bool)
-            Write email to stdout rather than emailing. Useful for debugging
-
-        combine_when_single_commit (bool)
-
-            True if a combined email should be produced when a single
-            new commit is pushed to a branch, False otherwise.
-
-        from_refchange, from_commit (strings)
-
-            Addresses to use for the From: field for refchange emails
-            and commit emails respectively.  Set from
-            multimailhook.fromRefchange and multimailhook.fromCommit
-            by ConfigEnvironmentMixin.
-
-        log_file, error_log_file, debug_log_file (string)
-
-            Name of a file to which logs should be sent.
-
-        verbose (int)
-
-            How verbose the system should be.
-            - 0 (default): show info, errors, ...
-            - 1 : show basic debug info
-    """
-
-    REPO_NAME_RE = re.compile(r'^(?P<name>.+?)(?:\.git)$')
-
-    def __init__(self, osenv=None):
-        self.osenv = osenv or os.environ
-        self.announce_show_shortlog = False
-        self.commit_email_format = "text"
-        self.html_in_intro = False
-        self.html_in_footer = False
-        self.commitBrowseURL = None
-        self.maxcommitemails = 500
-        self.excludemergerevisions = False
-        self.diffopts = ['--stat', '--summary', '--find-copies-harder']
-        self.graphopts = ['--oneline', '--decorate']
-        self.logopts = []
-        self.refchange_showgraph = False
-        self.refchange_showlog = False
-        self.commitlogopts = ['-C', '--stat', '-p', '--cc']
-        self.date_substitute = 'AuthorDate: '
-        self.quiet = False
-        self.stdout = False
-        self.combine_when_single_commit = True
-        self.logger = None
-
-        self.COMPUTED_KEYS = [
-            'administrator',
-            'charset',
-            'emailprefix',
-            'pusher',
-            'pusher_email',
-            'repo_path',
-            'repo_shortname',
-            'sender',
-            ]
-
-        self._values = None
-
-    def get_logger(self):
-        """Get (possibly creates) the logger associated to this environment."""
-        if self.logger is None:
-            self.logger = Logger(self)
-        return self.logger
-
-    def get_repo_shortname(self):
-        """Use the last part of the repo path, with ".git" stripped off if present."""
-
-        basename = os.path.basename(os.path.abspath(self.get_repo_path()))
-        m = self.REPO_NAME_RE.match(basename)
-        if m:
-            return m.group('name')
-        else:
-            return basename
-
-    def get_pusher(self):
-        raise NotImplementedError()
-
-    def get_pusher_email(self):
-        return None
-
-    def get_fromaddr(self, change=None):
-        config = Config('user')
-        fromname = config.get('name', default='')
-        fromemail = config.get('email', default='')
-        if fromemail:
-            return formataddr([fromname, fromemail])
-        return self.get_sender()
-
-    def get_administrator(self):
-        return 'the administrator of this repository'
-
-    def get_emailprefix(self):
-        return ''
-
-    def get_repo_path(self):
-        if read_git_output(['rev-parse', '--is-bare-repository']) == 'true':
-            path = get_git_dir()
-        else:
-            path = read_git_output(['rev-parse', '--show-toplevel'])
-        return os.path.abspath(path)
-
-    def get_charset(self):
-        return CHARSET
-
-    def get_values(self):
-        """Return a dictionary {keyword: expansion} for this Environment.
-
-        This method is called by Change._compute_values().  The keys
-        in the returned dictionary are available to be used in any of
-        the templates.  The dictionary is created by calling
-        self.get_NAME() for each of the attributes named in
-        COMPUTED_KEYS and recording those that do not return None.
-        The return value is always a new dictionary."""
-
-        if self._values is None:
-            values = {'': ''}  # %()s expands to the empty string.
-
-            for key in self.COMPUTED_KEYS:
-                value = getattr(self, 'get_%s' % (key,))()
-                if value is not None:
-                    values[key] = value
-
-            self._values = values
-
-        return self._values.copy()
-
-    def get_refchange_recipients(self, refchange):
-        """Return the recipients for notifications about refchange.
-
-        Return the list of email addresses to which notifications
-        about the specified ReferenceChange should be sent."""
-
-        raise NotImplementedError()
-
-    def get_announce_recipients(self, annotated_tag_change):
-        """Return the recipients for notifications about annotated_tag_change.
-
-        Return the list of email addresses to which notifications
-        about the specified AnnotatedTagChange should be sent."""
-
-        raise NotImplementedError()
-
-    def get_reply_to_refchange(self, refchange):
-        return self.get_pusher_email()
-
-    def get_revision_recipients(self, revision):
-        """Return the recipients for messages about revision.
-
-        Return the list of email addresses to which notifications
-        about the specified Revision should be sent.  This method
-        could be overridden, for example, to take into account the
-        contents of the revision when deciding whom to notify about
-        it.  For example, there could be a scheme for users to express
-        interest in particular files or subdirectories, and only
-        receive notification emails for revisions that affecting those
-        files."""
-
-        raise NotImplementedError()
-
-    def get_reply_to_commit(self, revision):
-        return revision.author
-
-    def get_default_ref_ignore_regex(self):
-        # The commit messages of git notes are essentially meaningless
-        # and "filenames" in git notes commits are an implementational
-        # detail that might surprise users at first.  As such, we
-        # would need a completely different method for handling emails
-        # of git notes in order for them to be of benefit for users,
-        # which we simply do not have right now.
-        return "^refs/notes/"
-
-    def get_max_subject_length(self):
-        """Return the maximal subject line (git log --oneline) length.
-        Longer subject lines will be truncated."""
-        raise NotImplementedError()
-
-    def filter_body(self, lines):
-        """Filter the lines intended for an email body.
-
-        lines is an iterable over the lines that would go into the
-        email body.  Filter it (e.g., limit the number of lines, the
-        line length, character set, etc.), returning another iterable.
-        See FilterLinesEnvironmentMixin and MaxlinesEnvironmentMixin
-        for classes implementing this functionality."""
-
-        return lines
-
-    def log_msg(self, msg):
-        """Write the string msg on a log file or on stderr.
-
-        Sends the text to stderr by default, override to change the behavior."""
-        self.get_logger().info(msg)
-
-    def log_warning(self, msg):
-        """Write the string msg on a log file or on stderr.
-
-        Sends the text to stderr by default, override to change the behavior."""
-        self.get_logger().warning(msg)
-
-    def log_error(self, msg):
-        """Write the string msg on a log file or on stderr.
-
-        Sends the text to stderr by default, override to change the behavior."""
-        self.get_logger().error(msg)
-
-    def check(self):
-        pass
-
-
-class ConfigEnvironmentMixin(Environment):
-    """A mixin that sets self.config to its constructor's config argument.
-
-    This class's constructor consumes the "config" argument.
-
-    Mixins that need to inspect the config should inherit from this
-    class (1) to make sure that "config" is still in the constructor
-    arguments with its own constructor runs and/or (2) to be sure that
-    self.config is set after construction."""
-
-    def __init__(self, config, **kw):
-        super(ConfigEnvironmentMixin, self).__init__(**kw)
-        self.config = config
-
-
-class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin):
-    """An Environment that reads most of its information from "git config"."""
-
-    @staticmethod
-    def forbid_field_values(name, value, forbidden):
-        for forbidden_val in forbidden:
-            if value is not None and value.lower() == forbidden:
-                raise ConfigurationException(
-                    '"%s" is not an allowed setting for %s' % (value, name)
-                    )
-
-    def __init__(self, config, **kw):
-        super(ConfigOptionsEnvironmentMixin, self).__init__(
-            config=config, **kw
-            )
-
-        for var, cfg in (
-                ('announce_show_shortlog', 'announceshortlog'),
-                ('refchange_showgraph', 'refchangeShowGraph'),
-                ('refchange_showlog', 'refchangeshowlog'),
-                ('quiet', 'quiet'),
-                ('stdout', 'stdout'),
-                ):
-            val = config.get_bool(cfg)
-            if val is not None:
-                setattr(self, var, val)
-
-        commit_email_format = config.get('commitEmailFormat')
-        if commit_email_format is not None:
-            if commit_email_format != "html" and commit_email_format != "text":
-                self.log_warning(
-                    '*** Unknown value for multimailhook.commitEmailFormat: %s\n' %
-                    commit_email_format +
-                    '*** Expected either "text" or "html".  Ignoring.\n'
-                    )
-            else:
-                self.commit_email_format = commit_email_format
-
-        html_in_intro = config.get_bool('htmlInIntro')
-        if html_in_intro is not None:
-            self.html_in_intro = html_in_intro
-
-        html_in_footer = config.get_bool('htmlInFooter')
-        if html_in_footer is not None:
-            self.html_in_footer = html_in_footer
-
-        self.commitBrowseURL = config.get('commitBrowseURL')
-
-        self.excludemergerevisions = config.get('excludeMergeRevisions')
-
-        maxcommitemails = config.get('maxcommitemails')
-        if maxcommitemails is not None:
-            try:
-                self.maxcommitemails = int(maxcommitemails)
-            except ValueError:
-                self.log_warning(
-                    '*** Malformed value for multimailhook.maxCommitEmails: %s\n'
-                    % maxcommitemails +
-                    '*** Expected a number.  Ignoring.\n'
-                    )
-
-        diffopts = config.get('diffopts')
-        if diffopts is not None:
-            self.diffopts = shlex.split(diffopts)
-
-        graphopts = config.get('graphOpts')
-        if graphopts is not None:
-            self.graphopts = shlex.split(graphopts)
-
-        logopts = config.get('logopts')
-        if logopts is not None:
-            self.logopts = shlex.split(logopts)
-
-        commitlogopts = config.get('commitlogopts')
-        if commitlogopts is not None:
-            self.commitlogopts = shlex.split(commitlogopts)
-
-        date_substitute = config.get('dateSubstitute')
-        if date_substitute == 'none':
-            self.date_substitute = None
-        elif date_substitute is not None:
-            self.date_substitute = date_substitute
-
-        reply_to = config.get('replyTo')
-        self.__reply_to_refchange = config.get('replyToRefchange', default=reply_to)
-        self.forbid_field_values('replyToRefchange',
-                                 self.__reply_to_refchange,
-                                 ['author'])
-        self.__reply_to_commit = config.get('replyToCommit', default=reply_to)
-
-        self.from_refchange = config.get('fromRefchange')
-        self.forbid_field_values('fromRefchange',
-                                 self.from_refchange,
-                                 ['author', 'none'])
-        self.from_commit = config.get('fromCommit')
-        self.forbid_field_values('fromCommit',
-                                 self.from_commit,
-                                 ['none'])
-
-        combine = config.get_bool('combineWhenSingleCommit')
-        if combine is not None:
-            self.combine_when_single_commit = combine
-
-        self.log_file = config.get('logFile', default=None)
-        self.error_log_file = config.get('errorLogFile', default=None)
-        self.debug_log_file = config.get('debugLogFile', default=None)
-        if config.get_bool('Verbose', default=False):
-            self.verbose = 1
-        else:
-            self.verbose = 0
-
-    def get_administrator(self):
-        return (
-            self.config.get('administrator') or
-            self.get_sender() or
-            super(ConfigOptionsEnvironmentMixin, self).get_administrator()
-            )
-
-    def get_repo_shortname(self):
-        return (
-            self.config.get('reponame') or
-            super(ConfigOptionsEnvironmentMixin, self).get_repo_shortname()
-            )
-
-    def get_emailprefix(self):
-        emailprefix = self.config.get('emailprefix')
-        if emailprefix is not None:
-            emailprefix = emailprefix.strip()
-            if emailprefix:
-                emailprefix += ' '
-        else:
-            emailprefix = '[%(repo_shortname)s] '
-        short_name = self.get_repo_shortname()
-        try:
-            return emailprefix % {'repo_shortname': short_name}
-        except:
-            self.get_logger().error(
-                '*** Invalid multimailhook.emailPrefix: %s\n' % emailprefix +
-                '*** %s\n' % sys.exc_info()[1] +
-                "*** Only the '%(repo_shortname)s' placeholder is allowed\n"
-                )
-            raise ConfigurationException(
-                '"%s" is not an allowed setting for emailPrefix' % emailprefix
-                )
-
-    def get_sender(self):
-        return self.config.get('envelopesender')
-
-    def process_addr(self, addr, change):
-        if addr.lower() == 'author':
-            if hasattr(change, 'author'):
-                return change.author
-            else:
-                return None
-        elif addr.lower() == 'pusher':
-            return self.get_pusher_email()
-        elif addr.lower() == 'none':
-            return None
-        else:
-            return addr
-
-    def get_fromaddr(self, change=None):
-        fromaddr = self.config.get('from')
-        if change:
-            specific_fromaddr = change.get_specific_fromaddr()
-            if specific_fromaddr:
-                fromaddr = specific_fromaddr
-        if fromaddr:
-            fromaddr = self.process_addr(fromaddr, change)
-        if fromaddr:
-            return fromaddr
-        return super(ConfigOptionsEnvironmentMixin, self).get_fromaddr(change)
-
-    def get_reply_to_refchange(self, refchange):
-        if self.__reply_to_refchange is None:
-            return super(ConfigOptionsEnvironmentMixin, self).get_reply_to_refchange(refchange)
-        else:
-            return self.process_addr(self.__reply_to_refchange, refchange)
-
-    def get_reply_to_commit(self, revision):
-        if self.__reply_to_commit is None:
-            return super(ConfigOptionsEnvironmentMixin, self).get_reply_to_commit(revision)
-        else:
-            return self.process_addr(self.__reply_to_commit, revision)
-
-    def get_scancommitforcc(self):
-        return self.config.get('scancommitforcc')
-
-
-class FilterLinesEnvironmentMixin(Environment):
-    """Handle encoding and maximum line length of body lines.
-
-        email_max_line_length (int or None)
-
-            The maximum length of any single line in the email body.
-            Longer lines are truncated at that length with ' [...]'
-            appended.
-
-        strict_utf8 (bool)
-
-            If this field is set to True, then the email body text is
-            expected to be UTF-8.  Any invalid characters are
-            converted to U+FFFD, the Unicode replacement character
-            (encoded as UTF-8, of course).
-
-    """
-
-    def __init__(self, strict_utf8=True,
-                 email_max_line_length=500, max_subject_length=500,
-                 **kw):
-        super(FilterLinesEnvironmentMixin, self).__init__(**kw)
-        self.__strict_utf8 = strict_utf8
-        self.__email_max_line_length = email_max_line_length
-        self.__max_subject_length = max_subject_length
-
-    def filter_body(self, lines):
-        lines = super(FilterLinesEnvironmentMixin, self).filter_body(lines)
-        if self.__strict_utf8:
-            if not PYTHON3:
-                lines = (line.decode(ENCODING, 'replace') for line in lines)
-            # Limit the line length in Unicode-space to avoid
-            # splitting characters:
-            if self.__email_max_line_length > 0:
-                lines = limit_linelength(lines, self.__email_max_line_length)
-            if not PYTHON3:
-                lines = (line.encode(ENCODING, 'replace') for line in lines)
-        elif self.__email_max_line_length:
-            lines = limit_linelength(lines, self.__email_max_line_length)
-
-        return lines
-
-    def get_max_subject_length(self):
-        return self.__max_subject_length
-
-
-class ConfigFilterLinesEnvironmentMixin(
-        ConfigEnvironmentMixin,
-        FilterLinesEnvironmentMixin,
-        ):
-    """Handle encoding and maximum line length based on config."""
-
-    def __init__(self, config, **kw):
-        strict_utf8 = config.get_bool('emailstrictutf8', default=None)
-        if strict_utf8 is not None:
-            kw['strict_utf8'] = strict_utf8
-
-        email_max_line_length = config.get('emailmaxlinelength')
-        if email_max_line_length is not None:
-            kw['email_max_line_length'] = int(email_max_line_length)
-
-        max_subject_length = config.get('subjectMaxLength', default=email_max_line_length)
-        if max_subject_length is not None:
-            kw['max_subject_length'] = int(max_subject_length)
-
-        super(ConfigFilterLinesEnvironmentMixin, self).__init__(
-            config=config, **kw
-            )
-
-
-class MaxlinesEnvironmentMixin(Environment):
-    """Limit the email body to a specified number of lines."""
-
-    def __init__(self, emailmaxlines, **kw):
-        super(MaxlinesEnvironmentMixin, self).__init__(**kw)
-        self.__emailmaxlines = emailmaxlines
-
-    def filter_body(self, lines):
-        lines = super(MaxlinesEnvironmentMixin, self).filter_body(lines)
-        if self.__emailmaxlines > 0:
-            lines = limit_lines(lines, self.__emailmaxlines)
-        return lines
-
-
-class ConfigMaxlinesEnvironmentMixin(
-        ConfigEnvironmentMixin,
-        MaxlinesEnvironmentMixin,
-        ):
-    """Limit the email body to the number of lines specified in config."""
-
-    def __init__(self, config, **kw):
-        emailmaxlines = int(config.get('emailmaxlines', default='0'))
-        super(ConfigMaxlinesEnvironmentMixin, self).__init__(
-            config=config,
-            emailmaxlines=emailmaxlines,
-            **kw
-            )
-
-
-class FQDNEnvironmentMixin(Environment):
-    """A mixin that sets the host's FQDN to its constructor argument."""
-
-    def __init__(self, fqdn, **kw):
-        super(FQDNEnvironmentMixin, self).__init__(**kw)
-        self.COMPUTED_KEYS += ['fqdn']
-        self.__fqdn = fqdn
-
-    def get_fqdn(self):
-        """Return the fully-qualified domain name for this host.
-
-        Return None if it is unavailable or unwanted."""
-
-        return self.__fqdn
-
-
-class ConfigFQDNEnvironmentMixin(
-        ConfigEnvironmentMixin,
-        FQDNEnvironmentMixin,
-        ):
-    """Read the FQDN from the config."""
-
-    def __init__(self, config, **kw):
-        fqdn = config.get('fqdn')
-        super(ConfigFQDNEnvironmentMixin, self).__init__(
-            config=config,
-            fqdn=fqdn,
-            **kw
-            )
-
-
-class ComputeFQDNEnvironmentMixin(FQDNEnvironmentMixin):
-    """Get the FQDN by calling socket.getfqdn()."""
-
-    def __init__(self, **kw):
-        super(ComputeFQDNEnvironmentMixin, self).__init__(
-            fqdn=socket.getfqdn(),
-            **kw
-            )
-
-
-class PusherDomainEnvironmentMixin(ConfigEnvironmentMixin):
-    """Deduce pusher_email from pusher by appending an emaildomain."""
-
-    def __init__(self, **kw):
-        super(PusherDomainEnvironmentMixin, self).__init__(**kw)
-        self.__emaildomain = self.config.get('emaildomain')
-
-    def get_pusher_email(self):
-        if self.__emaildomain:
-            # Derive the pusher's full email address in the default way:
-            return '%s@%s' % (self.get_pusher(), self.__emaildomain)
-        else:
-            return super(PusherDomainEnvironmentMixin, self).get_pusher_email()
-
-
-class StaticRecipientsEnvironmentMixin(Environment):
-    """Set recipients statically based on constructor parameters."""
-
-    def __init__(
-            self,
-            refchange_recipients, announce_recipients, revision_recipients, scancommitforcc,
-            **kw
-            ):
-        super(StaticRecipientsEnvironmentMixin, self).__init__(**kw)
-
-        # The recipients for various types of notification emails, as
-        # RFC 2822 email addresses separated by commas (or the empty
-        # string if no recipients are configured).  Although there is
-        # a mechanism to choose the recipient lists based on on the
-        # actual *contents* of the change being reported, we only
-        # choose based on the *type* of the change.  Therefore we can
-        # compute them once and for all:
-        self.__refchange_recipients = refchange_recipients
-        self.__announce_recipients = announce_recipients
-        self.__revision_recipients = revision_recipients
-
-    def check(self):
-        if not (self.get_refchange_recipients(None) or
-                self.get_announce_recipients(None) or
-                self.get_revision_recipients(None) or
-                self.get_scancommitforcc()):
-            raise ConfigurationException('No email recipients configured!')
-        super(StaticRecipientsEnvironmentMixin, self).check()
-
-    def get_refchange_recipients(self, refchange):
-        if self.__refchange_recipients is None:
-            return super(StaticRecipientsEnvironmentMixin,
-                         self).get_refchange_recipients(refchange)
-        return self.__refchange_recipients
-
-    def get_announce_recipients(self, annotated_tag_change):
-        if self.__announce_recipients is None:
-            return super(StaticRecipientsEnvironmentMixin,
-                         self).get_refchange_recipients(annotated_tag_change)
-        return self.__announce_recipients
-
-    def get_revision_recipients(self, revision):
-        if self.__revision_recipients is None:
-            return super(StaticRecipientsEnvironmentMixin,
-                         self).get_refchange_recipients(revision)
-        return self.__revision_recipients
-
-
-class CLIRecipientsEnvironmentMixin(Environment):
-    """Mixin storing recipients information coming from the
-    command-line."""
-
-    def __init__(self, cli_recipients=None, **kw):
-        super(CLIRecipientsEnvironmentMixin, self).__init__(**kw)
-        self.__cli_recipients = cli_recipients
-
-    def get_refchange_recipients(self, refchange):
-        if self.__cli_recipients is None:
-            return super(CLIRecipientsEnvironmentMixin,
-                         self).get_refchange_recipients(refchange)
-        return self.__cli_recipients
-
-    def get_announce_recipients(self, annotated_tag_change):
-        if self.__cli_recipients is None:
-            return super(CLIRecipientsEnvironmentMixin,
-                         self).get_announce_recipients(annotated_tag_change)
-        return self.__cli_recipients
-
-    def get_revision_recipients(self, revision):
-        if self.__cli_recipients is None:
-            return super(CLIRecipientsEnvironmentMixin,
-                         self).get_revision_recipients(revision)
-        return self.__cli_recipients
-
-
-class ConfigRecipientsEnvironmentMixin(
-        ConfigEnvironmentMixin,
-        StaticRecipientsEnvironmentMixin
-        ):
-    """Determine recipients statically based on config."""
-
-    def __init__(self, config, **kw):
-        super(ConfigRecipientsEnvironmentMixin, self).__init__(
-            config=config,
-            refchange_recipients=self._get_recipients(
-                config, 'refchangelist', 'mailinglist',
-                ),
-            announce_recipients=self._get_recipients(
-                config, 'announcelist', 'refchangelist', 'mailinglist',
-                ),
-            revision_recipients=self._get_recipients(
-                config, 'commitlist', 'mailinglist',
-                ),
-            scancommitforcc=config.get('scancommitforcc'),
-            **kw
-            )
-
-    def _get_recipients(self, config, *names):
-        """Return the recipients for a particular type of message.
-
-        Return the list of email addresses to which a particular type
-        of notification email should be sent, by looking at the config
-        value for "multimailhook.$name" for each of names.  Use the
-        value from the first name that is configured.  The return
-        value is a (possibly empty) string containing RFC 2822 email
-        addresses separated by commas.  If no configuration could be
-        found, raise a ConfigurationException."""
-
-        for name in names:
-            lines = config.get_all(name)
-            if lines is not None:
-                lines = [line.strip() for line in lines]
-                # Single "none" is a special value equivalen to empty string.
-                if lines == ['none']:
-                    lines = ['']
-                return ', '.join(lines)
-        else:
-            return ''
-
-
-class StaticRefFilterEnvironmentMixin(Environment):
-    """Set branch filter statically based on constructor parameters."""
-
-    def __init__(self, ref_filter_incl_regex, ref_filter_excl_regex,
-                 ref_filter_do_send_regex, ref_filter_dont_send_regex,
-                 **kw):
-        super(StaticRefFilterEnvironmentMixin, self).__init__(**kw)
-
-        if ref_filter_incl_regex and ref_filter_excl_regex:
-            raise ConfigurationException(
-                "Cannot specify both a ref inclusion and exclusion regex.")
-        self.__is_inclusion_filter = bool(ref_filter_incl_regex)
-        default_exclude = self.get_default_ref_ignore_regex()
-        if ref_filter_incl_regex:
-            ref_filter_regex = ref_filter_incl_regex
-        elif ref_filter_excl_regex:
-            ref_filter_regex = ref_filter_excl_regex + '|' + default_exclude
-        else:
-            ref_filter_regex = default_exclude
-        try:
-            self.__compiled_regex = re.compile(ref_filter_regex)
-        except Exception:
-            raise ConfigurationException(
-                'Invalid Ref Filter Regex "%s": %s' % (ref_filter_regex, sys.exc_info()[1]))
-
-        if ref_filter_do_send_regex and ref_filter_dont_send_regex:
-            raise ConfigurationException(
-                "Cannot specify both a ref doSend and dontSend regex.")
-        self.__is_do_send_filter = bool(ref_filter_do_send_regex)
-        if ref_filter_do_send_regex:
-            ref_filter_send_regex = ref_filter_do_send_regex
-        elif ref_filter_dont_send_regex:
-            ref_filter_send_regex = ref_filter_dont_send_regex
-        else:
-            ref_filter_send_regex = '.*'
-            self.__is_do_send_filter = True
-        try:
-            self.__send_compiled_regex = re.compile(ref_filter_send_regex)
-        except Exception:
-            raise ConfigurationException(
-                'Invalid Ref Filter Regex "%s": %s' %
-                (ref_filter_send_regex, sys.exc_info()[1]))
-
-    def get_ref_filter_regex(self, send_filter=False):
-        if send_filter:
-            return self.__send_compiled_regex, self.__is_do_send_filter
-        else:
-            return self.__compiled_regex, self.__is_inclusion_filter
-
-
-class ConfigRefFilterEnvironmentMixin(
-        ConfigEnvironmentMixin,
-        StaticRefFilterEnvironmentMixin
-        ):
-    """Determine branch filtering statically based on config."""
-
-    def _get_regex(self, config, key):
-        """Get a list of whitespace-separated regex. The refFilter* config
-        variables are multivalued (hence the use of get_all), and we
-        allow each entry to be a whitespace-separated list (hence the
-        split on each line). The whole thing is glued into a single regex."""
-        values = config.get_all(key)
-        if values is None:
-            return values
-        items = []
-        for line in values:
-            for i in line.split():
-                items.append(i)
-        if items == []:
-            return None
-        return '|'.join(items)
-
-    def __init__(self, config, **kw):
-        super(ConfigRefFilterEnvironmentMixin, self).__init__(
-            config=config,
-            ref_filter_incl_regex=self._get_regex(config, 'refFilterInclusionRegex'),
-            ref_filter_excl_regex=self._get_regex(config, 'refFilterExclusionRegex'),
-            ref_filter_do_send_regex=self._get_regex(config, 'refFilterDoSendRegex'),
-            ref_filter_dont_send_regex=self._get_regex(config, 'refFilterDontSendRegex'),
-            **kw
-            )
-
-
-class ProjectdescEnvironmentMixin(Environment):
-    """Make a "projectdesc" value available for templates.
-
-    By default, it is set to the first line of $GIT_DIR/description
-    (if that file is present and appears to be set meaningfully)."""
-
-    def __init__(self, **kw):
-        super(ProjectdescEnvironmentMixin, self).__init__(**kw)
-        self.COMPUTED_KEYS += ['projectdesc']
-
-    def get_projectdesc(self):
-        """Return a one-line description of the project."""
-
-        git_dir = get_git_dir()
-        try:
-            projectdesc = open(os.path.join(git_dir, 'description')).readline().strip()
-            if projectdesc and not projectdesc.startswith('Unnamed repository'):
-                return projectdesc
-        except IOError:
-            pass
-
-        return 'UNNAMED PROJECT'
-
-
-class GenericEnvironmentMixin(Environment):
-    def get_pusher(self):
-        return self.osenv.get('USER', self.osenv.get('USERNAME', 'unknown user'))
-
-
-class GitoliteEnvironmentHighPrecMixin(Environment):
-    def get_pusher(self):
-        return self.osenv.get('GL_USER', 'unknown user')
-
-
-class GitoliteEnvironmentLowPrecMixin(
-        ConfigEnvironmentMixin,
-        Environment):
-
-    def get_repo_shortname(self):
-        # The gitolite environment variable $GL_REPO is a pretty good
-        # repo_shortname (though it's probably not as good as a value
-        # the user might have explicitly put in his config).
-        return (
-            self.osenv.get('GL_REPO', None) or
-            super(GitoliteEnvironmentLowPrecMixin, self).get_repo_shortname()
-            )
-
-    @staticmethod
-    def _compile_regex(re_template):
-        return (
-            re.compile(re_template % x)
-            for x in (
-                r'BEGIN\s+USER\s+EMAILS',
-                r'([^\s]+)\s+(.*)',
-                r'END\s+USER\s+EMAILS',
-                ))
-
-    def get_fromaddr(self, change=None):
-        GL_USER = self.osenv.get('GL_USER')
-        if GL_USER is not None:
-            # Find the path to gitolite.conf.  Note that gitolite v3
-            # did away with the GL_ADMINDIR and GL_CONF environment
-            # variables (they are now hard-coded).
-            GL_ADMINDIR = self.osenv.get(
-                'GL_ADMINDIR',
-                os.path.expanduser(os.path.join('~', '.gitolite')))
-            GL_CONF = self.osenv.get(
-                'GL_CONF',
-                os.path.join(GL_ADMINDIR, 'conf', 'gitolite.conf'))
-
-            mailaddress_map = self.config.get('MailaddressMap')
-            # If relative, consider relative to GL_CONF:
-            if mailaddress_map:
-                mailaddress_map = os.path.join(os.path.dirname(GL_CONF),
-                                               mailaddress_map)
-                if os.path.isfile(mailaddress_map):
-                    f = open(mailaddress_map, 'rU')
-                    try:
-                        # Leading '#' is optional
-                        re_begin, re_user, re_end = self._compile_regex(
-                            r'^(?:\s*#)?\s*%s\s*$')
-                        for l in f:
-                            l = l.rstrip('\n')
-                            if re_begin.match(l) or re_end.match(l):
-                                continue  # Ignore these lines
-                            m = re_user.match(l)
-                            if m:
-                                if m.group(1) == GL_USER:
-                                    return m.group(2)
-                                else:
-                                    continue  # Not this user, but not an error
-                            raise ConfigurationException(
-                                "Syntax error in mail address map.\n"
-                                "Check file {}.\n"
-                                "Line: {}".format(mailaddress_map, l))
-
-                    finally:
-                        f.close()
-
-            if os.path.isfile(GL_CONF):
-                f = open(GL_CONF, 'rU')
-                try:
-                    in_user_emails_section = False
-                    re_begin, re_user, re_end = self._compile_regex(
-                        r'^\s*#\s*%s\s*$')
-                    for l in f:
-                        l = l.rstrip('\n')
-                        if not in_user_emails_section:
-                            if re_begin.match(l):
-                                in_user_emails_section = True
-                            continue
-                        if re_end.match(l):
-                            break
-                        m = re_user.match(l)
-                        if m and m.group(1) == GL_USER:
-                            return m.group(2)
-                finally:
-                    f.close()
-        return super(GitoliteEnvironmentLowPrecMixin, self).get_fromaddr(change)
-
-
-class IncrementalDateTime(object):
-    """Simple wrapper to give incremental date/times.
-
-    Each call will result in a date/time a second later than the
-    previous call.  This can be used to falsify email headers, to
-    increase the likelihood that email clients sort the emails
-    correctly."""
-
-    def __init__(self):
-        self.time = time.time()
-        self.next = self.__next__  # Python 2 backward compatibility
-
-    def __next__(self):
-        formatted = formatdate(self.time, True)
-        self.time += 1
-        return formatted
-
-
-class StashEnvironmentHighPrecMixin(Environment):
-    def __init__(self, user=None, repo=None, **kw):
-        super(StashEnvironmentHighPrecMixin,
-              self).__init__(user=user, repo=repo, **kw)
-        self.__user = user
-        self.__repo = repo
-
-    def get_pusher(self):
-        return re.match(r'(.*?)\s*<', self.__user).group(1)
-
-    def get_pusher_email(self):
-        return self.__user
-
-
-class StashEnvironmentLowPrecMixin(Environment):
-    def __init__(self, user=None, repo=None, **kw):
-        super(StashEnvironmentLowPrecMixin, self).__init__(**kw)
-        self.__repo = repo
-        self.__user = user
-
-    def get_repo_shortname(self):
-        return self.__repo
-
-    def get_fromaddr(self, change=None):
-        return self.__user
-
-
-class GerritEnvironmentHighPrecMixin(Environment):
-    def __init__(self, project=None, submitter=None, update_method=None, **kw):
-        super(GerritEnvironmentHighPrecMixin,
-              self).__init__(submitter=submitter, project=project, **kw)
-        self.__project = project
-        self.__submitter = submitter
-        self.__update_method = update_method
-        "Make an 'update_method' value available for templates."
-        self.COMPUTED_KEYS += ['update_method']
-
-    def get_pusher(self):
-        if self.__submitter:
-            if self.__submitter.find('<') != -1:
-                # Submitter has a configured email, we transformed
-                # __submitter into an RFC 2822 string already.
-                return re.match(r'(.*?)\s*<', self.__submitter).group(1)
-            else:
-                # Submitter has no configured email, it's just his name.
-                return self.__submitter
-        else:
-            # If we arrive here, this means someone pushed "Submit" from
-            # the gerrit web UI for the CR (or used one of the programmatic
-            # APIs to do the same, such as gerrit review) and the
-            # merge/push was done by the Gerrit user.  It was technically
-            # triggered by someone else, but sadly we have no way of
-            # determining who that someone else is at this point.
-            return 'Gerrit'  # 'unknown user'?
-
-    def get_pusher_email(self):
-        if self.__submitter:
-            return self.__submitter
-        else:
-            return super(GerritEnvironmentHighPrecMixin, self).get_pusher_email()
-
-    def get_default_ref_ignore_regex(self):
-        default = super(GerritEnvironmentHighPrecMixin, self).get_default_ref_ignore_regex()
-        return default + '|^refs/changes/|^refs/cache-automerge/|^refs/meta/'
-
-    def get_revision_recipients(self, revision):
-        # Merge commits created by Gerrit when users hit "Submit this patchset"
-        # in the Web UI (or do equivalently with REST APIs or the gerrit review
-        # command) are not something users want to see an individual email for.
-        # Filter them out.
-        committer = read_git_output(['log', '--no-walk', '--format=%cN',
-                                     revision.rev.sha1])
-        if committer == 'Gerrit Code Review':
-            return []
-        else:
-            return super(GerritEnvironmentHighPrecMixin, self).get_revision_recipients(revision)
-
-    def get_update_method(self):
-        return self.__update_method
-
-
-class GerritEnvironmentLowPrecMixin(Environment):
-    def __init__(self, project=None, submitter=None, **kw):
-        super(GerritEnvironmentLowPrecMixin, self).__init__(**kw)
-        self.__project = project
-        self.__submitter = submitter
-
-    def get_repo_shortname(self):
-        return self.__project
-
-    def get_fromaddr(self, change=None):
-        if self.__submitter and self.__submitter.find('<') != -1:
-            return self.__submitter
-        else:
-            return super(GerritEnvironmentLowPrecMixin, self).get_fromaddr(change)
-
-
-class Push(object):
-    """Represent an entire push (i.e., a group of ReferenceChanges).
-
-    It is easy to figure out what commits were added to a *branch* by
-    a Reference change:
-
-        git rev-list change.old..change.new
-
-    or removed from a *branch*:
-
-        git rev-list change.new..change.old
-
-    But it is not quite so trivial to determine which entirely new
-    commits were added to the *repository* by a push and which old
-    commits were discarded by a push.  A big part of the job of this
-    class is to figure out these things, and to make sure that new
-    commits are only detailed once even if they were added to multiple
-    references.
-
-    The first step is to determine the "other" references--those
-    unaffected by the current push.  They are computed by listing all
-    references then removing any affected by this push.  The results
-    are stored in Push._other_ref_sha1s.
-
-    The commits contained in the repository before this push were
-
-        git rev-list other1 other2 other3 ... change1.old change2.old ...
-
-    Where "changeN.old" is the old value of one of the references
-    affected by this push.
-
-    The commits contained in the repository after this push are
-
-        git rev-list other1 other2 other3 ... change1.new change2.new ...
-
-    The commits added by this push are the difference between these
-    two sets, which can be written
-
-        git rev-list \
-            ^other1 ^other2 ... \
-            ^change1.old ^change2.old ... \
-            change1.new change2.new ...
-
-    The commits removed by this push can be computed by
-
-        git rev-list \
-            ^other1 ^other2 ... \
-            ^change1.new ^change2.new ... \
-            change1.old change2.old ...
-
-    The last point is that it is possible that other pushes are
-    occurring simultaneously to this one, so reference values can
-    change at any time.  It is impossible to eliminate all race
-    conditions, but we reduce the window of time during which problems
-    can occur by translating reference names to SHA1s as soon as
-    possible and working with SHA1s thereafter (because SHA1s are
-    immutable)."""
-
-    # A map {(changeclass, changetype): integer} specifying the order
-    # that reference changes will be processed if multiple reference
-    # changes are included in a single push.  The order is significant
-    # mostly because new commit notifications are threaded together
-    # with the first reference change that includes the commit.  The
-    # following order thus causes commits to be grouped with branch
-    # changes (as opposed to tag changes) if possible.
-    SORT_ORDER = dict(
-        (value, i) for (i, value) in enumerate([
-            (BranchChange, 'update'),
-            (BranchChange, 'create'),
-            (AnnotatedTagChange, 'update'),
-            (AnnotatedTagChange, 'create'),
-            (NonAnnotatedTagChange, 'update'),
-            (NonAnnotatedTagChange, 'create'),
-            (BranchChange, 'delete'),
-            (AnnotatedTagChange, 'delete'),
-            (NonAnnotatedTagChange, 'delete'),
-            (OtherReferenceChange, 'update'),
-            (OtherReferenceChange, 'create'),
-            (OtherReferenceChange, 'delete'),
-            ])
-        )
-
-    def __init__(self, environment, changes, ignore_other_refs=False):
-        self.changes = sorted(changes, key=self._sort_key)
-        self.__other_ref_sha1s = None
-        self.__cached_commits_spec = {}
-        self.environment = environment
-
-        if ignore_other_refs:
-            self.__other_ref_sha1s = set()
-
-    @classmethod
-    def _sort_key(klass, change):
-        return (klass.SORT_ORDER[change.__class__, change.change_type], change.refname,)
-
-    @property
-    def _other_ref_sha1s(self):
-        """The GitObjects referred to by references unaffected by this push.
-        """
-        if self.__other_ref_sha1s is None:
-            # The refnames being changed by this push:
-            updated_refs = set(
-                change.refname
-                for change in self.changes
-                )
-
-            # The SHA-1s of commits referred to by all references in this
-            # repository *except* updated_refs:
-            sha1s = set()
-            fmt = (
-                '%(objectname) %(objecttype) %(refname)\n'
-                '%(*objectname) %(*objecttype) %(refname)'
-                )
-            ref_filter_regex, is_inclusion_filter = \
-                self.environment.get_ref_filter_regex()
-            for line in read_git_lines(
-                    ['for-each-ref', '--format=%s' % (fmt,)]):
-                (sha1, type, name) = line.split(' ', 2)
-                if (sha1 and type == 'commit' and
-                        name not in updated_refs and
-                        include_ref(name, ref_filter_regex, is_inclusion_filter)):
-                    sha1s.add(sha1)
-
-            self.__other_ref_sha1s = sha1s
-
-        return self.__other_ref_sha1s
-
-    def _get_commits_spec_incl(self, new_or_old, reference_change=None):
-        """Get new or old SHA-1 from one or each of the changed refs.
-
-        Return a list of SHA-1 commit identifier strings suitable as
-        arguments to 'git rev-list' (or 'git log' or ...).  The
-        returned identifiers are either the old or new values from one
-        or all of the changed references, depending on the values of
-        new_or_old and reference_change.
-
-        new_or_old is either the string 'new' or the string 'old'.  If
-        'new', the returned SHA-1 identifiers are the new values from
-        each changed reference.  If 'old', the SHA-1 identifiers are
-        the old values from each changed reference.
-
-        If reference_change is specified and not None, only the new or
-        old reference from the specified reference is included in the
-        return value.
-
-        This function returns None if there are no matching revisions
-        (e.g., because a branch was deleted and new_or_old is 'new').
-        """
-
-        if not reference_change:
-            incl_spec = sorted(
-                getattr(change, new_or_old).sha1
-                for change in self.changes
-                if getattr(change, new_or_old)
-                )
-            if not incl_spec:
-                incl_spec = None
-        elif not getattr(reference_change, new_or_old).commit_sha1:
-            incl_spec = None
-        else:
-            incl_spec = [getattr(reference_change, new_or_old).commit_sha1]
-        return incl_spec
-
-    def _get_commits_spec_excl(self, new_or_old):
-        """Get exclusion revisions for determining new or discarded commits.
-
-        Return a list of strings suitable as arguments to 'git
-        rev-list' (or 'git log' or ...) that will exclude all
-        commits that, depending on the value of new_or_old, were
-        either previously in the repository (useful for determining
-        which commits are new to the repository) or currently in the
-        repository (useful for determining which commits were
-        discarded from the repository).
-
-        new_or_old is either the string 'new' or the string 'old'.  If
-        'new', the commits to be excluded are those that were in the
-        repository before the push.  If 'old', the commits to be
-        excluded are those that are currently in the repository.  """
-
-        old_or_new = {'old': 'new', 'new': 'old'}[new_or_old]
-        excl_revs = self._other_ref_sha1s.union(
-            getattr(change, old_or_new).sha1
-            for change in self.changes
-            if getattr(change, old_or_new).type in ['commit', 'tag']
-            )
-        return ['^' + sha1 for sha1 in sorted(excl_revs)]
-
-    def get_commits_spec(self, new_or_old, reference_change=None):
-        """Get rev-list arguments for added or discarded commits.
-
-        Return a list of strings suitable as arguments to 'git
-        rev-list' (or 'git log' or ...) that select those commits
-        that, depending on the value of new_or_old, are either new to
-        the repository or were discarded from the repository.
-
-        new_or_old is either the string 'new' or the string 'old'.  If
-        'new', the returned list is used to select commits that are
-        new to the repository.  If 'old', the returned value is used
-        to select the commits that have been discarded from the
-        repository.
-
-        If reference_change is specified and not None, the new or
-        discarded commits are limited to those that are reachable from
-        the new or old value of the specified reference.
-
-        This function returns None if there are no added (or discarded)
-        revisions.
-        """
-        key = (new_or_old, reference_change)
-        if key not in self.__cached_commits_spec:
-            ret = self._get_commits_spec_incl(new_or_old, reference_change)
-            if ret is not None:
-                ret.extend(self._get_commits_spec_excl(new_or_old))
-            self.__cached_commits_spec[key] = ret
-        return self.__cached_commits_spec[key]
-
-    def get_new_commits(self, reference_change=None):
-        """Return a list of commits added by this push.
-
-        Return a list of the object names of commits that were added
-        by the part of this push represented by reference_change.  If
-        reference_change is None, then return a list of *all* commits
-        added by this push."""
-
-        spec = self.get_commits_spec('new', reference_change)
-        return git_rev_list(spec)
-
-    def get_discarded_commits(self, reference_change):
-        """Return a list of commits discarded by this push.
-
-        Return a list of the object names of commits that were
-        entirely discarded from the repository by the part of this
-        push represented by reference_change."""
-
-        spec = self.get_commits_spec('old', reference_change)
-        return git_rev_list(spec)
-
-    def send_emails(self, mailer, body_filter=None):
-        """Use send all of the notification emails needed for this push.
-
-        Use send all of the notification emails (including reference
-        change emails and commit emails) needed for this push.  Send
-        the emails using mailer.  If body_filter is not None, then use
-        it to filter the lines that are intended for the email
-        body."""
-
-        # The sha1s of commits that were introduced by this push.
-        # They will be removed from this set as they are processed, to
-        # guarantee that one (and only one) email is generated for
-        # each new commit.
-        unhandled_sha1s = set(self.get_new_commits())
-        send_date = IncrementalDateTime()
-        for change in self.changes:
-            sha1s = []
-            for sha1 in reversed(list(self.get_new_commits(change))):
-                if sha1 in unhandled_sha1s:
-                    sha1s.append(sha1)
-                    unhandled_sha1s.remove(sha1)
-
-            # Check if we've got anyone to send to
-            if not change.recipients:
-                change.environment.log_warning(
-                    '*** no recipients configured so no email will be sent\n'
-                    '*** for %r update %s->%s'
-                    % (change.refname, change.old.sha1, change.new.sha1,)
-                    )
-            else:
-                if not change.environment.quiet:
-                    change.environment.log_msg(
-                        'Sending notification emails to: %s' % (change.recipients,))
-                extra_values = {'send_date': next(send_date)}
-
-                rev = change.send_single_combined_email(sha1s)
-                if rev:
-                    mailer.send(
-                        change.generate_combined_email(self, rev, body_filter, extra_values),
-                        rev.recipients,
-                        )
-                    # This change is now fully handled; no need to handle
-                    # individual revisions any further.
-                    continue
-                else:
-                    mailer.send(
-                        change.generate_email(self, body_filter, extra_values),
-                        change.recipients,
-                        )
-
-            max_emails = change.environment.maxcommitemails
-            if max_emails and len(sha1s) > max_emails:
-                change.environment.log_warning(
-                    '*** Too many new commits (%d), not sending commit emails.\n' % len(sha1s) +
-                    '*** Try setting multimailhook.maxCommitEmails to a greater value\n' +
-                    '*** Currently, multimailhook.maxCommitEmails=%d' % max_emails
-                    )
-                return
-
-            for (num, sha1) in enumerate(sha1s):
-                rev = Revision(change, GitObject(sha1), num=num + 1, tot=len(sha1s))
-                if len(rev.parents) > 1 and change.environment.excludemergerevisions:
-                    # skipping a merge commit
-                    continue
-                if not rev.recipients and rev.cc_recipients:
-                    change.environment.log_msg('*** Replacing Cc: with To:')
-                    rev.recipients = rev.cc_recipients
-                    rev.cc_recipients = None
-                if rev.recipients:
-                    extra_values = {'send_date': next(send_date)}
-                    mailer.send(
-                        rev.generate_email(self, body_filter, extra_values),
-                        rev.recipients,
-                        )
-
-        # Consistency check:
-        if unhandled_sha1s:
-            change.environment.log_error(
-                'ERROR: No emails were sent for the following new commits:\n'
-                '    %s'
-                % ('\n    '.join(sorted(unhandled_sha1s)),)
-                )
-
-
-def include_ref(refname, ref_filter_regex, is_inclusion_filter):
-    does_match = bool(ref_filter_regex.search(refname))
-    if is_inclusion_filter:
-        return does_match
-    else:  # exclusion filter -- we include the ref if the regex doesn't match
-        return not does_match
-
-
-def run_as_post_receive_hook(environment, mailer):
-    environment.check()
-    send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex(True)
-    ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(False)
-    changes = []
-    while True:
-        line = read_line(sys.stdin)
-        if line == '':
-            break
-        (oldrev, newrev, refname) = line.strip().split(' ', 2)
-        environment.get_logger().debug(
-            "run_as_post_receive_hook: oldrev=%s, newrev=%s, refname=%s" %
-            (oldrev, newrev, refname))
-
-        if not include_ref(refname, ref_filter_regex, is_inclusion_filter):
-            continue
-        if not include_ref(refname, send_filter_regex, send_is_inclusion_filter):
-            continue
-        changes.append(
-            ReferenceChange.create(environment, oldrev, newrev, refname)
-            )
-    if not changes:
-        mailer.close()
-        return
-    push = Push(environment, changes)
-    try:
-        push.send_emails(mailer, body_filter=environment.filter_body)
-    finally:
-        mailer.close()
-
-
-def run_as_update_hook(environment, mailer, refname, oldrev, newrev, force_send=False):
-    environment.check()
-    send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex(True)
-    ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(False)
-    if not include_ref(refname, ref_filter_regex, is_inclusion_filter):
-        return
-    if not include_ref(refname, send_filter_regex, send_is_inclusion_filter):
-        return
-    changes = [
-        ReferenceChange.create(
-            environment,
-            read_git_output(['rev-parse', '--verify', oldrev]),
-            read_git_output(['rev-parse', '--verify', newrev]),
-            refname,
-            ),
-        ]
-    if not changes:
-        mailer.close()
-        return
-    push = Push(environment, changes, force_send)
-    try:
-        push.send_emails(mailer, body_filter=environment.filter_body)
-    finally:
-        mailer.close()
-
-
-def check_ref_filter(environment):
-    send_filter_regex, send_is_inclusion = environment.get_ref_filter_regex(True)
-    ref_filter_regex, ref_is_inclusion = environment.get_ref_filter_regex(False)
-
-    def inc_exc_lusion(b):
-        if b:
-            return 'inclusion'
-        else:
-            return 'exclusion'
-
-    if send_filter_regex:
-        sys.stdout.write("DoSend/DontSend filter regex (" +
-                         (inc_exc_lusion(send_is_inclusion)) +
-                         '): ' + send_filter_regex.pattern +
-                         '\n')
-    if send_filter_regex:
-        sys.stdout.write("Include/Exclude filter regex (" +
-                         (inc_exc_lusion(ref_is_inclusion)) +
-                         '): ' + ref_filter_regex.pattern +
-                         '\n')
-    sys.stdout.write(os.linesep)
-
-    sys.stdout.write(
-        "Refs marked as EXCLUDE are excluded by either refFilterInclusionRegex\n"
-        "or refFilterExclusionRegex. No emails will be sent for commits included\n"
-        "in these refs.\n"
-        "Refs marked as DONT-SEND are excluded by either refFilterDoSendRegex or\n"
-        "refFilterDontSendRegex, but not by either refFilterInclusionRegex or\n"
-        "refFilterExclusionRegex. Emails will be sent for commits included in these\n"
-        "refs only when the commit reaches a ref which isn't excluded.\n"
-        "Refs marked as DO-SEND are not excluded by any filter. Emails will\n"
-        "be sent normally for commits included in these refs.\n")
-
-    sys.stdout.write(os.linesep)
-
-    for refname in read_git_lines(['for-each-ref', '--format', '%(refname)']):
-        sys.stdout.write(refname)
-        if not include_ref(refname, ref_filter_regex, ref_is_inclusion):
-            sys.stdout.write(' EXCLUDE')
-        elif not include_ref(refname, send_filter_regex, send_is_inclusion):
-            sys.stdout.write(' DONT-SEND')
-        else:
-            sys.stdout.write(' DO-SEND')
-
-        sys.stdout.write(os.linesep)
-
-
-def show_env(environment, out):
-    out.write('Environment values:\n')
-    for (k, v) in sorted(environment.get_values().items()):
-        if k:  # Don't show the {'' : ''} pair.
-            out.write('    %s : %r\n' % (k, v))
-    out.write('\n')
-    # Flush to avoid interleaving with further log output
-    out.flush()
-
-
-def check_setup(environment):
-    environment.check()
-    show_env(environment, sys.stdout)
-    sys.stdout.write("Now, checking that git-multimail's standard input "
-                     "is properly set ..." + os.linesep)
-    sys.stdout.write("Please type some text and then press Return" + os.linesep)
-    stdin = sys.stdin.readline()
-    sys.stdout.write("You have just entered:" + os.linesep)
-    sys.stdout.write(stdin)
-    sys.stdout.write("git-multimail seems properly set up." + os.linesep)
-
-
-def choose_mailer(config, environment):
-    mailer = config.get('mailer', default='sendmail')
-
-    if mailer == 'smtp':
-        smtpserver = config.get('smtpserver', default='localhost')
-        smtpservertimeout = float(config.get('smtpservertimeout', default=10.0))
-        smtpserverdebuglevel = int(config.get('smtpserverdebuglevel', default=0))
-        smtpencryption = config.get('smtpencryption', default='none')
-        smtpuser = config.get('smtpuser', default='')
-        smtppass = config.get('smtppass', default='')
-        smtpcacerts = config.get('smtpcacerts', default='')
-        mailer = SMTPMailer(
-            environment,
-            envelopesender=(environment.get_sender() or environment.get_fromaddr()),
-            smtpserver=smtpserver, smtpservertimeout=smtpservertimeout,
-            smtpserverdebuglevel=smtpserverdebuglevel,
-            smtpencryption=smtpencryption,
-            smtpuser=smtpuser,
-            smtppass=smtppass,
-            smtpcacerts=smtpcacerts
-            )
-    elif mailer == 'sendmail':
-        command = config.get('sendmailcommand')
-        if command:
-            command = shlex.split(command)
-        mailer = SendMailer(environment,
-                            command=command, envelopesender=environment.get_sender())
-    else:
-        environment.log_error(
-            'fatal: multimailhook.mailer is set to an incorrect value: "%s"\n' % mailer +
-            'please use one of "smtp" or "sendmail".'
-            )
-        sys.exit(1)
-    return mailer
-
-
-KNOWN_ENVIRONMENTS = {
-    'generic': {'highprec': GenericEnvironmentMixin},
-    'gitolite': {'highprec': GitoliteEnvironmentHighPrecMixin,
-                 'lowprec': GitoliteEnvironmentLowPrecMixin},
-    'stash': {'highprec': StashEnvironmentHighPrecMixin,
-              'lowprec': StashEnvironmentLowPrecMixin},
-    'gerrit': {'highprec': GerritEnvironmentHighPrecMixin,
-               'lowprec': GerritEnvironmentLowPrecMixin},
-    }
-
-
-def choose_environment(config, osenv=None, env=None, recipients=None,
-                       hook_info=None):
-    env_name = choose_environment_name(config, env, osenv)
-    environment_klass = build_environment_klass(env_name)
-    env = build_environment(environment_klass, env_name, config,
-                            osenv, recipients, hook_info)
-    return env
-
-
-def choose_environment_name(config, env, osenv):
-    if not osenv:
-        osenv = os.environ
-
-    if not env:
-        env = config.get('environment')
-
-    if not env:
-        if 'GL_USER' in osenv and 'GL_REPO' in osenv:
-            env = 'gitolite'
-        else:
-            env = 'generic'
-    return env
-
-
-COMMON_ENVIRONMENT_MIXINS = [
-    ConfigRecipientsEnvironmentMixin,
-    CLIRecipientsEnvironmentMixin,
-    ConfigRefFilterEnvironmentMixin,
-    ProjectdescEnvironmentMixin,
-    ConfigMaxlinesEnvironmentMixin,
-    ComputeFQDNEnvironmentMixin,
-    ConfigFilterLinesEnvironmentMixin,
-    PusherDomainEnvironmentMixin,
-    ConfigOptionsEnvironmentMixin,
-    ]
-
-
-def build_environment_klass(env_name):
-    if 'class' in KNOWN_ENVIRONMENTS[env_name]:
-        return KNOWN_ENVIRONMENTS[env_name]['class']
-
-    environment_mixins = []
-    known_env = KNOWN_ENVIRONMENTS[env_name]
-    if 'highprec' in known_env:
-        high_prec_mixin = known_env['highprec']
-        environment_mixins.append(high_prec_mixin)
-    environment_mixins = environment_mixins + COMMON_ENVIRONMENT_MIXINS
-    if 'lowprec' in known_env:
-        low_prec_mixin = known_env['lowprec']
-        environment_mixins.append(low_prec_mixin)
-    environment_mixins.append(Environment)
-    klass_name = env_name.capitalize() + 'Environment'
-    environment_klass = type(
-        klass_name,
-        tuple(environment_mixins),
-        {},
-        )
-    KNOWN_ENVIRONMENTS[env_name]['class'] = environment_klass
-    return environment_klass
-
-
-GerritEnvironment = build_environment_klass('gerrit')
-StashEnvironment = build_environment_klass('stash')
-GitoliteEnvironment = build_environment_klass('gitolite')
-GenericEnvironment = build_environment_klass('generic')
-
-
-def build_environment(environment_klass, env, config,
-                      osenv, recipients, hook_info):
-    environment_kw = {
-        'osenv': osenv,
-        'config': config,
-        }
-
-    if env == 'stash':
-        environment_kw['user'] = hook_info['stash_user']
-        environment_kw['repo'] = hook_info['stash_repo']
-    elif env == 'gerrit':
-        environment_kw['project'] = hook_info['project']
-        environment_kw['submitter'] = hook_info['submitter']
-        environment_kw['update_method'] = hook_info['update_method']
-
-    environment_kw['cli_recipients'] = recipients
-
-    return environment_klass(**environment_kw)
-
-
-def get_version():
-    oldcwd = os.getcwd()
-    try:
-        try:
-            os.chdir(os.path.dirname(os.path.realpath(__file__)))
-            git_version = read_git_output(['describe', '--tags', 'HEAD'])
-            if git_version == __version__:
-                return git_version
-            else:
-                return '%s (%s)' % (__version__, git_version)
-        except:
-            pass
-    finally:
-        os.chdir(oldcwd)
-    return __version__
-
-
-def compute_gerrit_options(options, args, required_gerrit_options,
-                           raw_refname):
-    if None in required_gerrit_options:
-        raise SystemExit("Error: Specify all of --oldrev, --newrev, --refname, "
-                         "and --project; or none of them.")
-
-    if options.environment not in (None, 'gerrit'):
-        raise SystemExit("Non-gerrit environments incompatible with --oldrev, "
-                         "--newrev, --refname, and --project")
-    options.environment = 'gerrit'
-
-    if args:
-        raise SystemExit("Error: Positional parameters not allowed with "
-                         "--oldrev, --newrev, and --refname.")
-
-    # Gerrit oddly omits 'refs/heads/' in the refname when calling
-    # ref-updated hook; put it back.
-    git_dir = get_git_dir()
-    if (not os.path.exists(os.path.join(git_dir, raw_refname)) and
-        os.path.exists(os.path.join(git_dir, 'refs', 'heads',
-                                    raw_refname))):
-        options.refname = 'refs/heads/' + options.refname
-
-    # New revisions can appear in a gerrit repository either due to someone
-    # pushing directly (in which case options.submitter will be set), or they
-    # can press "Submit this patchset" in the web UI for some CR (in which
-    # case options.submitter will not be set and gerrit will not have provided
-    # us the information about who pressed the button).
-    #
-    # Note for the nit-picky: I'm lumping in REST API calls and the ssh
-    # gerrit review command in with "Submit this patchset" button, since they
-    # have the same effect.
-    if options.submitter:
-        update_method = 'pushed'
-        # The submitter argument is almost an RFC 2822 email address; change it
-        # from 'User Name (email@domain)' to 'User Name <email@domain>' so it is
-        options.submitter = options.submitter.replace('(', '<').replace(')', '>')
-    else:
-        update_method = 'submitted'
-        # Gerrit knew who submitted this patchset, but threw that information
-        # away when it invoked this hook.  However, *IF* Gerrit created a
-        # merge to bring the patchset in (project 'Submit Type' is either
-        # "Always Merge", or is "Merge if Necessary" and happens to be
-        # necessary for this particular CR), then it will have the committer
-        # of that merge be 'Gerrit Code Review' and the author will be the
-        # person who requested the submission of the CR.  Since this is fairly
-        # likely for most gerrit installations (of a reasonable size), it's
-        # worth the extra effort to try to determine the actual submitter.
-        rev_info = read_git_lines(['log', '--no-walk', '--merges',
-                                   '--format=%cN%n%aN <%aE>', options.newrev])
-        if rev_info and rev_info[0] == 'Gerrit Code Review':
-            options.submitter = rev_info[1]
-
-    # We pass back refname, oldrev, newrev as args because then the
-    # gerrit ref-updated hook is much like the git update hook
-    return (options,
-            [options.refname, options.oldrev, options.newrev],
-            {'project': options.project, 'submitter': options.submitter,
-             'update_method': update_method})
-
-
-def check_hook_specific_args(options, args):
-    raw_refname = options.refname
-    # Convert each string option unicode for Python3.
-    if PYTHON3:
-        opts = ['environment', 'recipients', 'oldrev', 'newrev', 'refname',
-                'project', 'submitter', 'stash_user', 'stash_repo']
-        for opt in opts:
-            if not hasattr(options, opt):
-                continue
-            obj = getattr(options, opt)
-            if obj:
-                enc = obj.encode('utf-8', 'surrogateescape')
-                dec = enc.decode('utf-8', 'replace')
-                setattr(options, opt, dec)
-
-    # First check for stash arguments
-    if (options.stash_user is None) != (options.stash_repo is None):
-        raise SystemExit("Error: Specify both of --stash-user and "
-                         "--stash-repo or neither.")
-    if options.stash_user:
-        options.environment = 'stash'
-        return options, args, {'stash_user': options.stash_user,
-                               'stash_repo': options.stash_repo}
-
-    # Finally, check for gerrit specific arguments
-    required_gerrit_options = (options.oldrev, options.newrev, options.refname,
-                               options.project)
-    if required_gerrit_options != (None,) * 4:
-        return compute_gerrit_options(options, args, required_gerrit_options,
-                                      raw_refname)
-
-    # No special options in use, just return what we started with
-    return options, args, {}
-
-
-class Logger(object):
-    def parse_verbose(self, verbose):
-        if verbose > 0:
-            return logging.DEBUG
-        else:
-            return logging.INFO
-
-    def create_log_file(self, environment, name, path, verbosity):
-        log_file = logging.getLogger(name)
-        file_handler = logging.FileHandler(path)
-        log_fmt = logging.Formatter("%(asctime)s [%(levelname)-5.5s]  %(message)s")
-        file_handler.setFormatter(log_fmt)
-        log_file.addHandler(file_handler)
-        log_file.setLevel(verbosity)
-        return log_file
-
-    def __init__(self, environment):
-        self.environment = environment
-        self.loggers = []
-        stderr_log = logging.getLogger('git_multimail.stderr')
-
-        class EncodedStderr(object):
-            def write(self, x):
-                write_str(sys.stderr, x)
-
-            def flush(self):
-                sys.stderr.flush()
-
-        stderr_handler = logging.StreamHandler(EncodedStderr())
-        stderr_log.addHandler(stderr_handler)
-        stderr_log.setLevel(self.parse_verbose(environment.verbose))
-        self.loggers.append(stderr_log)
-
-        if environment.debug_log_file is not None:
-            debug_log_file = self.create_log_file(
-                environment, 'git_multimail.debug', environment.debug_log_file, logging.DEBUG)
-            self.loggers.append(debug_log_file)
-
-        if environment.log_file is not None:
-            log_file = self.create_log_file(
-                environment, 'git_multimail.file', environment.log_file, logging.INFO)
-            self.loggers.append(log_file)
-
-        if environment.error_log_file is not None:
-            error_log_file = self.create_log_file(
-                environment, 'git_multimail.error', environment.error_log_file, logging.ERROR)
-            self.loggers.append(error_log_file)
-
-    def info(self, msg, *args, **kwargs):
-        for l in self.loggers:
-            l.info(msg, *args, **kwargs)
-
-    def debug(self, msg, *args, **kwargs):
-        for l in self.loggers:
-            l.debug(msg, *args, **kwargs)
-
-    def warning(self, msg, *args, **kwargs):
-        for l in self.loggers:
-            l.warning(msg, *args, **kwargs)
-
-    def error(self, msg, *args, **kwargs):
-        for l in self.loggers:
-            l.error(msg, *args, **kwargs)
-
-
-def main(args):
-    parser = optparse.OptionParser(
-        description=__doc__,
-        usage='%prog [OPTIONS]\n   or: %prog [OPTIONS] REFNAME OLDREV NEWREV',
-        )
-
-    parser.add_option(
-        '--environment', '--env', action='store', type='choice',
-        choices=list(KNOWN_ENVIRONMENTS.keys()), default=None,
-        help=(
-            'Choose type of environment is in use.  Default is taken from '
-            'multimailhook.environment if set; otherwise "generic".'
-            ),
-        )
-    parser.add_option(
-        '--stdout', action='store_true', default=False,
-        help='Output emails to stdout rather than sending them.',
-        )
-    parser.add_option(
-        '--recipients', action='store', default=None,
-        help='Set list of email recipients for all types of emails.',
-        )
-    parser.add_option(
-        '--show-env', action='store_true', default=False,
-        help=(
-            'Write to stderr the values determined for the environment '
-            '(intended for debugging purposes), then proceed normally.'
-            ),
-        )
-    parser.add_option(
-        '--force-send', action='store_true', default=False,
-        help=(
-            'Force sending refchange email when using as an update hook. '
-            'This is useful to work around the unreliable new commits '
-            'detection in this mode.'
-            ),
-        )
-    parser.add_option(
-        '-c', metavar="<name>=<value>", action='append',
-        help=(
-            'Pass a configuration parameter through to git.  The value given '
-            'will override values from configuration files.  See the -c option '
-            'of git(1) for more details.  (Only works with git >= 1.7.3)'
-            ),
-        )
-    parser.add_option(
-        '--version', '-v', action='store_true', default=False,
-        help=(
-            "Display git-multimail's version"
-            ),
-        )
-
-    parser.add_option(
-        '--python-version', action='store_true', default=False,
-        help=(
-            "Display the version of Python used by git-multimail"
-            ),
-        )
-
-    parser.add_option(
-        '--check-ref-filter', action='store_true', default=False,
-        help=(
-            'List refs and show information on how git-multimail '
-            'will process them.'
-            )
-        )
-
-    # The following options permit this script to be run as a gerrit
-    # ref-updated hook.  See e.g.
-    # code.google.com/p/gerrit/source/browse/Documentation/config-hooks.txt
-    # We suppress help for these items, since these are specific to gerrit,
-    # and we don't want users directly using them any way other than how the
-    # gerrit ref-updated hook is called.
-    parser.add_option('--oldrev', action='store', help=optparse.SUPPRESS_HELP)
-    parser.add_option('--newrev', action='store', help=optparse.SUPPRESS_HELP)
-    parser.add_option('--refname', action='store', help=optparse.SUPPRESS_HELP)
-    parser.add_option('--project', action='store', help=optparse.SUPPRESS_HELP)
-    parser.add_option('--submitter', action='store', help=optparse.SUPPRESS_HELP)
-
-    # The following allow this to be run as a stash asynchronous post-receive
-    # hook (almost identical to a git post-receive hook but triggered also for
-    # merges of pull requests from the UI).  We suppress help for these items,
-    # since these are specific to stash.
-    parser.add_option('--stash-user', action='store', help=optparse.SUPPRESS_HELP)
-    parser.add_option('--stash-repo', action='store', help=optparse.SUPPRESS_HELP)
-
-    (options, args) = parser.parse_args(args)
-    (options, args, hook_info) = check_hook_specific_args(options, args)
-
-    if options.version:
-        sys.stdout.write('git-multimail version ' + get_version() + '\n')
-        return
-
-    if options.python_version:
-        sys.stdout.write('Python version ' + sys.version + '\n')
-        return
-
-    if options.c:
-        Config.add_config_parameters(options.c)
-
-    config = Config('multimailhook')
-
-    environment = None
-    try:
-        environment = choose_environment(
-            config, osenv=os.environ,
-            env=options.environment,
-            recipients=options.recipients,
-            hook_info=hook_info,
-            )
-
-        if options.show_env:
-            show_env(environment, sys.stderr)
-
-        if options.stdout or environment.stdout:
-            mailer = OutputMailer(sys.stdout, environment)
-        else:
-            mailer = choose_mailer(config, environment)
-
-        must_check_setup = os.environ.get('GIT_MULTIMAIL_CHECK_SETUP')
-        if must_check_setup == '':
-            must_check_setup = False
-        if options.check_ref_filter:
-            check_ref_filter(environment)
-        elif must_check_setup:
-            check_setup(environment)
-        # Dual mode: if arguments were specified on the command line, run
-        # like an update hook; otherwise, run as a post-receive hook.
-        elif args:
-            if len(args) != 3:
-                parser.error('Need zero or three non-option arguments')
-            (refname, oldrev, newrev) = args
-            environment.get_logger().debug(
-                "run_as_update_hook: refname=%s, oldrev=%s, newrev=%s, force_send=%s" %
-                (refname, oldrev, newrev, options.force_send))
-            run_as_update_hook(environment, mailer, refname, oldrev, newrev, options.force_send)
-        else:
-            run_as_post_receive_hook(environment, mailer)
-    except ConfigurationException:
-        sys.exit(sys.exc_info()[1])
-    except SystemExit:
-        raise
-    except Exception:
-        t, e, tb = sys.exc_info()
-        import traceback
-        sys.stderr.write('\n')  # Avoid mixing message with previous output
-        msg = (
-            'Exception \'' + t.__name__ +
-            '\' raised. Please report this as a bug to\n'
-            'https://github.com/git-multimail/git-multimail/issues\n'
-            'with the information below:\n\n'
-            'git-multimail version ' + get_version() + '\n'
-            'Python version ' + sys.version + '\n' +
-            traceback.format_exc())
-        try:
-            environment.get_logger().error(msg)
-        except:
-            sys.stderr.write(msg)
-        sys.exit(1)
-
-
-if __name__ == '__main__':
-    main(sys.argv[1:])
diff --git a/contrib/hooks/multimail/migrate-mailhook-config b/contrib/hooks/multimail/migrate-mailhook-config
deleted file mode 100755
index 241ba22..0000000
--- a/contrib/hooks/multimail/migrate-mailhook-config
+++ /dev/null
@@ -1,274 +0,0 @@
-#! /usr/bin/env python
-
-"""Migrate a post-receive-email configuration to be usable with git_multimail.py.
-
-See README.migrate-from-post-receive-email for more information.
-
-"""
-
-import sys
-import optparse
-
-from git_multimail import CommandError
-from git_multimail import Config
-from git_multimail import read_output
-
-
-OLD_NAMES = [
-    'mailinglist',
-    'announcelist',
-    'envelopesender',
-    'emailprefix',
-    'showrev',
-    'emailmaxlines',
-    'diffopts',
-    'scancommitforcc',
-    ]
-
-NEW_NAMES = [
-    'environment',
-    'reponame',
-    'mailinglist',
-    'refchangelist',
-    'commitlist',
-    'announcelist',
-    'announceshortlog',
-    'envelopesender',
-    'administrator',
-    'emailprefix',
-    'emailmaxlines',
-    'diffopts',
-    'emaildomain',
-    'scancommitforcc',
-    ]
-
-
-INFO = """\
-
-SUCCESS!
-
-Your post-receive-email configuration has been converted to
-git-multimail format.  Please see README and
-README.migrate-from-post-receive-email to learn about other
-git-multimail configuration possibilities.
-
-For example, git-multimail has the following new options with no
-equivalent in post-receive-email.  You might want to read about them
-to see if they would be useful in your situation:
-
-"""
-
-
-def _check_old_config_exists(old):
-    """Check that at least one old configuration value is set."""
-
-    for name in OLD_NAMES:
-        if name in old:
-            return True
-
-    return False
-
-
-def _check_new_config_clear(new):
-    """Check that none of the new configuration names are set."""
-
-    retval = True
-    for name in NEW_NAMES:
-        if name in new:
-            if retval:
-                sys.stderr.write('INFO: The following configuration values already exist:\n\n')
-            sys.stderr.write('    "%s.%s"\n' % (new.section, name))
-            retval = False
-
-    return retval
-
-
-def erase_values(config, names):
-    for name in names:
-        if name in config:
-            try:
-                sys.stderr.write('...unsetting "%s.%s"\n' % (config.section, name))
-                config.unset_all(name)
-            except CommandError:
-                sys.stderr.write(
-                    '\nWARNING: could not unset "%s.%s".  '
-                    'Perhaps it is not set at the --local level?\n\n'
-                    % (config.section, name)
-                    )
-
-
-def is_section_empty(section, local):
-    """Return True iff the specified configuration section is empty.
-
-    Iff local is True, use the --local option when invoking 'git
-    config'."""
-
-    if local:
-        local_option = ['--local']
-    else:
-        local_option = []
-
-    try:
-        read_output(
-            ['git', 'config'] +
-            local_option +
-            ['--get-regexp', '^%s\.' % (section,)]
-            )
-    except CommandError:
-        t, e, traceback = sys.exc_info()
-        if e.retcode == 1:
-            # This means that no settings were found.
-            return True
-        else:
-            raise
-    else:
-        return False
-
-
-def remove_section_if_empty(section):
-    """If the specified configuration section is empty, delete it."""
-
-    try:
-        empty = is_section_empty(section, local=True)
-    except CommandError:
-        # Older versions of git do not support the --local option, so
-        # if the first attempt fails, try without --local.
-        try:
-            empty = is_section_empty(section, local=False)
-        except CommandError:
-            sys.stderr.write(
-                '\nINFO: If configuration section "%s.*" is empty, you might want '
-                'to delete it.\n\n'
-                % (section,)
-                )
-            return
-
-    if empty:
-        sys.stderr.write('...removing section "%s.*"\n' % (section,))
-        read_output(['git', 'config', '--remove-section', section])
-    else:
-        sys.stderr.write(
-            '\nINFO: Configuration section "%s.*" still has contents.  '
-            'It will not be deleted.\n\n'
-            % (section,)
-            )
-
-
-def migrate_config(strict=False, retain=False, overwrite=False):
-    old = Config('hooks')
-    new = Config('multimailhook')
-    if not _check_old_config_exists(old):
-        sys.exit(
-            'Your repository has no post-receive-email configuration.  '
-            'Nothing to do.'
-            )
-    if not _check_new_config_clear(new):
-        if overwrite:
-            sys.stderr.write('\nWARNING: Erasing the above values...\n\n')
-            erase_values(new, NEW_NAMES)
-        else:
-            sys.exit(
-                '\nERROR: Refusing to overwrite existing values.  Use the --overwrite\n'
-                'option to continue anyway.'
-                )
-
-    name = 'showrev'
-    if name in old:
-        msg = 'git-multimail does not support "%s.%s"' % (old.section, name,)
-        if strict:
-            sys.exit(
-                'ERROR: %s.\n'
-                'Please unset that value then try again, or run without --strict.'
-                % (msg,)
-                )
-        else:
-            sys.stderr.write('\nWARNING: %s (ignoring).\n\n' % (msg,))
-
-    for name in ['mailinglist', 'announcelist']:
-        if name in old:
-            sys.stderr.write(
-                '...copying "%s.%s" to "%s.%s"\n' % (old.section, name, new.section, name)
-                )
-            old_recipients = old.get_all(name, default=None)
-            old_recipients = ', '.join(o.strip() for o in old_recipients)
-            new.set_recipients(name, old_recipients)
-
-    if strict:
-        sys.stderr.write(
-            '...setting "%s.commitlist" to the empty string\n' % (new.section,)
-            )
-        new.set_recipients('commitlist', '')
-        sys.stderr.write(
-            '...setting "%s.announceshortlog" to "true"\n' % (new.section,)
-            )
-        new.set('announceshortlog', 'true')
-
-    for name in ['envelopesender', 'emailmaxlines', 'diffopts', 'scancommitforcc']:
-        if name in old:
-            sys.stderr.write(
-                '...copying "%s.%s" to "%s.%s"\n' % (old.section, name, new.section, name)
-                )
-            new.set(name, old.get(name))
-
-    name = 'emailprefix'
-    if name in old:
-        sys.stderr.write(
-            '...copying "%s.%s" to "%s.%s"\n' % (old.section, name, new.section, name)
-            )
-        new.set(name, old.get(name))
-    elif strict:
-        sys.stderr.write(
-            '...setting "%s.%s" to "[SCM]" to preserve old subject lines\n'
-            % (new.section, name)
-            )
-        new.set(name, '[SCM]')
-
-    if not retain:
-        erase_values(old, OLD_NAMES)
-        remove_section_if_empty(old.section)
-
-    sys.stderr.write(INFO)
-    for name in NEW_NAMES:
-        if name not in OLD_NAMES:
-            sys.stderr.write('    "%s.%s"\n' % (new.section, name,))
-    sys.stderr.write('\n')
-
-
-def main(args):
-    parser = optparse.OptionParser(
-        description=__doc__,
-        usage='%prog [OPTIONS]',
-        )
-
-    parser.add_option(
-        '--strict', action='store_true', default=False,
-        help=(
-            'Slavishly configure git-multimail as closely as possible to '
-            'the post-receive-email configuration.  Default is to turn '
-            'on some new features that have no equivalent in post-receive-email.'
-            ),
-        )
-    parser.add_option(
-        '--retain', action='store_true', default=False,
-        help=(
-            'Retain the post-receive-email configuration values.  '
-            'Default is to delete them after the new values are set.'
-            ),
-        )
-    parser.add_option(
-        '--overwrite', action='store_true', default=False,
-        help=(
-            'Overwrite any existing git-multimail configuration settings.  '
-            'Default is to abort if such settings already exist.'
-            ),
-        )
-
-    (options, args) = parser.parse_args(args)
-
-    if args:
-        parser.error('Unexpected arguments: %s' % (' '.join(args),))
-
-    migrate_config(strict=options.strict, retain=options.retain, overwrite=options.overwrite)
-
-
-main(sys.argv[1:])
diff --git a/contrib/hooks/multimail/post-receive.example b/contrib/hooks/multimail/post-receive.example
deleted file mode 100755
index 0f98c5a..0000000
--- a/contrib/hooks/multimail/post-receive.example
+++ /dev/null
@@ -1,101 +0,0 @@
-#! /usr/bin/env python
-
-"""Example post-receive hook based on git-multimail.
-
-The simplest way to use git-multimail is to use the script
-git_multimail.py directly as a post-receive hook, and to configure it
-using Git's configuration files and command-line parameters.  You can
-also write your own Python wrapper for more advanced configurability,
-using git_multimail.py as a Python module.
-
-This script is a simple example of such a post-receive hook.  It is
-intended to be customized before use; see the comments in the script
-to help you get started.
-
-Using git-multimail as a Python module as done here provides more
-flexibility.  It has the following advantages:
-
-* The tool's behavior can be customized using arbitrary Python code,
-  without having to edit git_multimail.py.
-
-* Configuration settings can be read from other sources; for example,
-  user names and email addresses could be read from LDAP or from a
-  database.  Or the settings can even be hardcoded in the importing
-  Python script, if this is preferred.
-
-This script is a very basic example of how to use git_multimail.py as
-a module.  The comments below explain some of the points at which the
-script's behavior could be changed or customized.
-
-"""
-
-import sys
-
-# If necessary, add the path to the directory containing
-# git_multimail.py to the Python path as follows.  (This is not
-# necessary if git_multimail.py is in the same directory as this
-# script):
-
-#LIBDIR = 'path/to/directory/containing/module'
-#sys.path.insert(0, LIBDIR)
-
-import git_multimail
-
-# It is possible to modify the output templates here; e.g.:
-
-#git_multimail.FOOTER_TEMPLATE = """\
-#
-#-- \n\
-#This email was generated by the wonderful git-multimail tool.
-#"""
-
-
-# Specify which "git config" section contains the configuration for
-# git-multimail:
-config = git_multimail.Config('multimailhook')
-
-# Set some Git configuration variables. Equivalent to passing var=val
-# to "git -c var=val" each time git is called, or to adding the
-# configuration in .git/config (must come before instantiating the
-# environment) :
-#git_multimail.Config.add_config_parameters('multimailhook.commitEmailFormat=html')
-#git_multimail.Config.add_config_parameters(('user.name=foo', 'user.email=foo@example.com'))
-
-# Select the type of environment:
-try:
-    environment = git_multimail.GenericEnvironment(config=config)
-    #environment = git_multimail.GitoliteEnvironment(config=config)
-except git_multimail.ConfigurationException:
-    sys.stderr.write('*** %s\n' % sys.exc_info()[1])
-    sys.exit(1)
-
-
-# Choose the method of sending emails based on the git config:
-mailer = git_multimail.choose_mailer(config, environment)
-
-# Alternatively, you may hardcode the mailer using code like one of
-# the following:
-
-# Use "/usr/sbin/sendmail -oi -t" to send emails.  The envelopesender
-# argument is optional:
-#mailer = git_multimail.SendMailer(
-#    command=['/usr/sbin/sendmail', '-oi', '-t'],
-#    envelopesender='git-repo@example.com',
-#    )
-
-# Use Python's smtplib to send emails.  Both arguments are required.
-#mailer = git_multimail.SMTPMailer(
-#    environment=environment,
-#    envelopesender='git-repo@example.com',
-#    # The smtpserver argument can also include a port number; e.g.,
-#    #     smtpserver='mail.example.com:25'
-#    smtpserver='mail.example.com',
-#    )
-
-# OutputMailer is intended only for testing; it writes the emails to
-# the specified file stream.
-#mailer = git_multimail.OutputMailer(sys.stdout)
-
-
-# Read changes from stdin and send notification emails:
-git_multimail.run_as_post_receive_hook(environment, mailer)
diff --git a/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh b/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
index 4c39bda..f08890d 100755
--- a/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
+++ b/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
@@ -86,7 +86,7 @@
 test_expect_success 'Git clone works with an edited page ' '
 	wiki_reset &&
 	wiki_editpage foo "this page will be edited" \
-		false -s "first edition of page foo"&&
+		false -s "first edition of page foo" &&
 	wiki_editpage foo "this page has been edited and must be on the clone " true &&
 	git clone mediawiki::'"$WIKI_URL"' mw_dir_6 &&
 	test_path_is_file mw_dir_6/Foo.mw &&
diff --git a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
index 6b0dbda..526d928 100755
--- a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
+++ b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
@@ -287,7 +287,7 @@
 		git add \\ko\\o.mw &&
 		git commit -m " \\ko\\o added" &&
 		git push
-	)&&
+	) &&
 	wiki_page_exist \\ko\\o &&
 	wiki_check_content mw_dir_18/\\ko\\o.mw \\ko\\o
 
@@ -311,7 +311,7 @@
 		git add \\fo\\o.mw &&
 		git commit -m " \\fo\\o added" &&
 		git push
-	)&&
+	) &&
 	wiki_page_exist \\fo\\o &&
 	wiki_check_content mw_dir_20/\\fo\\o.mw \\fo\\o
 
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index b06782b..7f767b5 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -5,8 +5,12 @@
 # Copyright (C) 2009 Avery Pennarun <apenwarr@gmail.com>
 #
 
-if test -z "$GIT_EXEC_PATH" || test "${PATH#"${GIT_EXEC_PATH}:"}" = "$PATH" || ! test -f "$GIT_EXEC_PATH/git-sh-setup"
+if test -z "$GIT_EXEC_PATH" || ! test -f "$GIT_EXEC_PATH/git-sh-setup" || {
+	test "${PATH#"${GIT_EXEC_PATH}:"}" = "$PATH" &&
+	test ! "$GIT_EXEC_PATH" -ef "${PATH%%:*}" 2>/dev/null
+}
 then
+	basename=${0##*[/\\]}
 	echo >&2 'It looks like either your git installation or your'
 	echo >&2 'git-subtree installation is broken.'
 	echo >&2
@@ -14,10 +18,10 @@
 	echo >&2 " - If \`git --exec-path\` does not print the correct path to"
 	echo >&2 "   your git install directory, then set the GIT_EXEC_PATH"
 	echo >&2 "   environment variable to the correct directory."
-	echo >&2 " - Make sure that your \`${0##*/}\` file is either in your"
+	echo >&2 " - Make sure that your \`$basename\` file is either in your"
 	echo >&2 "   PATH or in your git exec path (\`$(git --exec-path)\`)."
-	echo >&2 " - You should run git-subtree as \`git ${0##*/git-}\`,"
-	echo >&2 "   not as \`${0##*/}\`." >&2
+	echo >&2 " - You should run git-subtree as \`git ${basename#git-}\`,"
+	echo >&2 "   not as \`$basename\`." >&2
 	exit 126
 fi
 
diff --git a/convert.c b/convert.c
index fd9c84b..0d6fb34 100644
--- a/convert.c
+++ b/convert.c
@@ -916,6 +916,7 @@
 	else
 		strbuf_swap(dst, &nbuf);
 	strbuf_release(&nbuf);
+	strbuf_release(&filter_status);
 	return !err;
 }
 
@@ -966,6 +967,7 @@
 
 	if (err)
 		handle_filter_error(&filter_status, entry, 0);
+	strbuf_release(&filter_status);
 	return !err;
 }
 
diff --git a/credential.c b/credential.c
index e5202fb..000ac7a 100644
--- a/credential.c
+++ b/credential.c
@@ -10,8 +10,8 @@
 
 void credential_init(struct credential *c)
 {
-	memset(c, 0, sizeof(*c));
-	c->helpers.strdup_strings = 1;
+	struct credential blank = CREDENTIAL_INIT;
+	memcpy(c, &blank, sizeof(*c));
 }
 
 void credential_clear(struct credential *c)
@@ -128,6 +128,7 @@
 	normalized_url = url_normalize(url.buf, &config.url);
 
 	git_config(urlmatch_config_entry, &config);
+	string_list_clear(&config.vars, 1);
 	free(normalized_url);
 	strbuf_release(&url);
 
diff --git a/credential.h b/credential.h
index c0e17e3..f430e77 100644
--- a/credential.h
+++ b/credential.h
@@ -128,7 +128,9 @@
 	char *path;
 };
 
-#define CREDENTIAL_INIT { STRING_LIST_INIT_DUP }
+#define CREDENTIAL_INIT { \
+	.helpers = STRING_LIST_INIT_DUP, \
+}
 
 /* Initialize a credential structure, setting all fields to empty. */
 void credential_init(struct credential *);
diff --git a/csum-file.c b/csum-file.c
index 3487d28..26e8a6d 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -131,12 +131,8 @@
 	int sink, check;
 	struct hashfile *f;
 
-	sink = open("/dev/null", O_WRONLY);
-	if (sink < 0)
-		die_errno("unable to open /dev/null");
-	check = open(name, O_RDONLY);
-	if (check < 0)
-		die_errno("unable to open '%s'", name);
+	sink = xopen("/dev/null", O_WRONLY);
+	check = xopen(name, O_RDONLY);
 	f = hashfd(sink, name);
 	f->check_fd = check;
 	f->check_buffer = xmalloc(f->buffer_len);
@@ -217,3 +213,19 @@
 	f->do_crc = 0;
 	return f->crc32;
 }
+
+int hashfile_checksum_valid(const unsigned char *data, size_t total_len)
+{
+	unsigned char got[GIT_MAX_RAWSZ];
+	git_hash_ctx ctx;
+	size_t data_len = total_len - the_hash_algo->rawsz;
+
+	if (total_len < the_hash_algo->rawsz)
+		return 0; /* say "too short"? */
+
+	the_hash_algo->init_fn(&ctx);
+	the_hash_algo->update_fn(&ctx, data, data_len);
+	the_hash_algo->final_fn(got, &ctx);
+
+	return hasheq(got, data + data_len);
+}
diff --git a/csum-file.h b/csum-file.h
index 3044bd1..291215b 100644
--- a/csum-file.h
+++ b/csum-file.h
@@ -44,6 +44,9 @@
 void crc32_begin(struct hashfile *);
 uint32_t crc32_end(struct hashfile *);
 
+/* Verify checksum validity while reading. Returns non-zero on success. */
+int hashfile_checksum_valid(const unsigned char *data, size_t len);
+
 /*
  * Returns the total number of bytes fed to the hashfile so far (including ones
  * that have not been written out to the descriptor yet).
diff --git a/date.c b/date.c
index f9ea807..c55ea47 100644
--- a/date.c
+++ b/date.c
@@ -908,7 +908,7 @@
 		/*
 		 * We take over "now" here, which usually translates
 		 * to the current timestamp.  This is because the user
-		 * really means to expire everything she has done in
+		 * really means to expire everything that was done in
 		 * the past, and by definition reflogs are the record
 		 * of the past, and there is nothing from the future
 		 * to be kept.
diff --git a/detect-compiler b/detect-compiler
index 70b7544..11d60da 100755
--- a/detect-compiler
+++ b/detect-compiler
@@ -13,11 +13,11 @@
 }
 
 get_family() {
-	get_version_line | sed 's/^\(.*\) version [0-9][^ ]* .*/\1/'
+	get_version_line | sed 's/^\(.*\) version [0-9].*/\1/'
 }
 
 get_version() {
-	get_version_line | sed 's/^.* version \([0-9][^ ]*\) .*/\1/'
+	get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/'
 }
 
 print_flags() {
@@ -38,10 +38,7 @@
 gcc)
 	print_flags gcc
 	;;
-clang)
-	print_flags clang
-	;;
-"FreeBSD clang")
+clang | *" clang")
 	print_flags clang
 	;;
 "Apple LLVM")
diff --git a/diff-lib.c b/diff-lib.c
index c2ac925..ca085a0 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -117,6 +117,10 @@
 		if (!ce_path_match(istate, ce, &revs->prune_data, NULL))
 			continue;
 
+		if (revs->diffopt.prefix &&
+		    strncmp(ce->name, revs->diffopt.prefix, revs->diffopt.prefix_length))
+			continue;
+
 		if (ce_stage(ce)) {
 			struct combine_diff_path *dpath;
 			struct diff_filepair *pair;
@@ -325,6 +329,11 @@
 	unsigned dirty_submodule = 0;
 	struct index_state *istate = revs->diffopt.repo->index;
 
+	if (new_file && S_ISSPARSEDIR(new_file->ce_mode)) {
+		diff_tree_oid(NULL, &new_file->oid, new_file->name, &revs->diffopt);
+		return;
+	}
+
 	/*
 	 * New file in the index: it might actually be different in
 	 * the working tree.
@@ -347,6 +356,20 @@
 	unsigned dirty_submodule = 0;
 	struct index_state *istate = revs->diffopt.repo->index;
 
+	assert(S_ISSPARSEDIR(old_entry->ce_mode) ==
+	       S_ISSPARSEDIR(new_entry->ce_mode));
+
+	/*
+	 * If both are sparse directory entries, then expand the
+	 * modifications to the file level. If only one was a sparse
+	 * directory, then they appear as an add and delete instead of
+	 * a modification.
+	 */
+	if (S_ISSPARSEDIR(new_entry->ce_mode)) {
+		diff_tree_oid(&old_entry->oid, &new_entry->oid, new_entry->name, &revs->diffopt);
+		return 0;
+	}
+
 	if (get_stat_data(istate, new_entry, &oid, &mode, cached, match_missing,
 			  &dirty_submodule, &revs->diffopt) < 0) {
 		if (report_missing)
diff --git a/diff-merges.c b/diff-merges.c
index 0dfcaa1..d897fd8 100644
--- a/diff-merges.c
+++ b/diff-merges.c
@@ -107,7 +107,6 @@
 
 	if (!strcmp(arg, "-m")) {
 		set_to_default(revs);
-		revs->merges_imply_patch = 1;
 	} else if (!strcmp(arg, "-c")) {
 		set_combined(revs);
 		revs->merges_imply_patch = 1;
diff --git a/diff.c b/diff.c
index 52c7915..a8113f1 100644
--- a/diff.c
+++ b/diff.c
@@ -35,7 +35,7 @@
 
 static int diff_detect_rename_default;
 static int diff_indent_heuristic = 1;
-static int diff_rename_limit_default = 400;
+static int diff_rename_limit_default = 1000;
 static int diff_suppress_blank_empty;
 static int diff_use_color_default = -1;
 static int diff_color_moved_default;
@@ -2340,7 +2340,7 @@
 	ecbdata->lno_in_postimage = strtol(p + 1, NULL, 10);
 }
 
-static void fn_out_consume(void *priv, char *line, unsigned long len)
+static int fn_out_consume(void *priv, char *line, unsigned long len)
 {
 	struct emit_callback *ecbdata = priv;
 	struct diff_options *o = ecbdata->opt;
@@ -2376,7 +2376,7 @@
 		len = sane_truncate_line(line, len);
 		find_lno(line, ecbdata);
 		emit_hunk_header(ecbdata, line, len);
-		return;
+		return 0;
 	}
 
 	if (ecbdata->diff_words) {
@@ -2386,11 +2386,11 @@
 		if (line[0] == '-') {
 			diff_words_append(line, len,
 					  &ecbdata->diff_words->minus);
-			return;
+			return 0;
 		} else if (line[0] == '+') {
 			diff_words_append(line, len,
 					  &ecbdata->diff_words->plus);
-			return;
+			return 0;
 		} else if (starts_with(line, "\\ ")) {
 			/*
 			 * Eat the "no newline at eof" marker as if we
@@ -2399,11 +2399,11 @@
 			 * defer processing. If this is the end of
 			 * preimage, more "+" lines may come after it.
 			 */
-			return;
+			return 0;
 		}
 		diff_words_flush(ecbdata);
 		emit_diff_symbol(o, s, line, len, 0);
-		return;
+		return 0;
 	}
 
 	switch (line[0]) {
@@ -2427,6 +2427,7 @@
 				 line, len, 0);
 		break;
 	}
+	return 0;
 }
 
 static void pprint_rename(struct strbuf *name, const char *a, const char *b)
@@ -2526,7 +2527,7 @@
 	return x;
 }
 
-static void diffstat_consume(void *priv, char *line, unsigned long len)
+static int diffstat_consume(void *priv, char *line, unsigned long len)
 {
 	struct diffstat_t *diffstat = priv;
 	struct diffstat_file *x = diffstat->files[diffstat->nr - 1];
@@ -2535,6 +2536,7 @@
 		x->added++;
 	else if (line[0] == '-')
 		x->deleted++;
+	return 0;
 }
 
 const char mime_boundary_leader[] = "------------";
@@ -3212,7 +3214,7 @@
 	data->lineno = nb - 1;
 }
 
-static void checkdiff_consume(void *priv, char *line, unsigned long len)
+static int checkdiff_consume(void *priv, char *line, unsigned long len)
 {
 	struct checkdiff_t *data = priv;
 	int marker_size = data->conflict_marker_size;
@@ -3236,7 +3238,7 @@
 		}
 		bad = ws_check(line + 1, len - 1, data->ws_rule);
 		if (!bad)
-			return;
+			return 0;
 		data->status |= bad;
 		err = whitespace_error_string(bad);
 		fprintf(data->o->file, "%s%s:%d: %s.\n",
@@ -3248,6 +3250,7 @@
 	} else if (line[0] == ' ') {
 		data->lineno++;
 	}
+	return 0;
 }
 
 static unsigned char *deflate_it(char *data,
@@ -3726,7 +3729,8 @@
 		xpp.anchors_nr = o->anchors_nr;
 		xecfg.ctxlen = o->context;
 		xecfg.interhunkctxlen = o->interhunkcontext;
-		if (xdi_diff_outf(&mf1, &mf2, discard_hunk_line,
+		xecfg.flags = XDL_EMIT_NO_HUNK_HDR;
+		if (xdi_diff_outf(&mf1, &mf2, NULL,
 				  diffstat_consume, diffstat, &xpp, &xecfg))
 			die("unable to generate diffstat for %s", one->path);
 
@@ -4632,6 +4636,12 @@
 	if (HAS_MULTI_BITS(options->pickaxe_opts & DIFF_PICKAXE_KINDS_MASK))
 		die(_("-G, -S and --find-object are mutually exclusive"));
 
+	if (HAS_MULTI_BITS(options->pickaxe_opts & DIFF_PICKAXE_KINDS_G_REGEX_MASK))
+		die(_("-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"));
+
+	if (HAS_MULTI_BITS(options->pickaxe_opts & DIFF_PICKAXE_KINDS_ALL_OBJFIND_MASK))
+		die(_("--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all with -G and -S"));
+
 	/*
 	 * Most of the time we can say "there are changes"
 	 * only by checking if there are changed paths, but
@@ -6119,17 +6129,18 @@
 	}
 }
 
-static void patch_id_consume(void *priv, char *line, unsigned long len)
+static int patch_id_consume(void *priv, char *line, unsigned long len)
 {
 	struct patch_id_t *data = priv;
 	int new_len;
 
 	if (len > 12 && starts_with(line, "\\ "))
-		return;
+		return 0;
 	new_len = remove_space(line, len);
 
 	the_hash_algo->update_fn(data->ctx, line, new_len);
 	data->patchlen += new_len;
+	return 0;
 }
 
 static void patch_id_add_string(git_hash_ctx *ctx, const char *str)
@@ -6227,8 +6238,8 @@
 
 		xpp.flags = 0;
 		xecfg.ctxlen = 3;
-		xecfg.flags = 0;
-		if (xdi_diff_outf(&mf1, &mf2, discard_hunk_line,
+		xecfg.flags = XDL_EMIT_NO_HUNK_HDR;
+		if (xdi_diff_outf(&mf1, &mf2, NULL,
 				  patch_id_consume, &data, &xpp, &xecfg))
 			return error("unable to generate patch-id diff for %s",
 				     p->one->path);
@@ -6284,7 +6295,7 @@
 }
 
 static const char rename_limit_warning[] =
-N_("inexact rename detection was skipped due to too many files.");
+N_("exhaustive rename detection was skipped due to too many files.");
 
 static const char degrade_cc_to_c_warning[] =
 N_("only found copies from modified paths due to too many files.");
diff --git a/diff.h b/diff.h
index c8f3fae..8ba85c5 100644
--- a/diff.h
+++ b/diff.h
@@ -265,6 +265,7 @@
 	 * postimage of the diff_queue.
 	 */
 	const char *pickaxe;
+	unsigned pickaxe_opts;
 
 	/* -I<regex> */
 	regex_t **ignore_regex;
@@ -304,8 +305,6 @@
 	/* The output format used when `diff_flush()` is run. */
 	int output_format;
 
-	unsigned pickaxe_opts;
-
 	/* Affects the way detection logic for complete rewrites, renames and
 	 * copies.
 	 */
@@ -556,6 +555,10 @@
 #define DIFF_PICKAXE_KINDS_MASK (DIFF_PICKAXE_KIND_S | \
 				 DIFF_PICKAXE_KIND_G | \
 				 DIFF_PICKAXE_KIND_OBJFIND)
+#define DIFF_PICKAXE_KINDS_G_REGEX_MASK (DIFF_PICKAXE_KIND_G | \
+					 DIFF_PICKAXE_REGEX)
+#define DIFF_PICKAXE_KINDS_ALL_OBJFIND_MASK (DIFF_PICKAXE_ALL | \
+					     DIFF_PICKAXE_KIND_OBJFIND)
 
 #define DIFF_PICKAXE_IGNORE_CASE	32
 
diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c
index a9c6d60..c88e50c 100644
--- a/diffcore-pickaxe.c
+++ b/diffcore-pickaxe.c
@@ -19,38 +19,31 @@
 	int hit;
 };
 
-static void diffgrep_consume(void *priv, char *line, unsigned long len)
+static int diffgrep_consume(void *priv, char *line, unsigned long len)
 {
 	struct diffgrep_cb *data = priv;
 	regmatch_t regmatch;
 
 	if (line[0] != '+' && line[0] != '-')
-		return;
+		return 0;
 	if (data->hit)
-		/*
-		 * NEEDSWORK: we should have a way to terminate the
-		 * caller early.
-		 */
-		return;
-	data->hit = !regexec_buf(data->regexp, line + 1, len - 1, 1,
-				 &regmatch, 0);
+		BUG("Already matched in diffgrep_consume! Broken xdiff_emit_line_fn?");
+	if (!regexec_buf(data->regexp, line + 1, len - 1, 1,
+			 &regmatch, 0)) {
+		data->hit = 1;
+		return 1;
+	}
+	return 0;
 }
 
 static int diff_grep(mmfile_t *one, mmfile_t *two,
 		     struct diff_options *o,
 		     regex_t *regexp, kwset_t kws)
 {
-	regmatch_t regmatch;
 	struct diffgrep_cb ecbdata;
 	xpparam_t xpp;
 	xdemitconf_t xecfg;
-
-	if (!one)
-		return !regexec_buf(regexp, two->ptr, two->size,
-				    1, &regmatch, 0);
-	if (!two)
-		return !regexec_buf(regexp, one->ptr, one->size,
-				    1, &regmatch, 0);
+	int ret;
 
 	/*
 	 * We have both sides; need to run textual diff and see if
@@ -60,38 +53,47 @@
 	memset(&xecfg, 0, sizeof(xecfg));
 	ecbdata.regexp = regexp;
 	ecbdata.hit = 0;
+	xecfg.flags = XDL_EMIT_NO_HUNK_HDR;
 	xecfg.ctxlen = o->context;
 	xecfg.interhunkctxlen = o->interhunkcontext;
-	if (xdi_diff_outf(one, two, discard_hunk_line, diffgrep_consume,
-			  &ecbdata, &xpp, &xecfg))
-		return 0;
-	return ecbdata.hit;
+
+	/*
+	 * An xdiff error might be our "data->hit" from above. See the
+	 * comment for xdiff_emit_line_fn in xdiff-interface.h
+	 */
+	ret = xdi_diff_outf(one, two, NULL, diffgrep_consume,
+			    &ecbdata, &xpp, &xecfg);
+	if (ecbdata.hit)
+		return 1;
+	if (ret)
+		return ret;
+	return 0;
 }
 
-static unsigned int contains(mmfile_t *mf, regex_t *regexp, kwset_t kws)
+static unsigned int contains(mmfile_t *mf, regex_t *regexp, kwset_t kws,
+			     unsigned int limit)
 {
-	unsigned int cnt;
-	unsigned long sz;
-	const char *data;
-
-	sz = mf->size;
-	data = mf->ptr;
-	cnt = 0;
+	unsigned int cnt = 0;
+	unsigned long sz = mf->size;
+	const char *data = mf->ptr;
 
 	if (regexp) {
 		regmatch_t regmatch;
 		int flags = 0;
 
-		while (sz && *data &&
+		while (sz &&
 		       !regexec_buf(regexp, data, sz, 1, &regmatch, flags)) {
 			flags |= REG_NOTBOL;
 			data += regmatch.rm_eo;
 			sz -= regmatch.rm_eo;
-			if (sz && *data && regmatch.rm_so == regmatch.rm_eo) {
+			if (sz && regmatch.rm_so == regmatch.rm_eo) {
 				data++;
 				sz--;
 			}
 			cnt++;
+
+			if (limit && cnt == limit)
+				return cnt;
 		}
 
 	} else { /* Classic exact string match */
@@ -103,6 +105,9 @@
 			sz -= offset + kwsm.size[0];
 			data += offset + kwsm.size[0];
 			cnt++;
+
+			if (limit && cnt == limit)
+				return cnt;
 		}
 	}
 	return cnt;
@@ -112,9 +117,9 @@
 		       struct diff_options *o,
 		       regex_t *regexp, kwset_t kws)
 {
-	unsigned int one_contains = one ? contains(one, regexp, kws) : 0;
-	unsigned int two_contains = two ? contains(two, regexp, kws) : 0;
-	return one_contains != two_contains;
+	unsigned int c1 = one ? contains(one, regexp, kws, 0) : 0;
+	unsigned int c2 = two ? contains(two, regexp, kws, c1 + 1) : 0;
+	return c1 != c2;
 }
 
 static int pickaxe_match(struct diff_filepair *p, struct diff_options *o,
@@ -136,9 +141,6 @@
 			 oidset_contains(o->objfind, &p->two->oid));
 	}
 
-	if (!o->pickaxe[0])
-		return 0;
-
 	if (o->flags.allow_textconv) {
 		textconv_one = get_textconv(o->repo, p->one);
 		textconv_two = get_textconv(o->repo, p->two);
@@ -163,9 +165,7 @@
 	mf1.size = fill_textconv(o->repo, textconv_one, p->one, &mf1.ptr);
 	mf2.size = fill_textconv(o->repo, textconv_two, p->two, &mf2.ptr);
 
-	ret = fn(DIFF_FILE_VALID(p->one) ? &mf1 : NULL,
-		 DIFF_FILE_VALID(p->two) ? &mf2 : NULL,
-		 o, regexp, kws);
+	ret = fn(&mf1, &mf2, o, regexp, kws);
 
 	if (textconv_one)
 		free(mf1.ptr);
@@ -232,13 +232,31 @@
 	int opts = o->pickaxe_opts;
 	regex_t regex, *regexp = NULL;
 	kwset_t kws = NULL;
+	pickaxe_fn fn;
 
+	if (opts & ~DIFF_PICKAXE_KIND_OBJFIND &&
+	    (!needle || !*needle))
+		BUG("should have needle under -G or -S");
 	if (opts & (DIFF_PICKAXE_REGEX | DIFF_PICKAXE_KIND_G)) {
 		int cflags = REG_EXTENDED | REG_NEWLINE;
 		if (o->pickaxe_opts & DIFF_PICKAXE_IGNORE_CASE)
 			cflags |= REG_ICASE;
 		regcomp_or_die(&regex, needle, cflags);
 		regexp = &regex;
+
+		if (opts & DIFF_PICKAXE_KIND_G)
+			fn = diff_grep;
+		else if (opts & DIFF_PICKAXE_REGEX)
+			fn = has_changes;
+		else
+			/*
+			 * We don't need to check the combination of
+			 * -G and --pickaxe-regex, by the time we get
+			 * here diff.c has already died if they're
+			 * combined. See the usage tests in
+			 * t4209-log-pickaxe.sh.
+			 */
+			BUG("unreachable");
 	} else if (opts & DIFF_PICKAXE_KIND_S) {
 		if (o->pickaxe_opts & DIFF_PICKAXE_IGNORE_CASE &&
 		    has_non_ascii(needle)) {
@@ -255,10 +273,14 @@
 			kwsincr(kws, needle, strlen(needle));
 			kwsprep(kws);
 		}
+		fn = has_changes;
+	} else if (opts & DIFF_PICKAXE_KIND_OBJFIND) {
+		fn = NULL;
+	} else {
+		BUG("unknown pickaxe_opts flag");
 	}
 
-	pickaxe(&diff_queued_diff, o, regexp, kws,
-		(opts & DIFF_PICKAXE_KIND_G) ? diff_grep : has_changes);
+	pickaxe(&diff_queued_diff, o, regexp, kws, fn);
 
 	if (regexp)
 		regfree(regexp);
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 3375e24..bebd4ed 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -54,7 +54,7 @@
 	if (p->broken_pair) {
 		if (!break_idx) {
 			break_idx = xmalloc(sizeof(*break_idx));
-			strintmap_init(break_idx, -1);
+			strintmap_init_with_options(break_idx, -1, NULL, 0);
 		}
 		strintmap_set(break_idx, p->one->path, rename_dst_nr);
 	}
@@ -87,13 +87,13 @@
 	short name_score;
 };
 
-struct prefetch_options {
+struct inexact_prefetch_options {
 	struct repository *repo;
 	int skip_unmodified;
 };
-static void prefetch(void *prefetch_options)
+static void inexact_prefetch(void *prefetch_options)
 {
-	struct prefetch_options *options = prefetch_options;
+	struct inexact_prefetch_options *options = prefetch_options;
 	int i;
 	struct oid_array to_fetch = OID_ARRAY_INIT;
 
@@ -126,7 +126,7 @@
 			       struct diff_filespec *src,
 			       struct diff_filespec *dst,
 			       int minimum_score,
-			       int skip_unmodified)
+			       struct diff_populate_filespec_options *dpf_opt)
 {
 	/* src points at a file that existed in the original tree (or
 	 * optionally a file in the destination tree) and dst points
@@ -143,15 +143,6 @@
 	 */
 	unsigned long max_size, delta_size, base_size, src_copied, literal_added;
 	int score;
-	struct diff_populate_filespec_options dpf_options = {
-		.check_size_only = 1
-	};
-	struct prefetch_options prefetch_options = {r, skip_unmodified};
-
-	if (r == the_repository && has_promisor_remote()) {
-		dpf_options.missing_object_cb = prefetch;
-		dpf_options.missing_object_data = &prefetch_options;
-	}
 
 	/* We deal only with regular files.  Symlink renames are handled
 	 * only when they are exact matches --- in other words, no edits
@@ -169,11 +160,13 @@
 	 * is a possible size - we really should have a flag to
 	 * say whether the size is valid or not!)
 	 */
+	dpf_opt->check_size_only = 1;
+
 	if (!src->cnt_data &&
-	    diff_populate_filespec(r, src, &dpf_options))
+	    diff_populate_filespec(r, src, dpf_opt))
 		return 0;
 	if (!dst->cnt_data &&
-	    diff_populate_filespec(r, dst, &dpf_options))
+	    diff_populate_filespec(r, dst, dpf_opt))
 		return 0;
 
 	max_size = ((src->size > dst->size) ? src->size : dst->size);
@@ -191,11 +184,11 @@
 	if (max_size * (MAX_SCORE-minimum_score) < delta_size * MAX_SCORE)
 		return 0;
 
-	dpf_options.check_size_only = 0;
+	dpf_opt->check_size_only = 0;
 
-	if (!src->cnt_data && diff_populate_filespec(r, src, &dpf_options))
+	if (!src->cnt_data && diff_populate_filespec(r, src, dpf_opt))
 		return 0;
-	if (!dst->cnt_data && diff_populate_filespec(r, dst, &dpf_options))
+	if (!dst->cnt_data && diff_populate_filespec(r, dst, dpf_opt))
 		return 0;
 
 	if (diffcore_count_changes(r, src, dst,
@@ -324,10 +317,11 @@
 }
 
 static void insert_file_table(struct repository *r,
+			      struct mem_pool *pool,
 			      struct hashmap *table, int index,
 			      struct diff_filespec *filespec)
 {
-	struct file_similarity *entry = xmalloc(sizeof(*entry));
+	struct file_similarity *entry = mem_pool_alloc(pool, sizeof(*entry));
 
 	entry->index = index;
 	entry->filespec = filespec;
@@ -343,7 +337,8 @@
  * and then during the second round we try to match
  * cache-dirty entries as well.
  */
-static int find_exact_renames(struct diff_options *options)
+static int find_exact_renames(struct diff_options *options,
+			      struct mem_pool *pool)
 {
 	int i, renames = 0;
 	struct hashmap file_table;
@@ -353,7 +348,7 @@
 	 */
 	hashmap_init(&file_table, NULL, NULL, rename_src_nr);
 	for (i = rename_src_nr-1; i >= 0; i--)
-		insert_file_table(options->repo,
+		insert_file_table(options->repo, pool,
 				  &file_table, i,
 				  rename_src[i].p->one);
 
@@ -361,8 +356,8 @@
 	for (i = 0; i < rename_dst_nr; i++)
 		renames += find_identical_files(&file_table, i, options);
 
-	/* Free the hash data structure and entries */
-	hashmap_clear_and_free(&file_table, struct file_similarity, entry);
+	/* Free the hash data structure (entries will be freed with the pool) */
+	hashmap_clear(&file_table);
 
 	return renames;
 }
@@ -455,9 +450,9 @@
 				     const char *oldname,
 				     const char *newname)
 {
-	char *old_dir = xstrdup(oldname);
-	char *new_dir = xstrdup(newname);
-	char new_dir_first_char = new_dir[0];
+	char *old_dir;
+	char *new_dir;
+	const char new_dir_first_char = newname[0];
 	int first_time_in_loop = 1;
 
 	if (!info->setup)
@@ -482,6 +477,10 @@
 		 */
 		return;
 
+
+	old_dir = xstrdup(oldname);
+	new_dir = xstrdup(newname);
+
 	while (1) {
 		int drd_flag = NOT_RELEVANT;
 
@@ -823,6 +822,78 @@
 	return idx;
 }
 
+struct basename_prefetch_options {
+	struct repository *repo;
+	struct strintmap *relevant_sources;
+	struct strintmap *sources;
+	struct strintmap *dests;
+	struct dir_rename_info *info;
+};
+static void basename_prefetch(void *prefetch_options)
+{
+	struct basename_prefetch_options *options = prefetch_options;
+	struct strintmap *relevant_sources = options->relevant_sources;
+	struct strintmap *sources = options->sources;
+	struct strintmap *dests = options->dests;
+	struct dir_rename_info *info = options->info;
+	int i;
+	struct oid_array to_fetch = OID_ARRAY_INIT;
+
+	/*
+	 * TODO: The following loops mirror the code/logic from
+	 * find_basename_matches(), though not quite exactly.  Maybe
+	 * abstract the iteration logic out somehow?
+	 */
+	for (i = 0; i < rename_src_nr; ++i) {
+		char *filename = rename_src[i].p->one->path;
+		const char *base = NULL;
+		intptr_t src_index;
+		intptr_t dst_index;
+
+		/* Skip irrelevant sources */
+		if (relevant_sources &&
+		    !strintmap_contains(relevant_sources, filename))
+			continue;
+
+		/*
+		 * If the basename is unique among remaining sources, then
+		 * src_index will equal 'i' and we can attempt to match it
+		 * to a unique basename in the destinations.  Otherwise,
+		 * use directory rename heuristics, if possible.
+		 */
+		base = get_basename(filename);
+		src_index = strintmap_get(sources, base);
+		assert(src_index == -1 || src_index == i);
+
+		if (strintmap_contains(dests, base)) {
+			struct diff_filespec *one, *two;
+
+			/* Find a matching destination, if possible */
+			dst_index = strintmap_get(dests, base);
+			if (src_index == -1 || dst_index == -1) {
+				src_index = i;
+				dst_index = idx_possible_rename(filename, info);
+			}
+			if (dst_index == -1)
+				continue;
+
+			/* Ignore this dest if already used in a rename */
+			if (rename_dst[dst_index].is_rename)
+				continue; /* already used previously */
+
+			one = rename_src[src_index].p->one;
+			two = rename_dst[dst_index].p->two;
+
+			/* Add the pairs */
+			diff_add_if_missing(options->repo, &to_fetch, two);
+			diff_add_if_missing(options->repo, &to_fetch, one);
+		}
+	}
+
+	promisor_remote_get_direct(options->repo, to_fetch.oid, to_fetch.nr);
+	oid_array_clear(&to_fetch);
+}
+
 static int find_basename_matches(struct diff_options *options,
 				 int minimum_score,
 				 struct dir_rename_info *info,
@@ -862,18 +933,18 @@
 	int i, renames = 0;
 	struct strintmap sources;
 	struct strintmap dests;
-
-	/*
-	 * The prefeteching stuff wants to know if it can skip prefetching
-	 * blobs that are unmodified...and will then do a little extra work
-	 * to verify that the oids are indeed different before prefetching.
-	 * Unmodified blobs are only relevant when doing copy detection;
-	 * when limiting to rename detection, diffcore_rename[_extended]()
-	 * will never be called with unmodified source paths fed to us, so
-	 * the extra work necessary to check if rename_src entries are
-	 * unmodified would be a small waste.
-	 */
-	int skip_unmodified = 0;
+	struct diff_populate_filespec_options dpf_options = {
+		.check_binary = 0,
+		.missing_object_cb = NULL,
+		.missing_object_data = NULL
+	};
+	struct basename_prefetch_options prefetch_options = {
+		.repo = options->repo,
+		.relevant_sources = relevant_sources,
+		.sources = &sources,
+		.dests = &dests,
+		.info = info
+	};
 
 	/*
 	 * Create maps of basename -> fullname(s) for remaining sources and
@@ -910,6 +981,11 @@
 			strintmap_set(&dests, base, i);
 	}
 
+	if (options->repo == the_repository && has_promisor_remote()) {
+		dpf_options.missing_object_cb = basename_prefetch;
+		dpf_options.missing_object_data = &prefetch_options;
+	}
+
 	/* Now look for basename matchups and do similarity estimation */
 	for (i = 0; i < rename_src_nr; ++i) {
 		char *filename = rename_src[i].p->one->path;
@@ -953,7 +1029,7 @@
 			one = rename_src[src_index].p->one;
 			two = rename_dst[dst_index].p->two;
 			score = estimate_similarity(options->repo, one, two,
-						    minimum_score, skip_unmodified);
+						    minimum_score, &dpf_options);
 
 			/* If sufficiently similar, record as rename pair */
 			if (score < minimum_score)
@@ -1021,7 +1097,7 @@
 	 * memory for the matrix anyway.
 	 */
 	if (rename_limit <= 0)
-		rename_limit = 32767;
+		return 0; /* treat as unlimited */
 	if (st_mult(num_destinations, num_sources)
 	    <= st_mult(rename_limit, rename_limit))
 		return 0;
@@ -1256,7 +1332,47 @@
 	rename_src_nr = new_num_src;
 }
 
+static void free_filespec_data(struct diff_filespec *spec)
+{
+	if (!--spec->count)
+		diff_free_filespec_data(spec);
+}
+
+static void pool_free_filespec(struct mem_pool *pool,
+			       struct diff_filespec *spec)
+{
+	if (!pool) {
+		free_filespec(spec);
+		return;
+	}
+
+	/*
+	 * Similar to free_filespec(), but only frees the data.  The spec
+	 * itself was allocated in the pool and should not be individually
+	 * freed.
+	 */
+	free_filespec_data(spec);
+}
+
+void pool_diff_free_filepair(struct mem_pool *pool,
+			     struct diff_filepair *p)
+{
+	if (!pool) {
+		diff_free_filepair(p);
+		return;
+	}
+
+	/*
+	 * Similar to diff_free_filepair() but only frees the data from the
+	 * filespecs; not the filespecs or the filepair which were
+	 * allocated from the pool.
+	 */
+	free_filespec_data(p->one);
+	free_filespec_data(p->two);
+}
+
 void diffcore_rename_extended(struct diff_options *options,
+			      struct mem_pool *pool,
 			      struct strintmap *relevant_sources,
 			      struct strintmap *dirs_removed,
 			      struct strmap *dir_rename_count,
@@ -1271,7 +1387,16 @@
 	int num_destinations, dst_cnt;
 	int num_sources, want_copies;
 	struct progress *progress = NULL;
+	struct mem_pool local_pool;
 	struct dir_rename_info info;
+	struct diff_populate_filespec_options dpf_options = {
+		.check_binary = 0,
+		.missing_object_cb = NULL,
+		.missing_object_data = NULL
+	};
+	struct inexact_prefetch_options prefetch_options = {
+		.repo = options->repo
+	};
 
 	trace2_region_enter("diff", "setup", options->repo);
 	info.setup = 0;
@@ -1331,11 +1456,18 @@
 		goto cleanup; /* nothing to do */
 
 	trace2_region_enter("diff", "exact renames", options->repo);
+	mem_pool_init(&local_pool, 32*1024);
 	/*
 	 * We really want to cull the candidates list early
 	 * with cheap tests in order to avoid doing deltas.
 	 */
-	rename_count = find_exact_renames(options);
+	rename_count = find_exact_renames(options, &local_pool);
+	/*
+	 * Discard local_pool immediately instead of at "cleanup:" in order
+	 * to reduce maximum memory usage; inexact rename detection uses up
+	 * a fair amount of memory, and mem_pools can too.
+	 */
+	mem_pool_discard(&local_pool, 0);
 	trace2_region_leave("diff", "exact renames", options->repo);
 
 	/* Did we only want exact renames? */
@@ -1433,6 +1565,13 @@
 				(uint64_t)num_destinations * (uint64_t)num_sources);
 	}
 
+	/* Finish setting up dpf_options */
+	prefetch_options.skip_unmodified = skip_unmodified;
+	if (options->repo == the_repository && has_promisor_remote()) {
+		dpf_options.missing_object_cb = inexact_prefetch;
+		dpf_options.missing_object_data = &prefetch_options;
+	}
+
 	CALLOC_ARRAY(mx, st_mult(NUM_CANDIDATE_PER_DST, num_destinations));
 	for (dst_cnt = i = 0; i < rename_dst_nr; i++) {
 		struct diff_filespec *two = rename_dst[i].p->two;
@@ -1458,7 +1597,7 @@
 			this_src.score = estimate_similarity(options->repo,
 							     one, two,
 							     minimum_score,
-							     skip_unmodified);
+							     &dpf_options);
 			this_src.name_score = basename_same(one, two);
 			this_src.dst = i;
 			this_src.src = j;
@@ -1543,11 +1682,11 @@
 			/* all the usual ones need to be kept */
 			diff_q(&outq, p);
 		else
-			/* no need to keep unmodified pairs; FIXME: remove earlier? */
+			/* no need to keep unmodified pairs */
 			pair_to_free = p;
 
 		if (pair_to_free)
-			diff_free_filepair(pair_to_free);
+			pool_diff_free_filepair(pool, pair_to_free);
 	}
 	diff_debug_queue("done copying original", &outq);
 
@@ -1557,7 +1696,7 @@
 
 	for (i = 0; i < rename_dst_nr; i++)
 		if (rename_dst[i].filespec_to_free)
-			free_filespec(rename_dst[i].filespec_to_free);
+			pool_free_filespec(pool, rename_dst[i].filespec_to_free);
 
 	cleanup_dir_rename_info(&info, dirs_removed, dir_rename_count != NULL);
 	FREE_AND_NULL(rename_dst);
@@ -1574,5 +1713,5 @@
 
 void diffcore_rename(struct diff_options *options)
 {
-	diffcore_rename_extended(options, NULL, NULL, NULL, NULL);
+	diffcore_rename_extended(options, NULL, NULL, NULL, NULL, NULL);
 }
diff --git a/diffcore.h b/diffcore.h
index 533b30e..badc226 100644
--- a/diffcore.h
+++ b/diffcore.h
@@ -127,6 +127,8 @@
 #define DIFF_PAIR_MODE_CHANGED(p) ((p)->one->mode != (p)->two->mode)
 
 void diff_free_filepair(struct diff_filepair *);
+void pool_diff_free_filepair(struct mem_pool *pool,
+			     struct diff_filepair *p);
 
 int diff_unmodified_pair(struct diff_filepair *);
 
@@ -179,6 +181,7 @@
 void diffcore_break(struct repository *, int);
 void diffcore_rename(struct diff_options *);
 void diffcore_rename_extended(struct diff_options *options,
+			      struct mem_pool *pool,
 			      struct strintmap *relevant_sources,
 			      struct strintmap *dirs_removed,
 			      struct strmap *dir_rename_count,
diff --git a/dir.c b/dir.c
index 20b942d..03c4d21 100644
--- a/dir.c
+++ b/dir.c
@@ -53,12 +53,6 @@
 	int check_only, int stop_at_first_file, const struct pathspec *pathspec);
 static int resolve_dtype(int dtype, struct index_state *istate,
 			 const char *path, int len);
-
-void dir_init(struct dir_struct *dir)
-{
-	memset(dir, 0, sizeof(*dir));
-}
-
 struct dirent *readdir_skip_dot_and_dotdot(DIR *dirp)
 {
 	struct dirent *e;
@@ -788,9 +782,7 @@
 		translated->pattern = truncated;
 		translated->patternlen = given->patternlen - 2;
 		hashmap_entry_init(&translated->ent,
-				   ignore_case ?
-				   strihash(translated->pattern) :
-				   strhash(translated->pattern));
+				   fspathhash(translated->pattern));
 
 		if (!hashmap_get_entry(&pl->recursive_hashmap,
 				       translated, ent, NULL)) {
@@ -819,9 +811,7 @@
 	translated->pattern = dup_and_filter_pattern(given->pattern);
 	translated->patternlen = given->patternlen;
 	hashmap_entry_init(&translated->ent,
-			   ignore_case ?
-			   strihash(translated->pattern) :
-			   strhash(translated->pattern));
+			   fspathhash(translated->pattern));
 
 	hashmap_add(&pl->recursive_hashmap, &translated->ent);
 
@@ -851,10 +841,7 @@
 	/* Check straight mapping */
 	p.pattern = pattern->buf;
 	p.patternlen = pattern->len;
-	hashmap_entry_init(&p.ent,
-			   ignore_case ?
-			   strihash(p.pattern) :
-			   strhash(p.pattern));
+	hashmap_entry_init(&p.ent, fspathhash(p.pattern));
 	return !!hashmap_get_entry(map, &p, ent, NULL);
 }
 
@@ -1386,7 +1373,7 @@
 	struct path_pattern *pattern;
 	struct strbuf parent_pathname = STRBUF_INIT;
 	int result = NOT_MATCHED;
-	const char *slash_pos;
+	size_t slash_pos;
 
 	if (!pl->use_cone_patterns) {
 		pattern = last_matching_pattern_from_list(pathname, pathlen, basename,
@@ -1407,21 +1394,35 @@
 	strbuf_addch(&parent_pathname, '/');
 	strbuf_add(&parent_pathname, pathname, pathlen);
 
+	/*
+	 * Directory entries are matched if and only if a file
+	 * contained immediately within them is matched. For the
+	 * case of a directory entry, modify the path to create
+	 * a fake filename within this directory, allowing us to
+	 * use the file-base matching logic in an equivalent way.
+	 */
+	if (parent_pathname.len > 0 &&
+	    parent_pathname.buf[parent_pathname.len - 1] == '/') {
+		slash_pos = parent_pathname.len - 1;
+		strbuf_add(&parent_pathname, "-", 1);
+	} else {
+		const char *slash_ptr = strrchr(parent_pathname.buf, '/');
+		slash_pos = slash_ptr ? slash_ptr - parent_pathname.buf : 0;
+	}
+
 	if (hashmap_contains_path(&pl->recursive_hashmap,
 				  &parent_pathname)) {
 		result = MATCHED_RECURSIVE;
 		goto done;
 	}
 
-	slash_pos = strrchr(parent_pathname.buf, '/');
-
-	if (slash_pos == parent_pathname.buf) {
+	if (!slash_pos) {
 		/* include every file in root */
 		result = MATCHED;
 		goto done;
 	}
 
-	strbuf_setlen(&parent_pathname, slash_pos - parent_pathname.buf);
+	strbuf_setlen(&parent_pathname, slash_pos);
 
 	if (hashmap_contains_path(&pl->parent_hashmap, &parent_pathname)) {
 		result = MATCHED;
@@ -3115,6 +3116,7 @@
 	struct exclude_list_group *group;
 	struct pattern_list *pl;
 	struct exclude_stack *stk;
+	struct dir_struct new = DIR_INIT;
 
 	for (i = EXC_CMDL; i <= EXC_FILE; i++) {
 		group = &dir->exclude_list_group[i];
@@ -3142,7 +3144,7 @@
 	}
 	strbuf_release(&dir->basebuf);
 
-	dir_init(dir);
+	memcpy(dir, &new, sizeof(*dir));
 }
 
 struct ondisk_untracked_cache {
diff --git a/dir.h b/dir.h
index 2af7bcd..b3e1a54a 100644
--- a/dir.h
+++ b/dir.h
@@ -342,6 +342,8 @@
 	unsigned visited_directories;
 };
 
+#define DIR_INIT { 0 }
+
 struct dirent *readdir_skip_dot_and_dotdot(DIR *dirp);
 
 /*Count the number of slashes for string s*/
@@ -367,8 +369,6 @@
 int report_path_error(const char *ps_matched, const struct pathspec *pathspec);
 int within_depth(const char *name, int namelen, int depth, int max_depth);
 
-void dir_init(struct dir_struct *dir);
-
 int fill_directory(struct dir_struct *dir,
 		   struct index_state *istate,
 		   const struct pathspec *pathspec);
diff --git a/editor.c b/editor.c
index 6303ae0..fdd3eea 100644
--- a/editor.c
+++ b/editor.c
@@ -58,7 +58,7 @@
 		const char *args[] = { editor, NULL, NULL };
 		struct child_process p = CHILD_PROCESS_INIT;
 		int ret, sig;
-		int print_waiting_for_editor = advice_waiting_for_editor && isatty(2);
+		int print_waiting_for_editor = advice_enabled(ADVICE_WAITING_FOR_EDITOR) && isatty(2);
 
 		if (print_waiting_for_editor) {
 			/*
diff --git a/entry.c b/entry.c
index 711ee06..044e8ec 100644
--- a/entry.c
+++ b/entry.c
@@ -143,8 +143,8 @@
 	if (!state->delayed_checkout) {
 		state->delayed_checkout = xmalloc(sizeof(*state->delayed_checkout));
 		state->delayed_checkout->state = CE_CAN_DELAY;
-		string_list_init(&state->delayed_checkout->filters, 0);
-		string_list_init(&state->delayed_checkout->paths, 0);
+		string_list_init_nodup(&state->delayed_checkout->filters);
+		string_list_init_nodup(&state->delayed_checkout->paths);
 	}
 }
 
@@ -159,7 +159,8 @@
 	return !available;
 }
 
-int finish_delayed_checkout(struct checkout *state, int *nr_checkouts)
+int finish_delayed_checkout(struct checkout *state, int *nr_checkouts,
+			    int show_progress)
 {
 	int errs = 0;
 	unsigned delayed_object_count;
@@ -173,7 +174,9 @@
 
 	dco->state = CE_RETRY;
 	delayed_object_count = dco->paths.nr;
-	progress = start_delayed_progress(_("Filtering content"), delayed_object_count);
+	progress = show_progress
+		? start_delayed_progress(_("Filtering content"), delayed_object_count)
+		: NULL;
 	while (dco->filters.nr > 0) {
 		for_each_string_list_item(filter, &dco->filters) {
 			struct string_list available_paths = STRING_LIST_INIT_NODUP;
diff --git a/entry.h b/entry.h
index b8c0e17..7c889e5 100644
--- a/entry.h
+++ b/entry.h
@@ -43,7 +43,8 @@
 }
 
 void enable_delayed_checkout(struct checkout *state);
-int finish_delayed_checkout(struct checkout *state, int *nr_checkouts);
+int finish_delayed_checkout(struct checkout *state, int *nr_checkouts,
+			    int show_progress);
 
 /*
  * Unlink the last component and schedule the leading directories for
diff --git a/environment.c b/environment.c
index 2f27008..d6b22ed 100644
--- a/environment.c
+++ b/environment.c
@@ -253,21 +253,20 @@
  */
 void set_git_work_tree(const char *new_work_tree)
 {
-	struct strbuf realpath = STRBUF_INIT;
-
 	if (git_work_tree_initialized) {
+		struct strbuf realpath = STRBUF_INIT;
+
 		strbuf_realpath(&realpath, new_work_tree, 1);
 		new_work_tree = realpath.buf;
 		if (strcmp(new_work_tree, the_repository->worktree))
 			die("internal error: work tree has already been set\n"
 			    "Current worktree: %s\nNew worktree: %s",
 			    the_repository->worktree, new_work_tree);
+		strbuf_release(&realpath);
 		return;
 	}
 	git_work_tree_initialized = 1;
 	repo_set_worktree(the_repository, new_work_tree);
-
-	strbuf_release(&realpath);
 }
 
 const char *get_git_work_tree(void)
diff --git a/fetch-pack.c b/fetch-pack.c
index b0c7be7..0bf7ed7 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -137,8 +137,14 @@
 			break;
 		}
 	}
-	if (type == OBJ_COMMIT)
-		return (struct commit *) parse_object(the_repository, oid);
+
+	if (type == OBJ_COMMIT) {
+		struct commit *commit = lookup_commit(the_repository, oid);
+		if (!commit || repo_parse_commit(the_repository, commit))
+			return NULL;
+		return commit;
+	}
+
 	return NULL;
 }
 
diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
index 0f66818..b969dc6 100644
--- a/fmt-merge-msg.c
+++ b/fmt-merge-msg.c
@@ -108,6 +108,7 @@
 	struct origin_data *origin_data;
 	char *src;
 	const char *origin, *tag_name;
+	char *to_free = NULL;
 	struct src_data *src_data;
 	struct string_list_item *item;
 	int pulling_head = 0;
@@ -183,12 +184,13 @@
 	if (!strcmp(".", src) || !strcmp(src, origin)) {
 		int len = strlen(origin);
 		if (origin[0] == '\'' && origin[len - 1] == '\'')
-			origin = xmemdupz(origin + 1, len - 2);
+			origin = to_free = xmemdupz(origin + 1, len - 2);
 	} else
-		origin = xstrfmt("%s of %s", origin, src);
+		origin = to_free = xstrfmt("%s of %s", origin, src);
 	if (strcmp(".", src))
 		origin_data->is_local_branch = 0;
 	string_list_append(&origins, origin)->util = origin_data;
+	free(to_free);
 	return 0;
 }
 
diff --git a/gettext.c b/gettext.c
index af2413b..bb5ba1f 100644
--- a/gettext.c
+++ b/gettext.c
@@ -66,6 +66,7 @@
 }
 
 #ifndef NO_GETTEXT
+__attribute__((format (printf, 1, 2)))
 static int test_vsnprintf(const char *fmt, ...)
 {
 	char buf[26];
diff --git a/git-compat-util.h b/git-compat-util.h
index fb6e9af..b466053 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -876,6 +876,7 @@
 void *xrealloc(void *ptr, size_t size);
 void *xcalloc(size_t nmemb, size_t size);
 void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
+const char *mmap_os_err(void);
 void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset);
 int xopen(const char *path, int flags, ...);
 ssize_t xread(int fd, void *buf, size_t len);
@@ -1366,7 +1367,7 @@
 	(type *)container_of_or_null_offset(ptr, offsetof(type, member))
 
 /*
- * like offsetof(), but takes a pointer to a a variable of type which
+ * like offsetof(), but takes a pointer to a variable of type which
  * contains @member, instead of a specified type.
  * @ptr is subject to multiple evaluation since we can't rely on __typeof__
  * everywhere.
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index f6f3fc1..ed035f3 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -2149,7 +2149,7 @@
                    ( $meta2->{revision} or "workingcopy" ));
 
         # TODO: Use --label instead of -L because -L is no longer
-        #  documented and may go away someday.  Not sure if there there are
+        #  documented and may go away someday.  Not sure if there are
         #  versions that only support -L, which would make this change risky?
         #  http://osdir.com/ml/bug-gnu-utils-gnu/2010-12/msg00060.html
         #    ("man diff" should actually document the best migration strategy,
diff --git a/git-p4.py b/git-p4.py
index d34a194..2b45002 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -1977,8 +1977,11 @@
                 newdiff += "+%s\n" % os.readlink(newFile)
             else:
                 f = open(newFile, "r")
-                for line in f.readlines():
-                    newdiff += "+" + line
+                try:
+                    for line in f.readlines():
+                        newdiff += "+" + line
+                except UnicodeDecodeError:
+                    pass # Found non-text data and skip, since diff description should only include text
                 f.close()
 
         return (diff + newdiff).replace('\r\n', '\n')
diff --git a/git-send-email.perl b/git-send-email.perl
index 7ba0b34..fd79849 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -18,21 +18,11 @@
 
 use 5.008;
 use strict;
-use warnings;
-use POSIX qw/strftime/;
-use Term::ReadLine;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
 use Getopt::Long;
-use Text::ParseWords;
-use Term::ANSIColor;
-use File::Temp qw/ tempdir tempfile /;
-use File::Spec::Functions qw(catdir catfile);
 use Git::LoadCPAN::Error qw(:try);
-use Cwd qw(abs_path cwd);
 use Git;
 use Git::I18N;
-use Net::Domain ();
-use Net::SMTP ();
-use Git::LoadCPAN::Mail::Address;
 
 Getopt::Long::Configure qw/ pass_through /;
 
@@ -167,7 +157,6 @@
 		       );
 }
 
-my $have_email_valid = eval { require Email::Valid; 1 };
 my $smtp;
 my $auth;
 my $num_sent = 0;
@@ -193,14 +182,6 @@
 
 my $repo = eval { Git->repository() };
 my @repo = $repo ? ($repo) : ();
-my $term = eval {
-	$ENV{"GIT_SEND_EMAIL_NOTTY"}
-		? new Term::ReadLine 'git-send-email', \*STDIN, \*STDOUT
-		: new Term::ReadLine 'git-send-email';
-};
-if ($@) {
-	$term = new FakeTerm "$@: going non-interactive";
-}
 
 # Behavior modification variables
 my ($quiet, $dry_run) = (0, 0);
@@ -289,6 +270,7 @@
 );
 
 my %config_settings = (
+    "smtpencryption" => \$smtp_encryption,
     "smtpserver" => \$smtp_server,
     "smtpserverport" => \$smtp_server_port,
     "smtpserveroption" => \@smtp_server_options,
@@ -321,9 +303,9 @@
 
 # Handle Uncouth Termination
 sub signal_handler {
-
 	# Make text normal
-	print color("reset"), "\n";
+	require Term::ANSIColor;
+	print Term::ANSIColor::color("reset"), "\n";
 
 	# SMTP password masked
 	system "stty echo";
@@ -349,11 +331,17 @@
 
 # Read our sendemail.* config
 sub read_config {
-	my ($configured, $prefix) = @_;
+	my ($known_keys, $configured, $prefix) = @_;
 
 	foreach my $setting (keys %config_bool_settings) {
 		my $target = $config_bool_settings{$setting};
-		my $v = Git::config_bool(@repo, "$prefix.$setting");
+		my $key = "$prefix.$setting";
+		next unless exists $known_keys->{$key};
+		my $v = (@{$known_keys->{$key}} == 1 &&
+			 (defined $known_keys->{$key}->[0] &&
+			  $known_keys->{$key}->[0] =~ /^(?:true|false)$/s))
+			? $known_keys->{$key}->[0] eq 'true'
+			: Git::config_bool(@repo, $key);
 		next unless defined $v;
 		next if $configured->{$setting}++;
 		$$target = $v;
@@ -361,8 +349,10 @@
 
 	foreach my $setting (keys %config_path_settings) {
 		my $target = $config_path_settings{$setting};
+		my $key = "$prefix.$setting";
+		next unless exists $known_keys->{$key};
 		if (ref($target) eq "ARRAY") {
-			my @values = Git::config_path(@repo, "$prefix.$setting");
+			my @values = Git::config_path(@repo, $key);
 			next unless @values;
 			next if $configured->{$setting}++;
 			@$target = @values;
@@ -377,36 +367,64 @@
 
 	foreach my $setting (keys %config_settings) {
 		my $target = $config_settings{$setting};
+		my $key = "$prefix.$setting";
+		next unless exists $known_keys->{$key};
 		if (ref($target) eq "ARRAY") {
-			my @values = Git::config(@repo, "$prefix.$setting");
-			next unless @values;
+			my @values = @{$known_keys->{$key}};
+			@values = grep { defined } @values;
 			next if $configured->{$setting}++;
 			@$target = @values;
 		}
 		else {
-			my $v = Git::config(@repo, "$prefix.$setting");
+			my $v = $known_keys->{$key}->[0];
 			next unless defined $v;
 			next if $configured->{$setting}++;
 			$$target = $v;
 		}
 	}
+}
 
-	if (!defined $smtp_encryption) {
-		my $setting = "$prefix.smtpencryption";
-		my $enc = Git::config(@repo, $setting);
-		return unless defined $enc;
-		return if $configured->{$setting}++;
-		if (defined $enc) {
-			$smtp_encryption = $enc;
-		} elsif (Git::config_bool(@repo, "$prefix.smtpssl")) {
-			$smtp_encryption = 'ssl';
-		}
+sub config_regexp {
+	my ($regex) = @_;
+	my @ret;
+	eval {
+		my $ret = Git::command(
+			'config',
+			'--null',
+			'--get-regexp',
+			$regex,
+		);
+		@ret = map {
+			# We must always return ($k, $v) here, since
+			# empty config values will be just "key\0",
+			# not "key\nvalue\0".
+			my ($k, $v) = split /\n/, $_, 2;
+			($k, $v);
+		} split /\0/, $ret;
+		1;
+	} or do {
+		# If we have no keys we're OK, otherwise re-throw
+		die $@ if $@->value != 1;
+	};
+	return @ret;
+}
+
+# Save ourselves a lot of work of shelling out to 'git config' (it
+# parses 'bool' etc.) by only doing so for config keys that exist.
+my %known_config_keys;
+{
+	my @kv = config_regexp("^sende?mail[.]");
+	while (my ($k, $v) = splice @kv, 0, 2) {
+		push @{$known_config_keys{$k}} => $v;
 	}
 }
 
 # sendemail.identity yields to --identity. We must parse this
 # special-case first before the rest of the config is read.
-$identity = Git::config(@repo, "sendemail.identity");
+{
+	my $key = "sendemail.identity";
+	$identity = Git::config(@repo, $key) if exists $known_config_keys{$key};
+}
 my $rc = GetOptions(
 	"identity=s" => \$identity,
 	"no-identity" => \$no_identity,
@@ -417,8 +435,8 @@
 # Now we know enough to read the config
 {
     my %configured;
-    read_config(\%configured, "sendemail.$identity") if defined $identity;
-    read_config(\%configured, "sendemail");
+    read_config(\%known_config_keys, \%configured, "sendemail.$identity") if defined $identity;
+    read_config(\%known_config_keys, \%configured, "sendemail");
 }
 
 # Begin by accumulating all the variables (defined above), that we will end up
@@ -503,7 +521,7 @@
     usage();
 }
 
-if ($forbid_sendmail_variables && (scalar Git::config_regexp("^sendmail[.]")) != 0) {
+if ($forbid_sendmail_variables && grep { /^sendmail/s } keys %known_config_keys) {
 	die __("fatal: found configuration options for 'sendmail'\n" .
 		"git-send-email is configured with the sendemail.* options - note the 'e'.\n" .
 		"Set sendemail.forbidSendmailVariables to false to disable this check.\n");
@@ -568,15 +586,27 @@
 }
 
 my ($repoauthor, $repocommitter);
-($repoauthor) = Git::ident_person(@repo, 'author');
-($repocommitter) = Git::ident_person(@repo, 'committer');
+{
+	my %cache;
+	my ($author, $committer);
+	my $common = sub {
+		my ($what) = @_;
+		return $cache{$what} if exists $cache{$what};
+		($cache{$what}) = Git::ident_person(@repo, $what);
+		return $cache{$what};
+	};
+	$repoauthor = sub { $common->('author') };
+	$repocommitter = sub { $common->('committer') };
+}
 
 sub parse_address_line {
+	require Git::LoadCPAN::Mail::Address;
 	return map { $_->format } Mail::Address->parse($_[0]);
 }
 
 sub split_addrs {
-	return quotewords('\s*,\s*', 1, @_);
+	require Text::ParseWords;
+	return Text::ParseWords::quotewords('\s*,\s*', 1, @_);
 }
 
 my %aliases;
@@ -625,10 +655,11 @@
 			s/\\"/"/g foreach @addr;
 			$aliases{$alias} = \@addr
 		}}},
-	mailrc => sub { my $fh = shift; while (<$fh>) {
+	mailrc => sub {	my $fh = shift; while (<$fh>) {
 		if (/^alias\s+(\S+)\s+(.*?)\s*$/) {
+			require Text::ParseWords;
 			# spaces delimit multiple addresses
-			$aliases{$1} = [ quotewords('\s+', 0, $2) ];
+			$aliases{$1} = [ Text::ParseWords::quotewords('\s+', 0, $2) ];
 		}}},
 	pine => sub { my $fh = shift; my $f='\t[^\t]*';
 	        for (my $x = ''; defined($x); $x = $_) {
@@ -676,7 +707,7 @@
 		if (defined($format_patch)) {
 			return $format_patch;
 		}
-		die sprintf(__ <<EOF, $f, $f);
+		die sprintf(__(<<EOF), $f, $f);
 File '%s' exists but it could also be the range of commits
 to produce patches for.  Please disambiguate by...
 
@@ -700,7 +731,8 @@
 		opendir my $dh, $f
 			or die sprintf(__("Failed to opendir %s: %s"), $f, $!);
 
-		push @files, grep { -f $_ } map { catfile($f, $_) }
+		require File::Spec;
+		push @files, grep { -f $_ } map { File::Spec->catfile($f, $_) }
 				sort readdir $dh;
 		closedir $dh;
 	} elsif ((-f $f or -p $f) and !is_format_patch_arg($f)) {
@@ -713,7 +745,8 @@
 if (@rev_list_opts) {
 	die __("Cannot run git format-patch from outside a repository\n")
 		unless $repo;
-	push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
+	require File::Temp;
+	push @files, $repo->command('format-patch', '-o', File::Temp::tempdir(CLEANUP => 1), @rev_list_opts);
 }
 
 @files = handle_backup_files(@files);
@@ -750,19 +783,20 @@
 if ($compose) {
 	# Note that this does not need to be secure, but we will make a small
 	# effort to have it be unique
+	require File::Temp;
 	$compose_filename = ($repo ?
-		tempfile(".gitsendemail.msg.XXXXXX", DIR => $repo->repo_path()) :
-		tempfile(".gitsendemail.msg.XXXXXX", DIR => "."))[1];
+		File::Temp::tempfile(".gitsendemail.msg.XXXXXX", DIR => $repo->repo_path()) :
+		File::Temp::tempfile(".gitsendemail.msg.XXXXXX", DIR => "."))[1];
 	open my $c, ">", $compose_filename
 		or die sprintf(__("Failed to open for writing %s: %s"), $compose_filename, $!);
 
 
-	my $tpl_sender = $sender || $repoauthor || $repocommitter || '';
+	my $tpl_sender = $sender || $repoauthor->() || $repocommitter->() || '';
 	my $tpl_subject = $initial_subject || '';
 	my $tpl_in_reply_to = $initial_in_reply_to || '';
 	my $tpl_reply_to = $reply_to || '';
 
-	print $c <<EOT1, Git::prefix_lines("GIT: ", __ <<EOT2), <<EOT3;
+	print $c <<EOT1, Git::prefix_lines("GIT: ", __(<<EOT2)), <<EOT3;
 From $tpl_sender # This line is ignored.
 EOT1
 Lines beginning in "GIT:" will be removed.
@@ -859,6 +893,19 @@
 	do_edit(@files);
 }
 
+sub term {
+	my $term = eval {
+		require Term::ReadLine;
+		$ENV{"GIT_SEND_EMAIL_NOTTY"}
+			? Term::ReadLine->new('git-send-email', \*STDIN, \*STDOUT)
+			: Term::ReadLine->new('git-send-email');
+	};
+	if ($@) {
+		$term = FakeTerm->new("$@: going non-interactive");
+	}
+	return $term;
+}
+
 sub ask {
 	my ($prompt, %arg) = @_;
 	my $valid_re = $arg{valid_re};
@@ -866,6 +913,7 @@
 	my $confirm_only = $arg{confirm_only};
 	my $resp;
 	my $i = 0;
+	my $term = term();
 	return defined $default ? $default : undef
 		unless defined $term->IN and defined fileno($term->IN) and
 		       defined $term->OUT and defined fileno($term->OUT);
@@ -963,7 +1011,7 @@
 	$sender =~ s/^\s+|\s+$//g;
 	($sender) = expand_aliases($sender);
 } else {
-	$sender = $repoauthor || $repocommitter || '';
+	$sender = $repoauthor->() || $repocommitter->() || '';
 }
 
 # $sender could be an already sanitized address
@@ -1049,6 +1097,7 @@
 	return $address if ($address =~ /^($local_part_regexp)$/);
 
 	$address =~ s/^\s*<(.*)>\s*$/$1/;
+	my $have_email_valid = eval { require Email::Valid; 1 };
 	if ($have_email_valid) {
 		return scalar Email::Valid->address($address);
 	}
@@ -1108,14 +1157,15 @@
 sub make_message_id {
 	my $uniq;
 	if (!defined $message_id_stamp) {
-		$message_id_stamp = strftime("%Y%m%d%H%M%S.$$", gmtime(time));
+		require POSIX;
+		$message_id_stamp = POSIX::strftime("%Y%m%d%H%M%S.$$", gmtime(time));
 		$message_id_serial = 0;
 	}
 	$message_id_serial++;
 	$uniq = "$message_id_stamp-$message_id_serial";
 
 	my $du_part;
-	for ($sender, $repocommitter, $repoauthor) {
+	for ($sender, $repocommitter->(), $repoauthor->()) {
 		$du_part = extract_valid_address(sanitize_address($_));
 		last if (defined $du_part and $du_part ne '');
 	}
@@ -1278,6 +1328,7 @@
 sub maildomain_net {
 	my $maildomain;
 
+	require Net::Domain;
 	my $domain = Net::Domain::domainname();
 	$maildomain = $domain if valid_fqdn($domain);
 
@@ -1288,6 +1339,7 @@
 	my $maildomain;
 
 	for my $host (qw(mailhost localhost)) {
+		require Net::SMTP;
 		my $smtp = Net::SMTP->new($host);
 		if (defined $smtp) {
 			my $domain = $smtp->domain;
@@ -1645,7 +1697,6 @@
 
 $in_reply_to = $initial_in_reply_to;
 $references = $initial_in_reply_to || '';
-$subject = $initial_subject;
 $message_num = 0;
 
 # Prepares the email, prompts the user, sends it out
@@ -1668,6 +1719,7 @@
 	@xh = ();
 	my $input_format = undef;
 	my @header = ();
+	$subject = $initial_subject;
 	$message = "";
 	$message_num++;
 	# First unfold multiline header fields
@@ -1874,15 +1926,23 @@
 	}
 
 	# set up for the next message
-	if ($thread && $message_was_sent &&
-		($chain_reply_to || !defined $in_reply_to || length($in_reply_to) == 0 ||
-		$message_num == 1)) {
-		$in_reply_to = $message_id;
-		if (length $references > 0) {
-			$references .= "\n $message_id";
-		} else {
-			$references = "$message_id";
+	if ($thread) {
+		if ($message_was_sent &&
+		  ($chain_reply_to || !defined $in_reply_to || length($in_reply_to) == 0 ||
+		  $message_num == 1)) {
+			$in_reply_to = $message_id;
+			if (length $references > 0) {
+				$references .= "\n $message_id";
+			} else {
+				$references = "$message_id";
+			}
 		}
+	} elsif (!defined $initial_in_reply_to) {
+		# --thread and --in-reply-to manage the "In-Reply-To" header and by
+		# extension the "References" header. If these commands are not used, reset
+		# the header values to their defaults.
+		$in_reply_to = undef;
+		$references = '';
 	}
 	$message_id = undef;
 	$num_sent++;
@@ -1980,13 +2040,15 @@
 
 	if ($repo) {
 		my $hooks_path = $repo->command_oneline('rev-parse', '--git-path', 'hooks');
-		my $validate_hook = catfile($hooks_path,
+		require File::Spec;
+		my $validate_hook = File::Spec->catfile($hooks_path,
 					    'sendemail-validate');
 		my $hook_error;
 		if (-x $validate_hook) {
-			my $target = abs_path($fn);
+			require Cwd;
+			my $target = Cwd::abs_path($fn);
 			# The hook needs a correct cwd and GIT_DIR.
-			my $cwd_save = cwd();
+			my $cwd_save = Cwd::getcwd();
 			chdir($repo->wc_path() or $repo->repo_path())
 				or die("chdir: $!");
 			local $ENV{"GIT_DIR"} = $repo->repo_path();
diff --git a/git-submodule.sh b/git-submodule.sh
index 4678378..dbd2ec2 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -147,7 +147,7 @@
 
 	if ! git submodule--helper config --check-writeable >/dev/null 2>&1
 	then
-		 die "$(eval_gettext "please make sure that the .gitmodules file is in the working tree")"
+		 die "fatal: $(eval_gettext "please make sure that the .gitmodules file is in the working tree")"
 	fi
 
 	if test -n "$reference_path"
@@ -176,7 +176,7 @@
 	case "$repo" in
 	./*|../*)
 		test -z "$wt_prefix" ||
-		die "$(gettext "Relative path can only be used from the toplevel of the working tree")"
+		die "fatal: $(gettext "Relative path can only be used from the toplevel of the working tree")"
 
 		# dereference source url relative to parent's url
 		realrepo=$(git submodule--helper resolve-relative-url "$repo") || exit
@@ -186,7 +186,7 @@
 		realrepo=$repo
 		;;
 	*)
-		die "$(eval_gettext "repo URL: '\$repo' must be absolute or begin with ./|../")"
+		die "fatal: $(eval_gettext "repo URL: '\$repo' must be absolute or begin with ./|../")"
 	;;
 	esac
 
@@ -205,17 +205,17 @@
 	if test -z "$force"
 	then
 		git ls-files --error-unmatch "$sm_path" > /dev/null 2>&1 &&
-		die "$(eval_gettext "'\$sm_path' already exists in the index")"
+		die "fatal: $(eval_gettext "'\$sm_path' already exists in the index")"
 	else
 		git ls-files -s "$sm_path" | sane_grep -v "^160000" > /dev/null 2>&1 &&
-		die "$(eval_gettext "'\$sm_path' already exists in the index and is not a submodule")"
+		die "fatal: $(eval_gettext "'\$sm_path' already exists in the index and is not a submodule")"
 	fi
 
 	if test -d "$sm_path" &&
 		test -z $(git -C "$sm_path" rev-parse --show-cdup 2>/dev/null)
 	then
 	    git -C "$sm_path" rev-parse --verify -q HEAD >/dev/null ||
-	    die "$(eval_gettext "'\$sm_path' does not have a commit checked out")"
+	    die "fatal: $(eval_gettext "'\$sm_path' does not have a commit checked out")"
 	fi
 
 	if test -z "$force"
@@ -238,50 +238,14 @@
 
 	if ! git submodule--helper check-name "$sm_name"
 	then
-		die "$(eval_gettext "'$sm_name' is not a valid submodule name")"
+		die "fatal: $(eval_gettext "'$sm_name' is not a valid submodule name")"
 	fi
 
-	# perhaps the path exists and is already a git repo, else clone it
-	if test -e "$sm_path"
-	then
-		if test -d "$sm_path"/.git || test -f "$sm_path"/.git
-		then
-			eval_gettextln "Adding existing repo at '\$sm_path' to the index"
-		else
-			die "$(eval_gettext "'\$sm_path' already exists and is not a valid git repo")"
-		fi
-
-	else
-		if test -d ".git/modules/$sm_name"
-		then
-			if test -z "$force"
-			then
-				eval_gettextln >&2 "A git directory for '\$sm_name' is found locally with remote(s):"
-				GIT_DIR=".git/modules/$sm_name" GIT_WORK_TREE=. git remote -v | grep '(fetch)' | sed -e s,^,"  ", -e s,' (fetch)',, >&2
-				die "$(eval_gettextln "\
-If you want to reuse this local git directory instead of cloning again from
-  \$realrepo
-use the '--force' option. If the local git directory is not the correct repo
-or you are unsure what this means choose another name with the '--name' option.")"
-			else
-				eval_gettextln "Reactivating local git directory for submodule '\$sm_name'."
-			fi
-		fi
-		git submodule--helper clone ${GIT_QUIET:+--quiet} ${progress:+"--progress"} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" ${reference:+"$reference"} ${dissociate:+"--dissociate"} ${depth:+"$depth"} || exit
-		(
-			sanitize_submodule_env
-			cd "$sm_path" &&
-			# ash fails to wordsplit ${branch:+-b "$branch"...}
-			case "$branch" in
-			'') git checkout -f -q ;;
-			?*) git checkout -f -q -B "$branch" "origin/$branch" ;;
-			esac
-		) || die "$(eval_gettext "Unable to checkout submodule '\$sm_path'")"
-	fi
+	git submodule--helper add-clone ${GIT_QUIET:+--quiet} ${force:+"--force"} ${progress:+"--progress"} ${branch:+--branch "$branch"} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" ${reference:+"$reference"} ${dissociate:+"--dissociate"} ${depth:+"$depth"} || exit
 	git config submodule."$sm_name".url "$realrepo"
 
 	git add --no-warn-embedded-repo $force "$sm_path" ||
-	die "$(eval_gettext "Failed to add submodule '\$sm_path'")"
+	die "fatal: $(eval_gettext "Failed to add submodule '\$sm_path'")"
 
 	git submodule--helper config submodule."$sm_name".path "$sm_path" &&
 	git submodule--helper config submodule."$sm_name".url "$repo" &&
@@ -290,7 +254,7 @@
 		git submodule--helper config submodule."$sm_name".branch "$branch"
 	fi &&
 	git add --force .gitmodules ||
-	die "$(eval_gettext "Failed to register submodule '\$sm_path'")"
+	die "fatal: $(eval_gettext "Failed to register submodule '\$sm_path'")"
 
 	# NEEDSWORK: In a multi-working-tree world, this needs to be
 	# set in the per-worktree config.
@@ -335,7 +299,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper foreach ${GIT_QUIET:+--quiet} ${recursive:+--recursive} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper foreach ${GIT_QUIET:+--quiet} ${recursive:+--recursive} -- "$@"
 }
 
 #
@@ -402,7 +366,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper deinit ${GIT_QUIET:+--quiet} ${prefix:+--prefix "$prefix"} ${force:+--force} ${deinit_all:+--all} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper deinit ${GIT_QUIET:+--quiet} ${force:+--force} ${deinit_all:+--all} -- "$@"
 }
 
 is_tip_reachable () (
@@ -565,7 +529,7 @@
 		else
 			subsha1=$(sanitize_submodule_env; cd "$sm_path" &&
 				git rev-parse --verify HEAD) ||
-			die "$(eval_gettext "Unable to find current revision in submodule path '\$displaypath'")"
+			die "fatal: $(eval_gettext "Unable to find current revision in submodule path '\$displaypath'")"
 		fi
 
 		if test -n "$remote"
@@ -575,12 +539,12 @@
 			then
 				# Fetch remote before determining tracking $sha1
 				fetch_in_submodule "$sm_path" $depth ||
-				die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
+				die "fatal: $(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
 			fi
 			remote_name=$(sanitize_submodule_env; cd "$sm_path" && git submodule--helper print-default-remote)
 			sha1=$(sanitize_submodule_env; cd "$sm_path" &&
 				git rev-parse --verify "${remote_name}/${branch}") ||
-			die "$(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")"
+			die "fatal: $(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")"
 		fi
 
 		if test "$subsha1" != "$sha1" || test -n "$force"
@@ -604,36 +568,36 @@
 				# not be reachable from any of the refs
 				is_tip_reachable "$sm_path" "$sha1" ||
 				fetch_in_submodule "$sm_path" "$depth" "$sha1" ||
-				die "$(eval_gettext "Fetched in submodule path '\$displaypath', but it did not contain \$sha1. Direct fetching of that commit failed.")"
+				die "fatal: $(eval_gettext "Fetched in submodule path '\$displaypath', but it did not contain \$sha1. Direct fetching of that commit failed.")"
 			fi
 
 			must_die_on_failure=
 			case "$update_module" in
 			checkout)
 				command="git checkout $subforce -q"
-				die_msg="$(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$displaypath'")"
+				die_msg="fatal: $(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$displaypath'")"
 				say_msg="$(eval_gettext "Submodule path '\$displaypath': checked out '\$sha1'")"
 				;;
 			rebase)
 				command="git rebase ${GIT_QUIET:+--quiet}"
-				die_msg="$(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$displaypath'")"
+				die_msg="fatal: $(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$displaypath'")"
 				say_msg="$(eval_gettext "Submodule path '\$displaypath': rebased into '\$sha1'")"
 				must_die_on_failure=yes
 				;;
 			merge)
 				command="git merge ${GIT_QUIET:+--quiet}"
-				die_msg="$(eval_gettext "Unable to merge '\$sha1' in submodule path '\$displaypath'")"
+				die_msg="fatal: $(eval_gettext "Unable to merge '\$sha1' in submodule path '\$displaypath'")"
 				say_msg="$(eval_gettext "Submodule path '\$displaypath': merged in '\$sha1'")"
 				must_die_on_failure=yes
 				;;
 			!*)
 				command="${update_module#!}"
-				die_msg="$(eval_gettext "Execution of '\$command \$sha1' failed in submodule path '\$displaypath'")"
+				die_msg="fatal: $(eval_gettext "Execution of '\$command \$sha1' failed in submodule path '\$displaypath'")"
 				say_msg="$(eval_gettext "Submodule path '\$displaypath': '\$command \$sha1'")"
 				must_die_on_failure=yes
 				;;
 			*)
-				die "$(eval_gettext "Invalid update mode '$update_module' for submodule path '$path'")"
+				die "fatal: $(eval_gettext "Invalid update mode '$update_module' for submodule path '$path'")"
 			esac
 
 			if (sanitize_submodule_env; cd "$sm_path" && $command "$sha1")
@@ -660,7 +624,7 @@
 			res=$?
 			if test $res -gt 0
 			then
-				die_msg="$(eval_gettext "Failed to recurse into submodule path '\$displaypath'")"
+				die_msg="fatal: $(eval_gettext "Failed to recurse into submodule path '\$displaypath'")"
 				if test $res -ne 2
 				then
 					err="${err};$die_msg"
@@ -726,7 +690,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper set-branch ${GIT_QUIET:+--quiet} ${branch:+--branch "$branch"} ${default:+--default} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper set-branch ${GIT_QUIET:+--quiet} ${branch:+--branch "$branch"} ${default:+--default} -- "$@"
 }
 
 #
@@ -755,7 +719,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper set-url ${GIT_QUIET:+--quiet} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper set-url ${GIT_QUIET:+--quiet} -- "$@"
 }
 
 #
@@ -807,7 +771,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper summary ${prefix:+--prefix "$prefix"} ${files:+--files} ${cached:+--cached} ${for_status:+--for-status} ${summary_limit:+-n $summary_limit} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper summary ${files:+--files} ${cached:+--cached} ${for_status:+--for-status} ${summary_limit:+-n $summary_limit} -- "$@"
 }
 #
 # List all submodules, prefixed with:
@@ -848,7 +812,7 @@
 		shift
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper status ${GIT_QUIET:+--quiet} ${cached:+--cached} ${recursive:+--recursive} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper status ${GIT_QUIET:+--quiet} ${cached:+--cached} ${recursive:+--recursive} -- "$@"
 }
 #
 # Sync remote urls for submodules
@@ -881,7 +845,7 @@
 		esac
 	done
 
-	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper sync ${GIT_QUIET:+--quiet} ${recursive:+--recursive} -- "$@"
+	git ${wt_prefix:+-C "$wt_prefix"} submodule--helper sync ${GIT_QUIET:+--quiet} ${recursive:+--recursive} -- "$@"
 }
 
 cmd_absorbgitdirs()
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e09e024..fbd1c20 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -3796,7 +3796,8 @@
 	my @headslist;
 
 	open my $fd, '-|', git_cmd(), 'for-each-ref',
-		($limit ? '--count='.($limit+1) : ()), '--sort=-committerdate',
+		($limit ? '--count='.($limit+1) : ()),
+		'--sort=-HEAD', '--sort=-committerdate',
 		'--format=%(objectname) %(refname) %(subject)%00%(committer)',
 		@patterns
 		or return;
diff --git a/graph.c b/graph.c
index c128ad0..e3828eb 100644
--- a/graph.c
+++ b/graph.c
@@ -95,7 +95,7 @@
 		if (!color_parse_mem(start, comma - start, color))
 			strvec_push(colors, color);
 		else
-			warning(_("ignore invalid color '%.*s' in log.graphColors"),
+			warning(_("ignored invalid color '%.*s' in log.graphColors"),
 				(int)(comma - start), start);
 		start = comma + 1;
 	}
diff --git a/grep.c b/grep.c
index 8f91af1..424a395 100644
--- a/grep.c
+++ b/grep.c
@@ -657,6 +657,8 @@
 	x = compile_pattern_not(list);
 	p = *list;
 	if (p && p->token == GREP_AND) {
+		if (!x)
+			die("--and not preceded by pattern expression");
 		if (!p->next)
 			die("--and not followed by pattern expression");
 		*list = p->next;
diff --git a/hash.h b/hash.h
index 27a1802..9e25c40 100644
--- a/hash.h
+++ b/hash.h
@@ -115,7 +115,7 @@
 
 struct object_id {
 	unsigned char hash[GIT_MAX_RAWSZ];
-	int algo;
+	int algo;	/* XXX requires 4-byte alignment */
 };
 
 /* A suitably aligned type for stack allocations of hash contexts. */
diff --git a/http-push.c b/http-push.c
index d7cb167..3309aaf 100644
--- a/http-push.c
+++ b/http-push.c
@@ -203,10 +203,8 @@
 	curl_easy_setopt(curl, CURLOPT_INFILE, buffer);
 	curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len);
 	curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
-#ifndef NO_CURL_IOCTL
 	curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_buffer);
 	curl_easy_setopt(curl, CURLOPT_IOCTLDATA, buffer);
-#endif
 	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);
 	curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
 	curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req);
@@ -249,8 +247,6 @@
 	finish_request(request);
 }
 
-#ifdef USE_CURL_MULTI
-
 static void start_fetch_loose(struct transfer_request *request)
 {
 	struct active_request_slot *slot;
@@ -299,7 +295,6 @@
 		FREE_AND_NULL(request->url);
 	}
 }
-#endif
 
 static void start_fetch_packed(struct transfer_request *request)
 {
@@ -605,7 +600,6 @@
 	}
 }
 
-#ifdef USE_CURL_MULTI
 static int is_running_queue;
 static int fill_active_slot(void *unused)
 {
@@ -629,7 +623,6 @@
 	}
 	return 0;
 }
-#endif
 
 static void get_remote_object_list(unsigned char parent);
 
@@ -658,10 +651,8 @@
 	request->next = request_queue_head;
 	request_queue_head = request;
 
-#ifdef USE_CURL_MULTI
 	fill_active_slots();
 	step_active_slots();
-#endif
 }
 
 static int add_send_request(struct object *obj, struct remote_lock *lock)
@@ -696,10 +687,8 @@
 	request->next = request_queue_head;
 	request_queue_head = request;
 
-#ifdef USE_CURL_MULTI
 	fill_active_slots();
 	step_active_slots();
-#endif
 
 	return 1;
 }
@@ -894,7 +883,7 @@
 	slot->results = &results;
 	curl_setup_http(slot->curl, url, DAV_LOCK, &out_buffer, fwrite_buffer);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, dav_headers);
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &in_buffer);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &in_buffer);
 
 	CALLOC_ARRAY(lock, 1);
 	lock->timeout = -1;
@@ -1153,7 +1142,7 @@
 	curl_setup_http(slot->curl, url, DAV_PROPFIND,
 			&out_buffer, fwrite_buffer);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, dav_headers);
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &in_buffer);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &in_buffer);
 
 	if (start_active_slot(slot)) {
 		run_active_slot(slot);
@@ -1227,7 +1216,7 @@
 	curl_setup_http(slot->curl, repo->url, DAV_PROPFIND,
 			&out_buffer, fwrite_buffer);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, dav_headers);
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &in_buffer);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &in_buffer);
 
 	if (start_active_slot(slot)) {
 		run_active_slot(slot);
@@ -1682,21 +1671,15 @@
 
 static void run_request_queue(void)
 {
-#ifdef USE_CURL_MULTI
 	is_running_queue = 1;
 	fill_active_slots();
 	add_fill_function(NULL, fill_active_slot);
-#endif
 	do {
 		finish_all_active_slots();
-#ifdef USE_CURL_MULTI
 		fill_active_slots();
-#endif
 	} while (request_queue_head && !aborted);
 
-#ifdef USE_CURL_MULTI
 	is_running_queue = 0;
-#endif
 }
 
 int cmd_main(int argc, const char **argv)
@@ -1770,10 +1753,6 @@
 		break;
 	}
 
-#ifndef USE_CURL_MULTI
-	die("git-push is not available for http/https repository when not compiled with USE_CURL_MULTI");
-#endif
-
 	if (!repo->url)
 		usage(http_push_usage);
 
@@ -1786,9 +1765,7 @@
 
 	http_init(NULL, repo->url, 1);
 
-#ifdef USE_CURL_MULTI
 	is_running_queue = 0;
-#endif
 
 	/* Verify DAV compliance/lock support */
 	if (!locking_available()) {
diff --git a/http-walker.c b/http-walker.c
index 90d8ecb..910fae5 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -127,7 +127,6 @@
 	free(obj_req);
 }
 
-#ifdef USE_CURL_MULTI
 static int fill_active_slot(struct walker *walker)
 {
 	struct object_request *obj_req;
@@ -146,7 +145,6 @@
 	}
 	return 0;
 }
-#endif
 
 static void prefetch(struct walker *walker, unsigned char *sha1)
 {
@@ -163,10 +161,8 @@
 	http_is_verbose = walker->get_verbosely;
 	list_add_tail(&newreq->node, &object_queue_head);
 
-#ifdef USE_CURL_MULTI
 	fill_active_slots();
 	step_active_slots();
-#endif
 }
 
 static int is_alternate_allowed(const char *url)
@@ -357,11 +353,9 @@
 	 * wait for them to arrive and return to processing this request's
 	 * curl message
 	 */
-#ifdef USE_CURL_MULTI
 	while (cdata->got_alternates == 0) {
 		step_active_slots();
 	}
-#endif
 
 	/* Nothing to do if they've already been fetched */
 	if (cdata->got_alternates == 1)
@@ -384,7 +378,7 @@
 	alt_req.walker = walker;
 	slot->callback_data = &alt_req;
 
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &buffer);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &buffer);
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer);
 	curl_easy_setopt(slot->curl, CURLOPT_URL, url.buf);
 
@@ -505,12 +499,8 @@
 		return 0;
 	}
 
-#ifdef USE_CURL_MULTI
 	while (obj_req->state == WAITING)
 		step_active_slots();
-#else
-	start_object_request(walker, obj_req);
-#endif
 
 	/*
 	 * obj_req->req might change when fetching alternates in the callback
@@ -623,9 +613,7 @@
 	walker->cleanup = cleanup;
 	walker->data = data;
 
-#ifdef USE_CURL_MULTI
 	add_fill_function(walker, (int (*)(void *)) fill_active_slot);
-#endif
 
 	return walker;
 }
diff --git a/http.c b/http.c
index 8119247..a0f169d 100644
--- a/http.c
+++ b/http.c
@@ -19,28 +19,16 @@
 static struct trace_key trace_curl = TRACE_KEY_INIT(CURL);
 static int trace_curl_data = 1;
 static int trace_curl_redact = 1;
-#if LIBCURL_VERSION_NUM >= 0x070a08
 long int git_curl_ipresolve = CURL_IPRESOLVE_WHATEVER;
-#else
-long int git_curl_ipresolve;
-#endif
 int active_requests;
 int http_is_verbose;
 ssize_t http_post_buffer = 16 * LARGE_PACKET_MAX;
 
-#if LIBCURL_VERSION_NUM >= 0x070a06
-#define LIBCURL_CAN_HANDLE_AUTH_ANY
-#endif
-
 static int min_curl_sessions = 1;
 static int curl_session_count;
-#ifdef USE_CURL_MULTI
 static int max_requests = -1;
 static CURLM *curlm;
-#endif
-#ifndef NO_CURL_EASY_DUPHANDLE
 static CURL *curl_default;
-#endif
 
 #define PREV_BUF_SIZE 4096
 
@@ -68,15 +56,9 @@
 	{ "tlsv1.3", CURL_SSLVERSION_TLSv1_3 },
 #endif
 };
-#if LIBCURL_VERSION_NUM >= 0x070903
 static const char *ssl_key;
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070908
 static const char *ssl_capath;
-#endif
-#if LIBCURL_VERSION_NUM >= 0x071304
 static const char *curl_no_proxy;
-#endif
 #if LIBCURL_VERSION_NUM >= 0x072c00
 static const char *ssl_pinnedkey;
 #endif
@@ -101,9 +83,7 @@
 	{ "digest", CURLAUTH_DIGEST },
 	{ "negotiate", CURLAUTH_GSSNEGOTIATE },
 	{ "ntlm", CURLAUTH_NTLM },
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
 	{ "anyauth", CURLAUTH_ANY },
-#endif
 	/*
 	 * CURLAUTH_DIGEST_IE has no corresponding command-line option in
 	 * curl(1) and is not included in CURLAUTH_ANY, so we leave it out
@@ -133,27 +113,15 @@
 
 enum http_follow_config http_follow_config = HTTP_FOLLOW_INITIAL;
 
-#if LIBCURL_VERSION_NUM >= 0x071700
-/* Use CURLOPT_KEYPASSWD as is */
-#elif LIBCURL_VERSION_NUM >= 0x070903
-#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD
-#else
-#define CURLOPT_KEYPASSWD CURLOPT_SSLCERTPASSWD
-#endif
-
 static struct credential cert_auth = CREDENTIAL_INIT;
 static int ssl_cert_password_required;
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
 static unsigned long http_auth_methods = CURLAUTH_ANY;
 static int http_auth_methods_restricted;
 /* Modes for which empty_auth cannot actually help us. */
 static unsigned long empty_auth_useless =
 	CURLAUTH_BASIC
-#ifdef CURLAUTH_DIGEST_IE
 	| CURLAUTH_DIGEST_IE
-#endif
 	| CURLAUTH_DIGEST;
-#endif
 
 static struct curl_slist *pragma_header;
 static struct curl_slist *no_pragma_header;
@@ -186,7 +154,6 @@
 	return size / eltsize;
 }
 
-#ifndef NO_CURL_IOCTL
 curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp)
 {
 	struct buffer *buffer = clientp;
@@ -203,7 +170,6 @@
 		return CURLIOE_UNKNOWNCMD;
 	}
 }
-#endif
 
 size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_)
 {
@@ -237,12 +203,8 @@
 	if (slot->results != NULL) {
 		slot->results->curl_result = slot->curl_result;
 		slot->results->http_code = slot->http_code;
-#if LIBCURL_VERSION_NUM >= 0x070a08
 		curl_easy_getinfo(slot->curl, CURLINFO_HTTPAUTH_AVAIL,
 				  &slot->results->auth_avail);
-#else
-		slot->results->auth_avail = 0;
-#endif
 
 		curl_easy_getinfo(slot->curl, CURLINFO_HTTP_CONNECTCODE,
 			&slot->results->http_connectcode);
@@ -255,12 +217,9 @@
 
 static void xmulti_remove_handle(struct active_request_slot *slot)
 {
-#ifdef USE_CURL_MULTI
 	curl_multi_remove_handle(curlm, slot->curl);
-#endif
 }
 
-#ifdef USE_CURL_MULTI
 static void process_curl_messages(void)
 {
 	int num_messages;
@@ -288,7 +247,6 @@
 		curl_message = curl_multi_info_read(curlm, &num_messages);
 	}
 }
-#endif
 
 static int http_options(const char *var, const char *value, void *cb)
 {
@@ -305,14 +263,10 @@
 		return git_config_string(&ssl_version, var, value);
 	if (!strcmp("http.sslcert", var))
 		return git_config_pathname(&ssl_cert, var, value);
-#if LIBCURL_VERSION_NUM >= 0x070903
 	if (!strcmp("http.sslkey", var))
 		return git_config_pathname(&ssl_key, var, value);
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070908
 	if (!strcmp("http.sslcapath", var))
 		return git_config_pathname(&ssl_capath, var, value);
-#endif
 	if (!strcmp("http.sslcainfo", var))
 		return git_config_pathname(&ssl_cainfo, var, value);
 	if (!strcmp("http.sslcertpasswordprotected", var)) {
@@ -341,18 +295,14 @@
 
 	if (!strcmp("http.minsessions", var)) {
 		min_curl_sessions = git_config_int(var, value);
-#ifndef USE_CURL_MULTI
 		if (min_curl_sessions > 1)
 			min_curl_sessions = 1;
-#endif
 		return 0;
 	}
-#ifdef USE_CURL_MULTI
 	if (!strcmp("http.maxrequests", var)) {
 		max_requests = git_config_int(var, value);
 		return 0;
 	}
-#endif
 	if (!strcmp("http.lowspeedlimit", var)) {
 		curl_low_speed_limit = (long)git_config_int(var, value);
 		return 0;
@@ -461,12 +411,6 @@
 	if (curl_empty_auth >= 0)
 		return curl_empty_auth;
 
-#ifndef LIBCURL_CAN_HANDLE_AUTH_ANY
-	/*
-	 * Our libcurl is too old to do AUTH_ANY in the first place;
-	 * just default to turning the feature off.
-	 */
-#else
 	/*
 	 * In the automatic case, kick in the empty-auth
 	 * hack as long as we would potentially try some
@@ -479,7 +423,6 @@
 	if (http_auth_methods_restricted &&
 	    (http_auth_methods & ~empty_auth_useless))
 		return 1;
-#endif
 	return 0;
 }
 
@@ -493,24 +436,8 @@
 
 	credential_fill(&http_auth);
 
-#if LIBCURL_VERSION_NUM >= 0x071301
 	curl_easy_setopt(result, CURLOPT_USERNAME, http_auth.username);
 	curl_easy_setopt(result, CURLOPT_PASSWORD, http_auth.password);
-#else
-	{
-		static struct strbuf up = STRBUF_INIT;
-		/*
-		 * Note that we assume we only ever have a single set of
-		 * credentials in a given program run, so we do not have
-		 * to worry about updating this buffer, only setting its
-		 * initial value.
-		 */
-		if (!up.len)
-			strbuf_addf(&up, "%s:%s",
-				http_auth.username, http_auth.password);
-		curl_easy_setopt(result, CURLOPT_USERPWD, up.buf);
-	}
-#endif
 }
 
 /* *var must be free-able */
@@ -524,22 +451,10 @@
 
 static void set_proxyauth_name_password(CURL *result)
 {
-#if LIBCURL_VERSION_NUM >= 0x071301
 		curl_easy_setopt(result, CURLOPT_PROXYUSERNAME,
 			proxy_auth.username);
 		curl_easy_setopt(result, CURLOPT_PROXYPASSWORD,
 			proxy_auth.password);
-#else
-		struct strbuf s = STRBUF_INIT;
-
-		strbuf_addstr_urlencode(&s, proxy_auth.username,
-					is_rfc3986_unreserved);
-		strbuf_addch(&s, ':');
-		strbuf_addstr_urlencode(&s, proxy_auth.password,
-					is_rfc3986_unreserved);
-		curl_proxyuserpwd = strbuf_detach(&s, NULL);
-		curl_easy_setopt(result, CURLOPT_PROXYUSERPWD, curl_proxyuserpwd);
-#endif
 }
 
 static void init_curl_proxy_auth(CURL *result)
@@ -552,7 +467,6 @@
 
 	var_override(&http_proxy_authmethod, getenv("GIT_HTTP_PROXY_AUTHMETHOD"));
 
-#if LIBCURL_VERSION_NUM >= 0x070a07 /* CURLOPT_PROXYAUTH and CURLAUTH_ANY */
 	if (http_proxy_authmethod) {
 		int i;
 		for (i = 0; i < ARRAY_SIZE(proxy_authmethods); i++) {
@@ -570,7 +484,6 @@
 	}
 	else
 		curl_easy_setopt(result, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
-#endif
 }
 
 static int has_cert_password(void)
@@ -609,7 +522,7 @@
 	curl_easy_setopt(c, CURLOPT_TCP_KEEPALIVE, 1);
 }
 
-#elif LIBCURL_VERSION_NUM >= 0x071000
+#else
 static int sockopt_callback(void *client, curl_socket_t fd, curlsocktype type)
 {
 	int ka = 1;
@@ -630,12 +543,6 @@
 {
 	curl_easy_setopt(c, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
 }
-
-#else
-static void set_curl_keepalive(CURL *c)
-{
-	/* not supported on older curl versions */
-}
 #endif
 
 static void redact_sensitive_header(struct strbuf *header)
@@ -809,7 +716,6 @@
 	curl_easy_setopt(handle, CURLOPT_DEBUGDATA, NULL);
 }
 
-#ifdef CURLPROTO_HTTP
 static long get_curl_allowed_protocols(int from_user)
 {
 	long allowed_protocols = 0;
@@ -825,7 +731,6 @@
 
 	return allowed_protocols;
 }
-#endif
 
 #if LIBCURL_VERSION_NUM >=0x072f00
 static int get_curl_http_version_opt(const char *version_string, long *opt)
@@ -879,12 +784,8 @@
     }
 #endif
 
-#if LIBCURL_VERSION_NUM >= 0x070907
 	curl_easy_setopt(result, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
-#endif
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
 	curl_easy_setopt(result, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
-#endif
 
 #ifdef CURLGSSAPI_DELEGATION_FLAG
 	if (curl_deleg) {
@@ -940,14 +841,10 @@
 		curl_easy_setopt(result, CURLOPT_SSLCERT, ssl_cert);
 	if (has_cert_password())
 		curl_easy_setopt(result, CURLOPT_KEYPASSWD, cert_auth.password);
-#if LIBCURL_VERSION_NUM >= 0x070903
 	if (ssl_key != NULL)
 		curl_easy_setopt(result, CURLOPT_SSLKEY, ssl_key);
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070908
 	if (ssl_capath != NULL)
 		curl_easy_setopt(result, CURLOPT_CAPATH, ssl_capath);
-#endif
 #if LIBCURL_VERSION_NUM >= 0x072c00
 	if (ssl_pinnedkey != NULL)
 		curl_easy_setopt(result, CURLOPT_PINNEDPUBLICKEY, ssl_pinnedkey);
@@ -975,19 +872,11 @@
 	}
 
 	curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20);
-#if LIBCURL_VERSION_NUM >= 0x071301
 	curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
-#elif LIBCURL_VERSION_NUM >= 0x071101
-	curl_easy_setopt(result, CURLOPT_POST301, 1);
-#endif
-#ifdef CURLPROTO_HTTP
 	curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS,
 			 get_curl_allowed_protocols(0));
 	curl_easy_setopt(result, CURLOPT_PROTOCOLS,
 			 get_curl_allowed_protocols(-1));
-#else
-	warning(_("Protocol restrictions not supported with cURL < 7.19.4"));
-#endif
 	if (getenv("GIT_CURL_VERBOSE"))
 		http_trace_curl_no_data();
 	setup_curl_trace(result);
@@ -1002,10 +891,8 @@
 	if (curl_ftp_no_epsv)
 		curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0);
 
-#ifdef CURLOPT_USE_SSL
 	if (curl_ssl_try)
 		curl_easy_setopt(result, CURLOPT_USE_SSL, CURLUSESSL_TRY);
-#endif
 
 	/*
 	 * CURL also examines these variables as a fallback; but we need to query
@@ -1081,11 +968,9 @@
 			die("Invalid proxy URL '%s'", curl_http_proxy);
 
 		curl_easy_setopt(result, CURLOPT_PROXY, proxy_auth.host);
-#if LIBCURL_VERSION_NUM >= 0x071304
 		var_override(&curl_no_proxy, getenv("NO_PROXY"));
 		var_override(&curl_no_proxy, getenv("no_proxy"));
 		curl_easy_setopt(result, CURLOPT_NOPROXY, curl_no_proxy);
-#endif
 	}
 	init_curl_proxy_auth(result);
 
@@ -1164,7 +1049,6 @@
 	no_pragma_header = curl_slist_append(http_copy_default_headers(),
 		"Pragma:");
 
-#ifdef USE_CURL_MULTI
 	{
 		char *http_max_requests = getenv("GIT_HTTP_MAX_REQUESTS");
 		if (http_max_requests != NULL)
@@ -1174,18 +1058,13 @@
 	curlm = curl_multi_init();
 	if (!curlm)
 		die("curl_multi_init failed");
-#endif
 
 	if (getenv("GIT_SSL_NO_VERIFY"))
 		curl_ssl_verify = 0;
 
 	set_from_env(&ssl_cert, "GIT_SSL_CERT");
-#if LIBCURL_VERSION_NUM >= 0x070903
 	set_from_env(&ssl_key, "GIT_SSL_KEY");
-#endif
-#if LIBCURL_VERSION_NUM >= 0x070908
 	set_from_env(&ssl_capath, "GIT_SSL_CAPATH");
-#endif
 	set_from_env(&ssl_cainfo, "GIT_SSL_CAINFO");
 
 	set_from_env(&user_agent, "GIT_HTTP_USER_AGENT");
@@ -1201,10 +1080,8 @@
 		curl_ssl_verify = 1;
 
 	curl_session_count = 0;
-#ifdef USE_CURL_MULTI
 	if (max_requests < 1)
 		max_requests = DEFAULT_MAX_REQUESTS;
-#endif
 
 	set_from_env(&http_proxy_ssl_cert, "GIT_PROXY_SSL_CERT");
 	set_from_env(&http_proxy_ssl_key, "GIT_PROXY_SSL_KEY");
@@ -1224,9 +1101,7 @@
 			ssl_cert_password_required = 1;
 	}
 
-#ifndef NO_CURL_EASY_DUPHANDLE
 	curl_default = get_curl_handle();
-#endif
 }
 
 void http_cleanup(void)
@@ -1244,13 +1119,9 @@
 	}
 	active_queue_head = NULL;
 
-#ifndef NO_CURL_EASY_DUPHANDLE
 	curl_easy_cleanup(curl_default);
-#endif
 
-#ifdef USE_CURL_MULTI
 	curl_multi_cleanup(curlm);
-#endif
 	curl_global_cleanup();
 
 	string_list_clear(&extra_http_headers, 0);
@@ -1297,7 +1168,6 @@
 	struct active_request_slot *slot = active_queue_head;
 	struct active_request_slot *newslot;
 
-#ifdef USE_CURL_MULTI
 	int num_transfers;
 
 	/* Wait for a slot to open up if the queue is full */
@@ -1306,7 +1176,6 @@
 		if (num_transfers < active_requests)
 			process_curl_messages();
 	}
-#endif
 
 	while (slot != NULL && slot->in_use)
 		slot = slot->next;
@@ -1329,11 +1198,7 @@
 	}
 
 	if (slot->curl == NULL) {
-#ifdef NO_CURL_EASY_DUPHANDLE
-		slot->curl = get_curl_handle();
-#else
 		slot->curl = curl_easy_duphandle(curl_default);
-#endif
 		curl_session_count++;
 	}
 
@@ -1367,12 +1232,8 @@
 	else
 		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0);
 
-#if LIBCURL_VERSION_NUM >= 0x070a08
 	curl_easy_setopt(slot->curl, CURLOPT_IPRESOLVE, git_curl_ipresolve);
-#endif
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPAUTH, http_auth_methods);
-#endif
 	if (http_auth.password || curl_empty_auth_enabled())
 		init_curl_http_auth(slot->curl);
 
@@ -1381,7 +1242,6 @@
 
 int start_active_slot(struct active_request_slot *slot)
 {
-#ifdef USE_CURL_MULTI
 	CURLMcode curlm_result = curl_multi_add_handle(curlm, slot->curl);
 	int num_transfers;
 
@@ -1399,11 +1259,9 @@
 	 * something.
 	 */
 	curl_multi_perform(curlm, &num_transfers);
-#endif
 	return 1;
 }
 
-#ifdef USE_CURL_MULTI
 struct fill_chain {
 	void *data;
 	int (*fill)(void *);
@@ -1462,11 +1320,9 @@
 		fill_active_slots();
 	}
 }
-#endif
 
 void run_active_slot(struct active_request_slot *slot)
 {
-#ifdef USE_CURL_MULTI
 	fd_set readfds;
 	fd_set writefds;
 	fd_set excfds;
@@ -1479,7 +1335,6 @@
 		step_active_slots();
 
 		if (slot->in_use) {
-#if LIBCURL_VERSION_NUM >= 0x070f04
 			long curl_timeout;
 			curl_multi_timeout(curlm, &curl_timeout);
 			if (curl_timeout == 0) {
@@ -1491,10 +1346,6 @@
 				select_timeout.tv_sec  =  curl_timeout / 1000;
 				select_timeout.tv_usec = (curl_timeout % 1000) * 1000;
 			}
-#else
-			select_timeout.tv_sec  = 0;
-			select_timeout.tv_usec = 50000;
-#endif
 
 			max_fd = -1;
 			FD_ZERO(&readfds);
@@ -1517,12 +1368,6 @@
 			select(max_fd+1, &readfds, &writefds, &excfds, &select_timeout);
 		}
 	}
-#else
-	while (slot->in_use) {
-		slot->curl_result = curl_easy_perform(slot->curl);
-		finish_active_slot(slot);
-	}
-#endif
 }
 
 static void release_active_slot(struct active_request_slot *slot)
@@ -1536,9 +1381,7 @@
 			curl_session_count--;
 		}
 	}
-#ifdef USE_CURL_MULTI
 	fill_active_slots();
-#endif
 }
 
 void finish_all_active_slots(void)
@@ -1654,24 +1497,20 @@
 			credential_reject(&http_auth);
 			return HTTP_NOAUTH;
 		} else {
-#ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
 			http_auth_methods &= ~CURLAUTH_GSSNEGOTIATE;
 			if (results->auth_avail) {
 				http_auth_methods &= results->auth_avail;
 				http_auth_methods_restricted = 1;
 			}
-#endif
 			return HTTP_REAUTH;
 		}
 	} else {
 		if (results->http_connectcode == 407)
 			credential_reject(&proxy_auth);
-#if LIBCURL_VERSION_NUM >= 0x070c00
 		if (!curl_errorstr[0])
 			strlcpy(curl_errorstr,
 				curl_easy_strerror(results->curl_result),
 				sizeof(curl_errorstr));
-#endif
 		return HTTP_ERROR;
 	}
 }
@@ -1930,7 +1769,7 @@
 		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1);
 	} else {
 		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
-		curl_easy_setopt(slot->curl, CURLOPT_FILE, result);
+		curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, result);
 
 		if (target == HTTP_REQUEST_FILE) {
 			off_t posn = ftello(result);
@@ -2347,7 +2186,7 @@
 	}
 
 	preq->slot = get_active_slot();
-	curl_easy_setopt(preq->slot->curl, CURLOPT_FILE, preq->packfile);
+	curl_easy_setopt(preq->slot->curl, CURLOPT_WRITEDATA, preq->packfile);
 	curl_easy_setopt(preq->slot->curl, CURLOPT_WRITEFUNCTION, fwrite);
 	curl_easy_setopt(preq->slot->curl, CURLOPT_URL, preq->url);
 	curl_easy_setopt(preq->slot->curl, CURLOPT_HTTPHEADER,
@@ -2518,7 +2357,7 @@
 
 	freq->slot = get_active_slot();
 
-	curl_easy_setopt(freq->slot->curl, CURLOPT_FILE, freq);
+	curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEDATA, freq);
 	curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0);
 	curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file);
 	curl_easy_setopt(freq->slot->curl, CURLOPT_ERRORBUFFER, freq->errorstr);
diff --git a/http.h b/http.h
index bf3d127..3db5a0c 100644
--- a/http.h
+++ b/http.h
@@ -10,49 +10,7 @@
 #include "remote.h"
 #include "url.h"
 
-/*
- * We detect based on the cURL version if multi-transfer is
- * usable in this implementation and define this symbol accordingly.
- * This shouldn't be set by the Makefile or by the user (e.g. via CFLAGS).
- */
-#undef USE_CURL_MULTI
-
-#if LIBCURL_VERSION_NUM >= 0x071000
-#define USE_CURL_MULTI
 #define DEFAULT_MAX_REQUESTS 5
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070704
-#define curl_global_cleanup() do { /* nothing */ } while (0)
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070800
-#define curl_global_init(a) do { /* nothing */ } while (0)
-#elif LIBCURL_VERSION_NUM >= 0x070c00
-#define curl_global_init(a) curl_global_init_mem(a, xmalloc, free, \
-						xrealloc, xstrdup, xcalloc)
-#endif
-
-#if (LIBCURL_VERSION_NUM < 0x070c04) || (LIBCURL_VERSION_NUM == 0x071000)
-#define NO_CURL_EASY_DUPHANDLE
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070a03
-#define CURLE_HTTP_RETURNED_ERROR CURLE_HTTP_NOT_FOUND
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070c03
-#define NO_CURL_IOCTL
-#endif
-
-/*
- * CURLOPT_USE_SSL was known as CURLOPT_FTP_SSL up to 7.16.4,
- * and the constants were known as CURLFTPSSL_*
-*/
-#if !defined(CURLOPT_USE_SSL) && defined(CURLOPT_FTP_SSL)
-#define CURLOPT_USE_SSL CURLOPT_FTP_SSL
-#define CURLUSESSL_TRY CURLFTPSSL_TRY
-#endif
 
 struct slot_results {
 	CURLcode curl_result;
@@ -82,9 +40,7 @@
 size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
 size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
 size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
-#ifndef NO_CURL_IOCTL
 curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp);
-#endif
 
 /* Slot lifecycle functions */
 struct active_request_slot *get_active_slot(void);
@@ -101,11 +57,9 @@
 int run_one_slot(struct active_request_slot *slot,
 		 struct slot_results *results);
 
-#ifdef USE_CURL_MULTI
 void fill_active_slots(void);
 void add_fill_function(void *data, int (*fill)(void *));
 void step_active_slots(void);
-#endif
 
 void http_init(struct remote *remote, const char *url,
 	       int proactive_auth);
diff --git a/imap-send.c b/imap-send.c
index bb085d6..49a5f8a 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -451,6 +451,7 @@
 	/* not reached */
 }
 
+__attribute__((format (printf, 1, 2)))
 static void imap_info(const char *msg, ...)
 {
 	va_list va;
@@ -463,6 +464,7 @@
 	}
 }
 
+__attribute__((format (printf, 1, 2)))
 static void imap_warn(const char *msg, ...)
 {
 	va_list va;
@@ -504,6 +506,7 @@
 	return ret;
 }
 
+__attribute__((format (printf, 3, 4)))
 static int nfsnprintf(char *buf, int blen, const char *fmt, ...)
 {
 	int ret;
@@ -1266,18 +1269,6 @@
 	*msg = buf;
 }
 
-#define CHUNKSIZE 0x1000
-
-static int read_message(FILE *f, struct strbuf *all_msgs)
-{
-	do {
-		if (strbuf_fread(all_msgs, CHUNKSIZE, f) <= 0)
-			break;
-	} while (!feof(f));
-
-	return ferror(f) ? -1 : 0;
-}
-
 static int count_messages(struct strbuf *all_msgs)
 {
 	int count = 0;
@@ -1526,11 +1517,7 @@
 	if (cred.username) {
 		if (res == CURLE_OK)
 			credential_approve(&cred);
-#if LIBCURL_VERSION_NUM >= 0x070d01
 		else if (res == CURLE_LOGIN_DENIED)
-#else
-		else
-#endif
 			credential_reject(&cred);
 	}
 
@@ -1582,8 +1569,8 @@
 	}
 
 	/* read the messages */
-	if (read_message(stdin, &all_msgs)) {
-		fprintf(stderr, "error reading input\n");
+	if (strbuf_read(&all_msgs, 0, 0) < 0) {
+		error_errno(_("could not read from stdin"));
 		return 1;
 	}
 
diff --git a/json-writer.c b/json-writer.c
index aadb9db..f1cfd8f 100644
--- a/json-writer.c
+++ b/json-writer.c
@@ -3,10 +3,8 @@
 
 void jw_init(struct json_writer *jw)
 {
-	strbuf_init(&jw->json, 0);
-	strbuf_init(&jw->open_stack, 0);
-	jw->need_comma = 0;
-	jw->pretty = 0;
+	struct json_writer blank = JSON_WRITER_INIT;
+	memcpy(jw, &blank, sizeof(*jw));;
 }
 
 void jw_release(struct json_writer *jw)
diff --git a/json-writer.h b/json-writer.h
index 83906b0..209355e 100644
--- a/json-writer.h
+++ b/json-writer.h
@@ -64,7 +64,10 @@
 	unsigned int pretty:1;
 };
 
-#define JSON_WRITER_INIT { STRBUF_INIT, STRBUF_INIT, 0, 0 }
+#define JSON_WRITER_INIT { \
+	.json = STRBUF_INIT, \
+	.open_stack = STRBUF_INIT, \
+}
 
 void jw_init(struct json_writer *jw);
 void jw_release(struct json_writer *jw);
diff --git a/khash.h b/khash.h
index 21c2095..cb79bf8 100644
--- a/khash.h
+++ b/khash.h
@@ -74,7 +74,7 @@
 	void kh_destroy_##name(kh_##name##_t *h);					\
 	void kh_clear_##name(kh_##name##_t *h);						\
 	khint_t kh_get_##name(const kh_##name##_t *h, khkey_t key); \
-	int kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets); \
+	void kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets); \
 	khint_t kh_put_##name(kh_##name##_t *h, khkey_t key, int *ret); \
 	void kh_del_##name(kh_##name##_t *h, khint_t x);
 
@@ -116,7 +116,7 @@
 			return __ac_iseither(h->flags, i)? h->n_buckets : i;		\
 		} else return 0;												\
 	}																	\
-	SCOPE int kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets) \
+	SCOPE void kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets) \
 	{ /* This function uses 0.25*n_buckets bytes of working space instead of [sizeof(key_t+val_t)+.25]*n_buckets. */ \
 		khint32_t *new_flags = NULL;										\
 		khint_t j = 1;													\
@@ -126,7 +126,6 @@
 			if (h->size >= (khint_t)(new_n_buckets * __ac_HASH_UPPER + 0.5)) j = 0;	/* requested size is too small */ \
 			else { /* hash table size to be changed (shrink or expand); rehash */ \
 				ALLOC_ARRAY(new_flags, __ac_fsize(new_n_buckets)); \
-				if (!new_flags) return -1;								\
 				memset(new_flags, 0xaa, __ac_fsize(new_n_buckets) * sizeof(khint32_t)); \
 				if (h->n_buckets < new_n_buckets) {	/* expand */		\
 					REALLOC_ARRAY(h->keys, new_n_buckets); \
@@ -173,18 +172,15 @@
 			h->n_occupied = h->size;									\
 			h->upper_bound = (khint_t)(h->n_buckets * __ac_HASH_UPPER + 0.5); \
 		}																\
-		return 0;														\
 	}																	\
 	SCOPE khint_t kh_put_##name(kh_##name##_t *h, khkey_t key, int *ret) \
 	{																	\
 		khint_t x;														\
 		if (h->n_occupied >= h->upper_bound) { /* update the hash table */ \
 			if (h->n_buckets > (h->size<<1)) {							\
-				if (kh_resize_##name(h, h->n_buckets - 1) < 0) { /* clear "deleted" elements */ \
-					*ret = -1; return h->n_buckets;						\
-				}														\
-			} else if (kh_resize_##name(h, h->n_buckets + 1) < 0) { /* expand the hash table */ \
-				*ret = -1; return h->n_buckets;							\
+				kh_resize_##name(h, h->n_buckets - 1); /* clear "deleted" elements */ \
+			} else { \
+				kh_resize_##name(h, h->n_buckets + 1); /* expand the hash table */ \
 			}															\
 		} /* TODO: to implement automatically shrinking; resize() already support shrinking */ \
 		{																\
diff --git a/list-objects.c b/list-objects.c
index 7f40467..2f623f8 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -164,6 +164,9 @@
 		die("bad tree object");
 	if (obj->flags & (UNINTERESTING | SEEN))
 		return;
+	if (revs->include_check_obj &&
+	    !revs->include_check_obj(&tree->object, revs->include_check_data))
+		return;
 
 	failed_parse = parse_tree_gently(tree, 1);
 	if (failed_parse) {
@@ -334,8 +337,8 @@
 	add_pending_object(revs, &tree->object, "");
 }
 
-static void traverse_trees_and_blobs(struct traversal_context *ctx,
-				     struct strbuf *base)
+static void traverse_non_commits(struct traversal_context *ctx,
+				 struct strbuf *base)
 {
 	int i;
 
@@ -407,9 +410,9 @@
 			 * needs a reallocation for each commit. Can we pass the
 			 * tree directory without allocation churn?
 			 */
-			traverse_trees_and_blobs(ctx, &csp);
+			traverse_non_commits(ctx, &csp);
 	}
-	traverse_trees_and_blobs(ctx, &csp);
+	traverse_non_commits(ctx, &csp);
 	strbuf_release(&csp);
 }
 
diff --git a/ll-merge.c b/ll-merge.c
index 9a8a2c3..2616575 100644
--- a/ll-merge.c
+++ b/ll-merge.c
@@ -91,7 +91,9 @@
 	 * With -Xtheirs or -Xours, we have cleanly merged;
 	 * otherwise we got a conflict.
 	 */
-	return (opts->variant ? 0 : 1);
+	return opts->variant == XDL_MERGE_FAVOR_OURS ||
+	       opts->variant == XDL_MERGE_FAVOR_THEIRS ?
+	       0 : 1;
 }
 
 static int ll_xdl_merge(const struct ll_merge_driver *drv_unused,
@@ -136,7 +138,7 @@
 
 static int ll_union_merge(const struct ll_merge_driver *drv_unused,
 			  mmbuffer_t *result,
-			  const char *path_unused,
+			  const char *path,
 			  mmfile_t *orig, const char *orig_name,
 			  mmfile_t *src1, const char *name1,
 			  mmfile_t *src2, const char *name2,
@@ -148,8 +150,8 @@
 	assert(opts);
 	o = *opts;
 	o.variant = XDL_MERGE_FAVOR_UNION;
-	return ll_xdl_merge(drv_unused, result, path_unused,
-			    orig, NULL, src1, NULL, src2, NULL,
+	return ll_xdl_merge(drv_unused, result, path,
+			    orig, orig_name, src1, name1, src2, name2,
 			    &o, marker_size);
 }
 
diff --git a/log-tree.c b/log-tree.c
index 7b82378..6dc4412 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -134,7 +134,8 @@
 			      int flags, void *cb_data)
 {
 	struct object *obj;
-	enum decoration_type type = DECORATION_NONE;
+	enum object_type objtype;
+	enum decoration_type deco_type = DECORATION_NONE;
 	struct decoration_filter *filter = (struct decoration_filter *)cb_data;
 
 	if (filter && !ref_filter_match(refname, filter))
@@ -155,28 +156,29 @@
 		return 0;
 	}
 
-	obj = parse_object(the_repository, oid);
-	if (!obj)
+	objtype = oid_object_info(the_repository, oid, NULL);
+	if (objtype < 0)
 		return 0;
+	obj = lookup_object_by_type(the_repository, oid, objtype);
 
 	if (starts_with(refname, "refs/heads/"))
-		type = DECORATION_REF_LOCAL;
+		deco_type = DECORATION_REF_LOCAL;
 	else if (starts_with(refname, "refs/remotes/"))
-		type = DECORATION_REF_REMOTE;
+		deco_type = DECORATION_REF_REMOTE;
 	else if (starts_with(refname, "refs/tags/"))
-		type = DECORATION_REF_TAG;
+		deco_type = DECORATION_REF_TAG;
 	else if (!strcmp(refname, "refs/stash"))
-		type = DECORATION_REF_STASH;
+		deco_type = DECORATION_REF_STASH;
 	else if (!strcmp(refname, "HEAD"))
-		type = DECORATION_REF_HEAD;
+		deco_type = DECORATION_REF_HEAD;
 
-	add_name_decoration(type, refname, obj);
+	add_name_decoration(deco_type, refname, obj);
 	while (obj->type == OBJ_TAG) {
+		if (!obj->parsed)
+			parse_object(the_repository, &obj->oid);
 		obj = ((struct tag *)obj)->tagged;
 		if (!obj)
 			break;
-		if (!obj->parsed)
-			parse_object(the_repository, &obj->oid);
 		add_name_decoration(DECORATION_REF_TAG, refname, obj);
 	}
 	return 0;
diff --git a/ls-refs.c b/ls-refs.c
index 88f6c3f..8402141 100644
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -65,6 +65,7 @@
 	unsigned peel;
 	unsigned symrefs;
 	struct strvec prefixes;
+	struct strbuf buf;
 	unsigned unborn : 1;
 };
 
@@ -73,7 +74,8 @@
 {
 	struct ls_refs_data *data = cb_data;
 	const char *refname_nons = strip_namespace(refname);
-	struct strbuf refline = STRBUF_INIT;
+
+	strbuf_reset(&data->buf);
 
 	if (ref_is_hidden(refname_nons, refname))
 		return 0;
@@ -82,9 +84,9 @@
 		return 0;
 
 	if (oid)
-		strbuf_addf(&refline, "%s %s", oid_to_hex(oid), refname_nons);
+		strbuf_addf(&data->buf, "%s %s", oid_to_hex(oid), refname_nons);
 	else
-		strbuf_addf(&refline, "unborn %s", refname_nons);
+		strbuf_addf(&data->buf, "unborn %s", refname_nons);
 	if (data->symrefs && flag & REF_ISSYMREF) {
 		struct object_id unused;
 		const char *symref_target = resolve_ref_unsafe(refname, 0,
@@ -94,20 +96,19 @@
 		if (!symref_target)
 			die("'%s' is a symref but it is not?", refname);
 
-		strbuf_addf(&refline, " symref-target:%s",
+		strbuf_addf(&data->buf, " symref-target:%s",
 			    strip_namespace(symref_target));
 	}
 
 	if (data->peel && oid) {
 		struct object_id peeled;
 		if (!peel_iterated_oid(oid, &peeled))
-			strbuf_addf(&refline, " peeled:%s", oid_to_hex(&peeled));
+			strbuf_addf(&data->buf, " peeled:%s", oid_to_hex(&peeled));
 	}
 
-	strbuf_addch(&refline, '\n');
-	packet_write(1, refline.buf, refline.len);
+	strbuf_addch(&data->buf, '\n');
+	packet_write(1, data->buf.buf, data->buf.len);
 
-	strbuf_release(&refline);
 	return 0;
 }
 
@@ -145,6 +146,7 @@
 
 	memset(&data, 0, sizeof(data));
 	strvec_init(&data.prefixes);
+	strbuf_init(&data.buf, 0);
 
 	ensure_config_read();
 	git_config(ls_refs_config, NULL);
@@ -173,6 +175,7 @@
 				     send_ref, &data, 0);
 	packet_flush(1);
 	strvec_clear(&data.prefixes);
+	strbuf_release(&data.buf);
 	return 0;
 }
 
diff --git a/mailinfo.c b/mailinfo.c
index 184ed8d..02f6f95 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -705,8 +705,8 @@
 			perforation++;
 			continue;
 		}
-		if ((!memcmp(c, ">8", 2) || !memcmp(c, "8<", 2) ||
-		     !memcmp(c, ">%", 2) || !memcmp(c, "%<", 2))) {
+		if (starts_with(c, ">8") || starts_with(c, "8<") ||
+		    starts_with(c, ">%") || starts_with(c, "%<")) {
 			in_perforation = 1;
 			perforation += 2;
 			scissors += 2;
diff --git a/mailmap.c b/mailmap.c
index d1f7c0d..40ce152 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -8,6 +8,7 @@
 #define debug_mm(...) fprintf(stderr, __VA_ARGS__)
 #define debug_str(X) ((X) ? (X) : "(none)")
 #else
+__attribute__((format (printf, 1, 2)))
 static inline void debug_mm(const char *format, ...) {}
 static inline const char *debug_str(const char *s) { return s; }
 #endif
@@ -36,6 +37,7 @@
 		 s, debug_str(mi->name), debug_str(mi->email));
 	free(mi->name);
 	free(mi->email);
+	free(mi);
 }
 
 static void free_mailmap_entry(void *p, const char *s)
@@ -51,6 +53,7 @@
 
 	me->namemap.strdup_strings = 1;
 	string_list_clear_func(&me->namemap, free_mailmap_info);
+	free(me);
 }
 
 /*
diff --git a/merge-ort.c b/merge-ort.c
index b954f71..515dc39 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -29,6 +29,7 @@
 #include "entry.h"
 #include "ll-merge.h"
 #include "object-store.h"
+#include "promisor-remote.h"
 #include "revision.h"
 #include "strmap.h"
 #include "submodule.h"
@@ -61,6 +62,53 @@
 	struct name_entry names[3];
 };
 
+struct deferred_traversal_data {
+	/*
+	 * possible_trivial_merges: directories to be explored only when needed
+	 *
+	 * possible_trivial_merges is a map of directory names to
+	 * dir_rename_mask.  When we detect that a directory is unchanged on
+	 * one side, we can sometimes resolve the directory without recursing
+	 * into it.  Renames are the only things that can prevent such an
+	 * optimization.  However, for rename sources:
+	 *   - If no parent directory needed directory rename detection, then
+	 *     no path under such a directory can be a relevant_source.
+	 * and for rename destinations:
+	 *   - If no cached rename has a target path under the directory AND
+	 *   - If there are no unpaired relevant_sources elsewhere in the
+	 *     repository
+	 * then we don't need any path under this directory for a rename
+	 * destination.  The only way to know the last item above is to defer
+	 * handling such directories until the end of collect_merge_info(),
+	 * in handle_deferred_entries().
+	 *
+	 * For each we store dir_rename_mask, since that's the only bit of
+	 * information we need, other than the path, to resume the recursive
+	 * traversal.
+	 */
+	struct strintmap possible_trivial_merges;
+
+	/*
+	 * trivial_merges_okay: if trivial directory merges are okay
+	 *
+	 * See possible_trivial_merges above.  The "no unpaired
+	 * relevant_sources elsewhere in the repository" is a single boolean
+	 * per merge side, which we store here.  Note that while 0 means no,
+	 * 1 only means "maybe" rather than "yes"; we optimistically set it
+	 * to 1 initially and only clear when we determine it is unsafe to
+	 * do trivial directory merges.
+	 */
+	unsigned trivial_merges_okay;
+
+	/*
+	 * target_dirs: ancestor directories of rename targets
+	 *
+	 * target_dirs contains all directory names that are an ancestor of
+	 * any rename destination.
+	 */
+	struct strset target_dirs;
+};
+
 struct rename_info {
 	/*
 	 * All variables that are arrays of size 3 correspond to data tracked
@@ -118,6 +166,8 @@
 	 */
 	struct strintmap relevant_sources[3];
 
+	struct deferred_traversal_data deferred[3];
+
 	/*
 	 * dir_rename_mask:
 	 *   0: optimization removing unmodified potential rename source okay
@@ -163,6 +213,7 @@
 	 *   MERGE_SIDE2: cached data from side2 can be reused
 	 *   MERGE_SIDE1: cached data from side1 can be reused
 	 *   0:           no cached data can be reused
+	 *   -1:          See redo_after_renames; both sides can be reused.
 	 */
 	int cached_pairs_valid_side;
 
@@ -209,6 +260,28 @@
 	struct strset cached_irrelevant[3];
 
 	/*
+	 * redo_after_renames: optimization flag for "restarting" the merge
+	 *
+	 * Sometimes it pays to detect renames, cache them, and then
+	 * restart the merge operation from the beginning.  The reason for
+	 * this is that when we know where all the renames are, we know
+	 * whether a certain directory has any paths under it affected --
+	 * and if a directory is not affected then it permits us to do
+	 * trivial tree merging in more cases.  Doing trivial tree merging
+	 * prevents the need to run process_entry() on every path
+	 * underneath trees that can be trivially merged, and
+	 * process_entry() is more expensive than collect_merge_info() --
+	 * plus, the second collect_merge_info() will be much faster since
+	 * it doesn't have to recurse into the relevant trees.
+	 *
+	 * Values for this flag:
+	 *   0 = don't bother, not worth it (or conditions not yet checked)
+	 *   1 = conditions for optimization met, optimization worthwhile
+	 *   2 = we already did it (don't restart merge yet again)
+	 */
+	unsigned redo_after_renames;
+
+	/*
 	 * needed_limit: value needed for inexact rename detection to run
 	 *
 	 * If the current rename limit wasn't high enough for inexact
@@ -230,8 +303,6 @@
 	 *   * these keys serve to intern all the path strings, which allows
 	 *     us to do pointer comparison on directory names instead of
 	 *     strcmp; we just have to be careful to use the interned strings.
-	 *     (Technically paths_to_free may track some strings that were
-	 *      removed from froms paths.)
 	 *
 	 * The values of paths:
 	 *   * either a pointer to a merged_info, or a conflict_info struct
@@ -267,14 +338,14 @@
 	struct strmap conflicted;
 
 	/*
-	 * paths_to_free: additional list of strings to free
+	 * pool: memory pool for fast allocation/deallocation
 	 *
-	 * If keys are removed from "paths", they are added to paths_to_free
-	 * to ensure they are later freed.  We avoid free'ing immediately since
-	 * other places (e.g. conflict_info.pathnames[]) may still be
-	 * referencing these paths.
+	 * We allocate room for lots of filenames and auxiliary data
+	 * structures in merge_options_internal, and it tends to all be
+	 * freed together too.  Using a memory pool for these provides a
+	 * nice speedup.
 	 */
-	struct string_list paths_to_free;
+	struct mem_pool pool;
 
 	/*
 	 * output: special messages and conflict notices for various paths
@@ -446,60 +517,47 @@
 {
 	struct rename_info *renames = &opti->renames;
 	int i;
-	void (*strmap_func)(struct strmap *, int) =
+	void (*strmap_clear_func)(struct strmap *, int) =
 		reinitialize ? strmap_partial_clear : strmap_clear;
-	void (*strintmap_func)(struct strintmap *) =
+	void (*strintmap_clear_func)(struct strintmap *) =
 		reinitialize ? strintmap_partial_clear : strintmap_clear;
-	void (*strset_func)(struct strset *) =
+	void (*strset_clear_func)(struct strset *) =
 		reinitialize ? strset_partial_clear : strset_clear;
 
-	/*
-	 * We marked opti->paths with strdup_strings = 0, so that we
-	 * wouldn't have to make another copy of the fullpath created by
-	 * make_traverse_path from setup_path_info().  But, now that we've
-	 * used it and have no other references to these strings, it is time
-	 * to deallocate them.
-	 */
-	free_strmap_strings(&opti->paths);
-	strmap_func(&opti->paths, 1);
+	strmap_clear_func(&opti->paths, 0);
 
 	/*
 	 * All keys and values in opti->conflicted are a subset of those in
 	 * opti->paths.  We don't want to deallocate anything twice, so we
 	 * don't free the keys and we pass 0 for free_values.
 	 */
-	strmap_func(&opti->conflicted, 0);
-
-	/*
-	 * opti->paths_to_free is similar to opti->paths; we created it with
-	 * strdup_strings = 0 to avoid making _another_ copy of the fullpath
-	 * but now that we've used it and have no other references to these
-	 * strings, it is time to deallocate them.  We do so by temporarily
-	 * setting strdup_strings to 1.
-	 */
-	opti->paths_to_free.strdup_strings = 1;
-	string_list_clear(&opti->paths_to_free, 0);
-	opti->paths_to_free.strdup_strings = 0;
+	strmap_clear_func(&opti->conflicted, 0);
 
 	if (opti->attr_index.cache_nr) /* true iff opt->renormalize */
 		discard_index(&opti->attr_index);
 
 	/* Free memory used by various renames maps */
 	for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) {
-		strintmap_func(&renames->dirs_removed[i]);
-		strmap_func(&renames->dir_renames[i], 0);
-		strintmap_func(&renames->relevant_sources[i]);
+		strintmap_clear_func(&renames->dirs_removed[i]);
+		strmap_clear_func(&renames->dir_renames[i], 0);
+		strintmap_clear_func(&renames->relevant_sources[i]);
 		if (!reinitialize)
 			assert(renames->cached_pairs_valid_side == 0);
-		if (i != renames->cached_pairs_valid_side) {
-			strset_func(&renames->cached_target_names[i]);
-			strmap_func(&renames->cached_pairs[i], 1);
-			strset_func(&renames->cached_irrelevant[i]);
+		if (i != renames->cached_pairs_valid_side &&
+		    -1 != renames->cached_pairs_valid_side) {
+			strset_clear_func(&renames->cached_target_names[i]);
+			strmap_clear_func(&renames->cached_pairs[i], 1);
+			strset_clear_func(&renames->cached_irrelevant[i]);
 			partial_clear_dir_rename_count(&renames->dir_rename_count[i]);
 			if (!reinitialize)
 				strmap_clear(&renames->dir_rename_count[i], 1);
 		}
 	}
+	for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) {
+		strintmap_clear_func(&renames->deferred[i].possible_trivial_merges);
+		strset_clear_func(&renames->deferred[i].target_dirs);
+		renames->deferred[i].trivial_merges_okay = 1; /* 1 == maybe */
+	}
 	renames->cached_pairs_valid_side = 0;
 	renames->dir_rename_mask = 0;
 
@@ -524,11 +582,14 @@
 		strmap_clear(&opti->output, 0);
 	}
 
+	mem_pool_discard(&opti->pool, 0);
+
 	/* Clean out callback_data as well. */
 	FREE_AND_NULL(renames->callback_data);
 	renames->callback_data_nr = renames->callback_data_alloc = 0;
 }
 
+__attribute__((format (printf, 2, 3)))
 static int err(struct merge_options *opt, const char *err, ...)
 {
 	va_list params;
@@ -585,6 +646,36 @@
 	strbuf_addch(sb, '\n');
 }
 
+static struct diff_filespec *pool_alloc_filespec(struct mem_pool *pool,
+						 const char *path)
+{
+	/* Similar to alloc_filespec(), but allocate from pool and reuse path */
+	struct diff_filespec *spec;
+
+	spec = mem_pool_calloc(pool, 1, sizeof(*spec));
+	spec->path = (char*)path; /* spec won't modify it */
+
+	spec->count = 1;
+	spec->is_binary = -1;
+	return spec;
+}
+
+static struct diff_filepair *pool_diff_queue(struct mem_pool *pool,
+					     struct diff_queue_struct *queue,
+					     struct diff_filespec *one,
+					     struct diff_filespec *two)
+{
+	/* Same code as diff_queue(), except allocate from pool */
+	struct diff_filepair *dp;
+
+	dp = mem_pool_calloc(pool, 1, sizeof(*dp));
+	dp->one = one;
+	dp->two = two;
+	if (queue)
+		diff_q(queue, dp);
+	return dp;
+}
+
 /* add a string to a strbuf, but converting "/" to "_" */
 static void add_flattened_path(struct strbuf *out, const char *s)
 {
@@ -713,8 +804,9 @@
 	assert(!df_conflict || !resolved); /* df_conflict implies !resolved */
 	assert(resolved == (merged_version != NULL));
 
-	mi = xcalloc(1, resolved ? sizeof(struct merged_info) :
-				   sizeof(struct conflict_info));
+	mi = mem_pool_calloc(&opt->priv->pool, 1,
+			     resolved ? sizeof(struct merged_info) :
+					sizeof(struct conflict_info));
 	mi->directory_name = current_dir_name;
 	mi->basename_offset = current_dir_name_len;
 	mi->clean = !!resolved;
@@ -765,6 +857,7 @@
 	int names_idx = is_add ? side : 0;
 
 	if (is_add) {
+		assert(match_mask == 0 || match_mask == 6);
 		if (strset_contains(&renames->cached_target_names[side],
 				    pathname))
 			return;
@@ -772,6 +865,8 @@
 		unsigned content_relevant = (match_mask == 0);
 		unsigned location_relevant = (dir_rename_mask == 0x07);
 
+		assert(match_mask == 0 || match_mask == 3 || match_mask == 5);
+
 		/*
 		 * If pathname is found in cached_irrelevant[side] due to
 		 * previous pick but for this commit content is relevant,
@@ -808,11 +903,11 @@
 			return;
 	}
 
-	one = alloc_filespec(pathname);
-	two = alloc_filespec(pathname);
+	one = pool_alloc_filespec(&opt->priv->pool, pathname);
+	two = pool_alloc_filespec(&opt->priv->pool, pathname);
 	fill_filespec(is_add ? two : one,
 		      &names[names_idx].oid, 1, names[names_idx].mode);
-	diff_queue(&renames->pairs[side], one, two);
+	pool_diff_queue(&opt->priv->pool, &renames->pairs[side], one, two);
 }
 
 static void collect_rename_info(struct merge_options *opt,
@@ -1003,7 +1098,7 @@
 	len = traverse_path_len(info, p->pathlen);
 
 	/* +1 in both of the following lines to include the NUL byte */
-	fullpath = xmalloc(len + 1);
+	fullpath = mem_pool_alloc(&opt->priv->pool, len + 1);
 	make_traverse_path(fullpath, len + 1, info, p->path, p->pathlen);
 
 	/*
@@ -1014,20 +1109,67 @@
 	if (side1_matches_mbase && side2_matches_mbase) {
 		/* mbase, side1, & side2 all match; use mbase as resolution */
 		setup_path_info(opt, &pi, dirname, info->pathlen, fullpath,
-				names, names+0, mbase_null, 0,
+				names, names+0, mbase_null, 0 /* df_conflict */,
+				filemask, dirmask, 1 /* resolved */);
+		return mask;
+	}
+
+	/*
+	 * If the sides match, and all three paths are present and are
+	 * files, then we can take either as the resolution.  We can't do
+	 * this with trees, because there may be rename sources from the
+	 * merge_base.
+	 */
+	if (sides_match && filemask == 0x07) {
+		/* use side1 (== side2) version as resolution */
+		setup_path_info(opt, &pi, dirname, info->pathlen, fullpath,
+				names, names+1, side1_null, 0,
 				filemask, dirmask, 1);
 		return mask;
 	}
 
 	/*
-	 * Gather additional information used in rename detection.
+	 * If side1 matches mbase and all three paths are present and are
+	 * files, then we can use side2 as the resolution.  We cannot
+	 * necessarily do so this for trees, because there may be rename
+	 * destinations within side2.
+	 */
+	if (side1_matches_mbase && filemask == 0x07) {
+		/* use side2 version as resolution */
+		setup_path_info(opt, &pi, dirname, info->pathlen, fullpath,
+				names, names+2, side2_null, 0,
+				filemask, dirmask, 1);
+		return mask;
+	}
+
+	/* Similar to above but swapping sides 1 and 2 */
+	if (side2_matches_mbase && filemask == 0x07) {
+		/* use side1 version as resolution */
+		setup_path_info(opt, &pi, dirname, info->pathlen, fullpath,
+				names, names+1, side1_null, 0,
+				filemask, dirmask, 1);
+		return mask;
+	}
+
+	/*
+	 * Sometimes we can tell that a source path need not be included in
+	 * rename detection -- namely, whenever either
+	 *    side1_matches_mbase && side2_null
+	 * or
+	 *    side2_matches_mbase && side1_null
+	 * However, we call collect_rename_info() even in those cases,
+	 * because exact renames are cheap and would let us remove both a
+	 * source and destination path.  We'll cull the unneeded sources
+	 * later.
 	 */
 	collect_rename_info(opt, names, dirname, fullpath,
 			    filemask, dirmask, match_mask);
 
 	/*
-	 * Record information about the path so we can resolve later in
-	 * process_entries.
+	 * None of the special cases above matched, so we have a
+	 * provisional conflict.  (Rename detection might allow us to
+	 * unconflict some more cases, but that comes later so all we can
+	 * do now is record the different non-null file hashes.)
 	 */
 	setup_path_info(opt, &pi, dirname, info->pathlen, fullpath,
 			names, NULL, 0, df_conflict, filemask, dirmask, 0);
@@ -1042,8 +1184,36 @@
 		struct tree_desc t[3];
 		void *buf[3] = {NULL, NULL, NULL};
 		const char *original_dir_name;
-		int i, ret;
+		int i, ret, side;
 
+		/*
+		 * Check for whether we can avoid recursing due to one side
+		 * matching the merge base.  The side that does NOT match is
+		 * the one that might have a rename destination we need.
+		 */
+		assert(!side1_matches_mbase || !side2_matches_mbase);
+		side = side1_matches_mbase ? MERGE_SIDE2 :
+			side2_matches_mbase ? MERGE_SIDE1 : MERGE_BASE;
+		if (filemask == 0 && (dirmask == 2 || dirmask == 4)) {
+			/*
+			 * Also defer recursing into new directories; set up a
+			 * few variables to let us do so.
+			 */
+			ci->match_mask = (7 - dirmask);
+			side = dirmask / 2;
+		}
+		if (renames->dir_rename_mask != 0x07 &&
+		    side != MERGE_BASE &&
+		    renames->deferred[side].trivial_merges_okay &&
+		    !strset_contains(&renames->deferred[side].target_dirs,
+				     pi.string)) {
+			strintmap_set(&renames->deferred[side].possible_trivial_merges,
+				      pi.string, renames->dir_rename_mask);
+			renames->dir_rename_mask = prev_dir_rename_mask;
+			return mask;
+		}
+
+		/* We need to recurse */
 		ci->match_mask &= filemask;
 		newinfo = *info;
 		newinfo.prev = info;
@@ -1097,6 +1267,192 @@
 	return mask;
 }
 
+static void resolve_trivial_directory_merge(struct conflict_info *ci, int side)
+{
+	VERIFY_CI(ci);
+	assert((side == 1 && ci->match_mask == 5) ||
+	       (side == 2 && ci->match_mask == 3));
+	oidcpy(&ci->merged.result.oid, &ci->stages[side].oid);
+	ci->merged.result.mode = ci->stages[side].mode;
+	ci->merged.is_null = is_null_oid(&ci->stages[side].oid);
+	ci->match_mask = 0;
+	ci->merged.clean = 1; /* (ci->filemask == 0); */
+}
+
+static int handle_deferred_entries(struct merge_options *opt,
+				   struct traverse_info *info)
+{
+	struct rename_info *renames = &opt->priv->renames;
+	struct hashmap_iter iter;
+	struct strmap_entry *entry;
+	int side, ret = 0;
+	int path_count_before, path_count_after = 0;
+
+	path_count_before = strmap_get_size(&opt->priv->paths);
+	for (side = MERGE_SIDE1; side <= MERGE_SIDE2; side++) {
+		unsigned optimization_okay = 1;
+		struct strintmap copy;
+
+		/* Loop over the set of paths we need to know rename info for */
+		strset_for_each_entry(&renames->relevant_sources[side],
+				      &iter, entry) {
+			char *rename_target, *dir, *dir_marker;
+			struct strmap_entry *e;
+
+			/*
+			 * If we don't know delete/rename info for this path,
+			 * then we need to recurse into all trees to get all
+			 * adds to make sure we have it.
+			 */
+			if (strset_contains(&renames->cached_irrelevant[side],
+					    entry->key))
+				continue;
+			e = strmap_get_entry(&renames->cached_pairs[side],
+					     entry->key);
+			if (!e) {
+				optimization_okay = 0;
+				break;
+			}
+
+			/* If this is a delete, we have enough info already */
+			rename_target = e->value;
+			if (!rename_target)
+				continue;
+
+			/* If we already walked the rename target, we're good */
+			if (strmap_contains(&opt->priv->paths, rename_target))
+				continue;
+
+			/*
+			 * Otherwise, we need to get a list of directories that
+			 * will need to be recursed into to get this
+			 * rename_target.
+			 */
+			dir = xstrdup(rename_target);
+			while ((dir_marker = strrchr(dir, '/'))) {
+				*dir_marker = '\0';
+				if (strset_contains(&renames->deferred[side].target_dirs,
+						    dir))
+					break;
+				strset_add(&renames->deferred[side].target_dirs,
+					   dir);
+			}
+			free(dir);
+		}
+		renames->deferred[side].trivial_merges_okay = optimization_okay;
+		/*
+		 * We need to recurse into any directories in
+		 * possible_trivial_merges[side] found in target_dirs[side].
+		 * But when we recurse, we may need to queue up some of the
+		 * subdirectories for possible_trivial_merges[side].  Since
+		 * we can't safely iterate through a hashmap while also adding
+		 * entries, move the entries into 'copy', iterate over 'copy',
+		 * and then we'll also iterate anything added into
+		 * possible_trivial_merges[side] once this loop is done.
+		 */
+		copy = renames->deferred[side].possible_trivial_merges;
+		strintmap_init_with_options(&renames->deferred[side].possible_trivial_merges,
+					    0,
+					    &opt->priv->pool,
+					    0);
+		strintmap_for_each_entry(&copy, &iter, entry) {
+			const char *path = entry->key;
+			unsigned dir_rename_mask = (intptr_t)entry->value;
+			struct conflict_info *ci;
+			unsigned dirmask;
+			struct tree_desc t[3];
+			void *buf[3] = {NULL,};
+			int i;
+
+			ci = strmap_get(&opt->priv->paths, path);
+			VERIFY_CI(ci);
+			dirmask = ci->dirmask;
+
+			if (optimization_okay &&
+			    !strset_contains(&renames->deferred[side].target_dirs,
+					     path)) {
+				resolve_trivial_directory_merge(ci, side);
+				continue;
+			}
+
+			info->name = path;
+			info->namelen = strlen(path);
+			info->pathlen = info->namelen + 1;
+
+			for (i = 0; i < 3; i++, dirmask >>= 1) {
+				if (i == 1 && ci->match_mask == 3)
+					t[1] = t[0];
+				else if (i == 2 && ci->match_mask == 5)
+					t[2] = t[0];
+				else if (i == 2 && ci->match_mask == 6)
+					t[2] = t[1];
+				else {
+					const struct object_id *oid = NULL;
+					if (dirmask & 1)
+						oid = &ci->stages[i].oid;
+					buf[i] = fill_tree_descriptor(opt->repo,
+								      t+i, oid);
+				}
+			}
+
+			ci->match_mask &= ci->filemask;
+			opt->priv->current_dir_name = path;
+			renames->dir_rename_mask = dir_rename_mask;
+			if (renames->dir_rename_mask == 0 ||
+			    renames->dir_rename_mask == 0x07)
+				ret = traverse_trees(NULL, 3, t, info);
+			else
+				ret = traverse_trees_wrapper(NULL, 3, t, info);
+
+			for (i = MERGE_BASE; i <= MERGE_SIDE2; i++)
+				free(buf[i]);
+
+			if (ret < 0)
+				return ret;
+		}
+		strintmap_clear(&copy);
+		strintmap_for_each_entry(&renames->deferred[side].possible_trivial_merges,
+					 &iter, entry) {
+			const char *path = entry->key;
+			struct conflict_info *ci;
+
+			ci = strmap_get(&opt->priv->paths, path);
+			VERIFY_CI(ci);
+
+			assert(renames->deferred[side].trivial_merges_okay &&
+			       !strset_contains(&renames->deferred[side].target_dirs,
+						path));
+			resolve_trivial_directory_merge(ci, side);
+		}
+		if (!optimization_okay || path_count_after)
+			path_count_after = strmap_get_size(&opt->priv->paths);
+	}
+	if (path_count_after) {
+		/*
+		 * The choice of wanted_factor here does not affect
+		 * correctness, only performance.  When the
+		 *    path_count_after / path_count_before
+		 * ratio is high, redoing after renames is a big
+		 * performance boost.  I suspect that redoing is a wash
+		 * somewhere near a value of 2, and below that redoing will
+		 * slow things down.  I applied a fudge factor and picked
+		 * 3; see the commit message when this was introduced for
+		 * back of the envelope calculations for this ratio.
+		 */
+		const int wanted_factor = 3;
+
+		/* We should only redo collect_merge_info one time */
+		assert(renames->redo_after_renames == 0);
+
+		if (path_count_after / path_count_before >= wanted_factor) {
+			renames->redo_after_renames = 1;
+			renames->cached_pairs_valid_side = -1;
+		}
+	} else if (renames->redo_after_renames == 2)
+		renames->redo_after_renames = 0;
+	return ret;
+}
+
 static int collect_merge_info(struct merge_options *opt,
 			      struct tree *merge_base,
 			      struct tree *side1,
@@ -1122,6 +1478,8 @@
 
 	trace2_region_enter("merge", "traverse_trees", opt->repo);
 	ret = traverse_trees(NULL, 3, t, &info);
+	if (ret == 0)
+		ret = handle_deferred_entries(opt, &info);
 	trace2_region_leave("merge", "traverse_trees", opt->repo);
 
 	return ret;
@@ -1836,7 +2194,7 @@
 			free(new_path);
 		} else {
 			CALLOC_ARRAY(collision_info, 1);
-			string_list_init(&collision_info->source_files, 0);
+			string_list_init_nodup(&collision_info->source_files);
 			strmap_put(collisions, new_path, collision_info);
 		}
 		string_list_insert(&collision_info->source_files,
@@ -1947,12 +2305,17 @@
 	VERIFY_CI(ci);
 
 	/* Find parent directories missing from opt->priv->paths */
-	cur_path = new_path;
+	cur_path = mem_pool_strdup(&opt->priv->pool, new_path);
+	free((char*)new_path);
+	new_path = (char *)cur_path;
+
 	while (1) {
 		/* Find the parent directory of cur_path */
 		char *last_slash = strrchr(cur_path, '/');
 		if (last_slash) {
-			parent_name = xstrndup(cur_path, last_slash - cur_path);
+			parent_name = mem_pool_strndup(&opt->priv->pool,
+						       cur_path,
+						       last_slash - cur_path);
 		} else {
 			parent_name = opt->priv->toplevel_dir;
 			break;
@@ -1961,7 +2324,6 @@
 		/* Look it up in opt->priv->paths */
 		entry = strmap_get_entry(&opt->priv->paths, parent_name);
 		if (entry) {
-			free((char*)parent_name);
 			parent_name = entry->key; /* reuse known pointer */
 			break;
 		}
@@ -1988,13 +2350,6 @@
 		parent_name = cur_dir;
 	}
 
-	/*
-	 * We are removing old_path from opt->priv->paths.  old_path also will
-	 * eventually need to be freed, but it may still be used by e.g.
-	 * ci->pathnames.  So, store it in another string-list for now.
-	 */
-	string_list_append(&opt->priv->paths_to_free, old_path);
-
 	assert(ci->filemask == 2 || ci->filemask == 4);
 	assert(ci->dirmask == 0);
 	strmap_remove(&opt->priv->paths, old_path, 0);
@@ -2028,7 +2383,6 @@
 		new_ci->stages[index].mode = ci->stages[index].mode;
 		oidcpy(&new_ci->stages[index].oid, &ci->stages[index].oid);
 
-		free(ci);
 		ci = new_ci;
 	}
 
@@ -2456,10 +2810,23 @@
 		if (!new_name)
 			new_name = old_name;
 
+		/*
+		 * cached_pairs has *copies* of old_name and new_name,
+		 * because it has to persist across merges.  Since
+		 * pool_alloc_filespec() will just re-use the existing
+		 * filenames, which will also get re-used by
+		 * opt->priv->paths if they become renames, and then
+		 * get freed at the end of the merge, that would leave
+		 * the copy in cached_pairs dangling.  Avoid this by
+		 * making a copy here.
+		 */
+		old_name = mem_pool_strdup(&opt->priv->pool, old_name);
+		new_name = mem_pool_strdup(&opt->priv->pool, new_name);
+
 		/* We don't care about oid/mode, only filenames and status */
-		one = alloc_filespec(old_name);
-		two = alloc_filespec(new_name);
-		diff_queue(pairs, one, two);
+		one = pool_alloc_filespec(&opt->priv->pool, old_name);
+		two = pool_alloc_filespec(&opt->priv->pool, new_name);
+		pool_diff_queue(&opt->priv->pool, pairs, one, two);
 		pairs->queue[pairs->nr-1]->status = entry->value ? 'R' : 'D';
 	}
 }
@@ -2533,9 +2900,9 @@
 	return strcmp(a->one->path, b->one->path);
 }
 
-/* Call diffcore_rename() to compute which files have changed on given side */
-static void detect_regular_renames(struct merge_options *opt,
-				   unsigned side_index)
+/* Call diffcore_rename() to update deleted/added pairs into rename pairs */
+static int detect_regular_renames(struct merge_options *opt,
+				  unsigned side_index)
 {
 	struct diff_options diff_opts;
 	struct rename_info *renames = &opt->priv->renames;
@@ -2548,7 +2915,7 @@
 		 * side had directory renames.
 		 */
 		resolve_diffpair_statuses(&renames->pairs[side_index]);
-		return;
+		return 0;
 	}
 
 	partial_clear_dir_rename_count(&renames->dir_rename_count[side_index]);
@@ -2558,7 +2925,7 @@
 	diff_opts.detect_rename = DIFF_DETECT_RENAME;
 	diff_opts.rename_limit = opt->rename_limit;
 	if (opt->rename_limit <= 0)
-		diff_opts.rename_limit = 1000;
+		diff_opts.rename_limit = 7000;
 	diff_opts.rename_score = opt->rename_score;
 	diff_opts.show_rename_progress = opt->show_rename_progress;
 	diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT;
@@ -2567,6 +2934,7 @@
 	diff_queued_diff = renames->pairs[side_index];
 	trace2_region_enter("diff", "diffcore_rename", opt->repo);
 	diffcore_rename_extended(&diff_opts,
+				 &opt->priv->pool,
 				 &renames->relevant_sources[side_index],
 				 &renames->dirs_removed[side_index],
 				 &renames->dir_rename_count[side_index],
@@ -2574,6 +2942,8 @@
 	trace2_region_leave("diff", "diffcore_rename", opt->repo);
 	resolve_diffpair_statuses(&diff_queued_diff);
 
+	if (diff_opts.needed_rename_limit > 0)
+		renames->redo_after_renames = 0;
 	if (diff_opts.needed_rename_limit > renames->needed_limit)
 		renames->needed_limit = diff_opts.needed_rename_limit;
 
@@ -2583,11 +2953,15 @@
 	diff_queued_diff.nr = 0;
 	diff_queued_diff.queue = NULL;
 	diff_flush(&diff_opts);
+
+	return 1;
 }
 
 /*
- * Get information of all renames which occurred in 'side_pairs', discarding
- * non-renames.
+ * Get information of all renames which occurred in 'side_pairs', making use
+ * of any implicit directory renames in side_dir_renames (also making use of
+ * implicit directory renames rename_exclusions as needed by
+ * check_for_directory_rename()).  Add all (updated) renames into result.
  */
 static int collect_renames(struct merge_options *opt,
 			   struct diff_queue_struct *result,
@@ -2611,7 +2985,7 @@
 
 		if (p->status != 'A' && p->status != 'R') {
 			possibly_cache_new_pair(renames, p, side_index, NULL);
-			diff_free_filepair(p);
+			pool_diff_free_filepair(&opt->priv->pool, p);
 			continue;
 		}
 
@@ -2624,7 +2998,7 @@
 
 		possibly_cache_new_pair(renames, p, side_index, new_path);
 		if (p->status != 'R' && !new_path) {
-			diff_free_filepair(p);
+			pool_diff_free_filepair(&opt->priv->pool, p);
 			continue;
 		}
 
@@ -2670,14 +3044,32 @@
 	struct diff_queue_struct combined;
 	struct rename_info *renames = &opt->priv->renames;
 	int need_dir_renames, s, clean = 1;
+	unsigned detection_run = 0;
 
 	memset(&combined, 0, sizeof(combined));
 	if (!possible_renames(renames))
 		goto cleanup;
 
 	trace2_region_enter("merge", "regular renames", opt->repo);
-	detect_regular_renames(opt, MERGE_SIDE1);
-	detect_regular_renames(opt, MERGE_SIDE2);
+	detection_run |= detect_regular_renames(opt, MERGE_SIDE1);
+	detection_run |= detect_regular_renames(opt, MERGE_SIDE2);
+	if (renames->redo_after_renames && detection_run) {
+		int i, side;
+		struct diff_filepair *p;
+
+		/* Cache the renames, we found */
+		for (side = MERGE_SIDE1; side <= MERGE_SIDE2; side++) {
+			for (i = 0; i < renames->pairs[side].nr; ++i) {
+				p = renames->pairs[side].queue[i];
+				possibly_cache_new_pair(renames, p, side, NULL);
+			}
+		}
+
+		/* Restart the merge with the cached renames */
+		renames->redo_after_renames = 2;
+		trace2_region_leave("merge", "regular renames", opt->repo);
+		goto cleanup;
+	}
 	use_cached_pairs(opt, &renames->cached_pairs[1], &renames->pairs[1]);
 	use_cached_pairs(opt, &renames->cached_pairs[2], &renames->pairs[2]);
 	trace2_region_leave("merge", "regular renames", opt->repo);
@@ -2724,7 +3116,7 @@
 		side_pairs = &renames->pairs[s];
 		for (i = 0; i < side_pairs->nr; ++i) {
 			struct diff_filepair *p = side_pairs->queue[i];
-			diff_free_filepair(p);
+			pool_diff_free_filepair(&opt->priv->pool, p);
 		}
 	}
 
@@ -2737,7 +3129,8 @@
 	if (combined.nr) {
 		int i;
 		for (i = 0; i < combined.nr; i++)
-			diff_free_filepair(combined.queue[i]);
+			pool_diff_free_filepair(&opt->priv->pool,
+						combined.queue[i]);
 		free(combined.queue);
 	}
 
@@ -2746,31 +3139,58 @@
 
 /*** Function Grouping: functions related to process_entries() ***/
 
-static int string_list_df_name_compare(const char *one, const char *two)
+static int sort_dirs_next_to_their_children(const char *one, const char *two)
 {
-	int onelen = strlen(one);
-	int twolen = strlen(two);
+	unsigned char c1, c2;
+
 	/*
-	 * Here we only care that entries for D/F conflicts are
-	 * adjacent, in particular with the file of the D/F conflict
-	 * appearing before files below the corresponding directory.
-	 * The order of the rest of the list is irrelevant for us.
+	 * Here we only care that entries for directories appear adjacent
+	 * to and before files underneath the directory.  We can achieve
+	 * that by pretending to add a trailing slash to every file and
+	 * then sorting.  In other words, we do not want the natural
+	 * sorting of
+	 *     foo
+	 *     foo.txt
+	 *     foo/bar
+	 * Instead, we want "foo" to sort as though it were "foo/", so that
+	 * we instead get
+	 *     foo.txt
+	 *     foo
+	 *     foo/bar
+	 * To achieve this, we basically implement our own strcmp, except that
+	 * if we get to the end of either string instead of comparing NUL to
+	 * another character, we compare '/' to it.
 	 *
-	 * To achieve this, we sort with df_name_compare and provide
-	 * the mode S_IFDIR so that D/F conflicts will sort correctly.
-	 * We use the mode S_IFDIR for everything else for simplicity,
-	 * since in other cases any changes in their order due to
-	 * sorting cause no problems for us.
+	 * If this unusual "sort as though '/' were appended" perplexes
+	 * you, perhaps it will help to note that this is not the final
+	 * sort.  write_tree() will sort again without the trailing slash
+	 * magic, but just on paths immediately under a given tree.
+	 *
+	 * The reason to not use df_name_compare directly was that it was
+	 * just too expensive (we don't have the string lengths handy), so
+	 * it was reimplemented.
 	 */
-	int cmp = df_name_compare(one, onelen, S_IFDIR,
-				  two, twolen, S_IFDIR);
+
 	/*
-	 * Now that 'foo' and 'foo/bar' compare equal, we have to make sure
-	 * that 'foo' comes before 'foo/bar'.
+	 * NOTE: This function will never be called with two equal strings,
+	 * because it is used to sort the keys of a strmap, and strmaps have
+	 * unique keys by construction.  That simplifies our c1==c2 handling
+	 * below.
 	 */
-	if (cmp)
-		return cmp;
-	return onelen - twolen;
+
+	while (*one && (*one == *two)) {
+		one++;
+		two++;
+	}
+
+	c1 = *one ? *one : '/';
+	c2 = *two ? *two : '/';
+
+	if (c1 == c2) {
+		/* Getting here means one is a leading directory of the other */
+		return (*one) ? 1 : -1;
+	} else
+		return c1 - c2;
 }
 
 static int read_oid_strbuf(struct merge_options *opt,
@@ -3184,7 +3604,8 @@
 		 * the directory to remain here, so we need to move this
 		 * path to some new location.
 		 */
-		CALLOC_ARRAY(new_ci, 1);
+		new_ci = mem_pool_calloc(&opt->priv->pool, 1, sizeof(*new_ci));
+
 		/* We don't really want new_ci->merged.result copied, but it'll
 		 * be overwritten below so it doesn't matter.  We also don't
 		 * want any directory mode/oid values copied, but we'll zero
@@ -3237,7 +3658,7 @@
 	 *       above.
 	 */
 	if (ci->match_mask) {
-		ci->merged.clean = 1;
+		ci->merged.clean = !ci->df_conflict && !ci->path_conflict;
 		if (ci->match_mask == 6) {
 			/* stages[1] == stages[2] */
 			ci->merged.result.mode = ci->stages[1].mode;
@@ -3249,6 +3670,8 @@
 
 			ci->merged.result.mode = ci->stages[side].mode;
 			ci->merged.is_null = !ci->merged.result.mode;
+			if (ci->merged.is_null)
+				ci->merged.clean = 1;
 			oidcpy(&ci->merged.result.oid, &ci->stages[side].oid);
 
 			assert(othermask == 2 || othermask == 4);
@@ -3274,7 +3697,8 @@
 			const char *a_path = NULL, *b_path = NULL;
 			int rename_a = 0, rename_b = 0;
 
-			new_ci = xmalloc(sizeof(*new_ci));
+			new_ci = mem_pool_alloc(&opt->priv->pool,
+						sizeof(*new_ci));
 
 			if (S_ISREG(a_mode))
 				rename_a = 1;
@@ -3343,17 +3767,8 @@
 				b_path = path;
 			strmap_put(&opt->priv->paths, b_path, new_ci);
 
-			if (rename_a && rename_b) {
+			if (rename_a && rename_b)
 				strmap_remove(&opt->priv->paths, path, 0);
-				/*
-				 * We removed path from opt->priv->paths.  path
-				 * will also eventually need to be freed, but
-				 * it may still be used by e.g.  ci->pathnames.
-				 * So, store it in another string-list for now.
-				 */
-				string_list_append(&opt->priv->paths_to_free,
-						   path);
-			}
 
 			/*
 			 * Do special handling for b_path since process_entry()
@@ -3421,6 +3836,7 @@
 				   path)) {
 			ci->merged.is_null = 1;
 			ci->merged.clean = 1;
+			assert(!ci->df_conflict && !ci->path_conflict);
 		} else if (ci->path_conflict &&
 			   oideq(&ci->stages[0].oid, &ci->stages[side].oid)) {
 			/*
@@ -3447,6 +3863,7 @@
 		ci->merged.is_null = 1;
 		ci->merged.result.mode = 0;
 		oidcpy(&ci->merged.result.oid, null_oid());
+		assert(!ci->df_conflict);
 		ci->merged.clean = !ci->path_conflict;
 	}
 
@@ -3457,9 +3874,59 @@
 	 */
 	if (!ci->merged.clean)
 		strmap_put(&opt->priv->conflicted, path, ci);
+
+	/* Record metadata for ci->merged in dir_metadata */
 	record_entry_for_tree(dir_metadata, path, &ci->merged);
 }
 
+static void prefetch_for_content_merges(struct merge_options *opt,
+					struct string_list *plist)
+{
+	struct string_list_item *e;
+	struct oid_array to_fetch = OID_ARRAY_INIT;
+
+	if (opt->repo != the_repository || !has_promisor_remote())
+		return;
+
+	for (e = &plist->items[plist->nr-1]; e >= plist->items; --e) {
+		/* char *path = e->string; */
+		struct conflict_info *ci = e->util;
+		int i;
+
+		/* Ignore clean entries */
+		if (ci->merged.clean)
+			continue;
+
+		/* Ignore entries that don't need a content merge */
+		if (ci->match_mask || ci->filemask < 6 ||
+		    !S_ISREG(ci->stages[1].mode) ||
+		    !S_ISREG(ci->stages[2].mode) ||
+		    oideq(&ci->stages[1].oid, &ci->stages[2].oid))
+			continue;
+
+		/* Also don't need content merge if base matches either side */
+		if (ci->filemask == 7 &&
+		    S_ISREG(ci->stages[0].mode) &&
+		    (oideq(&ci->stages[0].oid, &ci->stages[1].oid) ||
+		     oideq(&ci->stages[0].oid, &ci->stages[2].oid)))
+			continue;
+
+		for (i = 0; i < 3; i++) {
+			unsigned side_mask = (1 << i);
+			struct version_info *vi = &ci->stages[i];
+
+			if ((ci->filemask & side_mask) &&
+			    S_ISREG(vi->mode) &&
+			    oid_object_info_extended(opt->repo, &vi->oid, NULL,
+						     OBJECT_INFO_FOR_PREFETCH))
+				oid_array_append(&to_fetch, &vi->oid);
+		}
+	}
+
+	promisor_remote_get_direct(opt->repo, to_fetch.oid, to_fetch.nr);
+	oid_array_clear(&to_fetch);
+}
+
 static void process_entries(struct merge_options *opt,
 			    struct object_id *result_oid)
 {
@@ -3490,7 +3957,7 @@
 	trace2_region_leave("merge", "plist copy", opt->repo);
 
 	trace2_region_enter("merge", "plist special sort", opt->repo);
-	plist.cmp = string_list_df_name_compare;
+	plist.cmp = sort_dirs_next_to_their_children;
 	string_list_sort(&plist);
 	trace2_region_leave("merge", "plist special sort", opt->repo);
 
@@ -3506,6 +3973,7 @@
 	 * the way when it is time to process the file at the same path).
 	 */
 	trace2_region_enter("merge", "processing", opt->repo);
+	prefetch_for_content_merges(opt, &plist);
 	for (entry = &plist.items[plist.nr-1]; entry >= plist.items; --entry) {
 		char *path = entry->string;
 		/*
@@ -3841,6 +4309,7 @@
 {
 	struct rename_info *renames;
 	int i;
+	struct mem_pool *pool = NULL;
 
 	/* Sanity checks on opt */
 	trace2_region_enter("merge", "sanity checks", opt->repo);
@@ -3906,9 +4375,11 @@
 
 	/* Initialization of various renames fields */
 	renames = &opt->priv->renames;
+	mem_pool_init(&opt->priv->pool, 0);
+	pool = &opt->priv->pool;
 	for (i = MERGE_SIDE1; i <= MERGE_SIDE2; i++) {
 		strintmap_init_with_options(&renames->dirs_removed[i],
-					    NOT_RELEVANT, NULL, 0);
+					    NOT_RELEVANT, pool, 0);
 		strmap_init_with_options(&renames->dir_rename_count[i],
 					 NULL, 1);
 		strmap_init_with_options(&renames->dir_renames[i],
@@ -3922,7 +4393,7 @@
 		 */
 		strintmap_init_with_options(&renames->relevant_sources[i],
 					    -1 /* explicitly invalid */,
-					    NULL, 0);
+					    pool, 0);
 		strmap_init_with_options(&renames->cached_pairs[i],
 					 NULL, 1);
 		strset_init_with_options(&renames->cached_irrelevant[i],
@@ -3930,19 +4401,25 @@
 		strset_init_with_options(&renames->cached_target_names[i],
 					 NULL, 0);
 	}
+	for (i = MERGE_SIDE1; i <= MERGE_SIDE2; i++) {
+		strintmap_init_with_options(&renames->deferred[i].possible_trivial_merges,
+					    0, pool, 0);
+		strset_init_with_options(&renames->deferred[i].target_dirs,
+					 pool, 1);
+		renames->deferred[i].trivial_merges_okay = 1; /* 1 == maybe */
+	}
 
 	/*
 	 * Although we initialize opt->priv->paths with strdup_strings=0,
 	 * that's just to avoid making yet another copy of an allocated
 	 * string.  Putting the entry into paths means we are taking
-	 * ownership, so we will later free it.  paths_to_free is similar.
+	 * ownership, so we will later free it.
 	 *
 	 * In contrast, conflicted just has a subset of keys from paths, so
 	 * we don't want to free those (it'd be a duplicate free).
 	 */
-	strmap_init_with_options(&opt->priv->paths, NULL, 0);
-	strmap_init_with_options(&opt->priv->conflicted, NULL, 0);
-	string_list_init(&opt->priv->paths_to_free, 0);
+	strmap_init_with_options(&opt->priv->paths, pool, 0);
+	strmap_init_with_options(&opt->priv->conflicted, pool, 0);
 
 	/*
 	 * keys & strbufs in output will sometimes need to outlive "paths",
@@ -4018,6 +4495,7 @@
 					       opt->subtree_shift);
 	}
 
+redo:
 	trace2_region_enter("merge", "collect_merge_info", opt->repo);
 	if (collect_merge_info(opt, merge_base, side1, side2) != 0) {
 		/*
@@ -4037,6 +4515,12 @@
 	result->clean = detect_and_process_renames(opt, merge_base,
 						   side1, side2);
 	trace2_region_leave("merge", "renames", opt->repo);
+	if (opt->priv->renames.redo_after_renames == 2) {
+		trace2_region_enter("merge", "reset_maps", opt->repo);
+		clear_or_reinit_internal_opts(opt->priv, 1);
+		trace2_region_leave("merge", "reset_maps", opt->repo);
+		goto redo;
+	}
 
 	trace2_region_enter("merge", "process_entries", opt->repo);
 	process_entries(opt, &working_tree_oid);
diff --git a/merge-recursive.c b/merge-recursive.c
index d146bb1..840599f 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -55,15 +55,7 @@
 	a = container_of(eptr, const struct path_hashmap_entry, e);
 	b = container_of(entry_or_key, const struct path_hashmap_entry, e);
 
-	if (ignore_case)
-		return strcasecmp(a->path, key ? key : b->path);
-	else
-		return strcmp(a->path, key ? key : b->path);
-}
-
-static unsigned int path_hash(const char *path)
-{
-	return ignore_case ? strihash(path) : strhash(path);
+	return fspathcmp(a->path, key ? key : b->path);
 }
 
 /*
@@ -121,7 +113,7 @@
 	entry->dir = directory;
 	entry->non_unique_new_dir = 0;
 	strbuf_init(&entry->new_dir, 0);
-	string_list_init(&entry->possible_new_dirs, 0);
+	string_list_init_nodup(&entry->possible_new_dirs);
 }
 
 struct collision_entry {
@@ -167,6 +159,7 @@
 	}
 }
 
+__attribute__((format (printf, 2, 3)))
 static int err(struct merge_options *opt, const char *err, ...)
 {
 	va_list params;
@@ -462,7 +455,7 @@
 	strbuf_addstr(base, path);
 
 	FLEX_ALLOC_MEM(entry, path, base->buf, base->len);
-	hashmap_entry_init(&entry->e, path_hash(entry->path));
+	hashmap_entry_init(&entry->e, fspathhash(entry->path));
 	hashmap_add(&opt->priv->current_file_dir_set, &entry->e);
 
 	strbuf_setlen(base, baselen);
@@ -736,14 +729,14 @@
 
 	base_len = newpath.len;
 	while (hashmap_get_from_hash(&opt->priv->current_file_dir_set,
-				     path_hash(newpath.buf), newpath.buf) ||
+				     fspathhash(newpath.buf), newpath.buf) ||
 	       (!opt->priv->call_depth && file_exists(newpath.buf))) {
 		strbuf_setlen(&newpath, base_len);
 		strbuf_addf(&newpath, "_%d", suffix++);
 	}
 
 	FLEX_ALLOC_MEM(entry, path, newpath.buf, newpath.len);
-	hashmap_entry_init(&entry->e, path_hash(entry->path));
+	hashmap_entry_init(&entry->e, fspathhash(entry->path));
 	hashmap_add(&opt->priv->current_file_dir_set, &entry->e);
 	return strbuf_detach(&newpath, NULL);
 }
@@ -1879,7 +1872,7 @@
 	 */
 	if (opts.detect_rename > DIFF_DETECT_RENAME)
 		opts.detect_rename = DIFF_DETECT_RENAME;
-	opts.rename_limit = (opt->rename_limit >= 0) ? opt->rename_limit : 1000;
+	opts.rename_limit = (opt->rename_limit >= 0) ? opt->rename_limit : 7000;
 	opts.rename_score = opt->rename_score;
 	opts.show_rename_progress = opt->show_rename_progress;
 	opts.output_format = DIFF_FORMAT_NO_OUTPUT;
@@ -2152,7 +2145,7 @@
  *      implicit renaming of files that should be left in place.  (See
  *      testcase 6b in t6043 for details.)
  *   2. Prune directory renames if there are still files left in the
- *      the original directory.  These represent a partial directory rename,
+ *      original directory.  These represent a partial directory rename,
  *      i.e. a rename where only some of the files within the directory
  *      were renamed elsewhere.  (Technically, this could be done earlier
  *      in get_directory_renames(), except that would prevent us from
@@ -2804,12 +2797,19 @@
 			int renamed_stage = a_renames == renames1 ? 2 : 3;
 			int other_stage =   a_renames == renames1 ? 3 : 2;
 
+			/*
+			 * Directory renames have a funny corner case...
+			 */
+			int renamed_to_self = !strcmp(ren1_src, ren1_dst);
+
 			/* BUG: We should only remove ren1_src in the base
 			 * stage and in other_stage (think of rename +
 			 * add-source case).
 			 */
-			remove_file(opt, 1, ren1_src,
-				    renamed_stage == 2 || !was_tracked(opt, ren1_src));
+			if (!renamed_to_self)
+				remove_file(opt, 1, ren1_src,
+					    renamed_stage == 2 ||
+					    !was_tracked(opt, ren1_src));
 
 			oidcpy(&src_other.oid,
 			       &ren1->src_entry->stages[other_stage].oid);
@@ -2823,6 +2823,9 @@
 			    ren1->dir_rename_original_type == 'A') {
 				setup_rename_conflict_info(RENAME_VIA_DIR,
 							   opt, ren1, NULL);
+			} else if (renamed_to_self) {
+				setup_rename_conflict_info(RENAME_NORMAL,
+							   opt, ren1, NULL);
 			} else if (oideq(&src_other.oid, null_oid())) {
 				setup_rename_conflict_info(RENAME_DELETE,
 							   opt, ren1, NULL);
@@ -3180,7 +3183,6 @@
 	struct rename *ren = ci->ren1;
 	struct merge_file_info mfi;
 	int clean;
-	int side = (ren->branch == opt->branch1 ? 2 : 3);
 
 	/* Merge the content and write it out */
 	clean = handle_content_merge(&mfi, opt, path, was_dirty(opt, path),
@@ -3190,9 +3192,7 @@
 	    opt->detect_directory_renames == MERGE_DIRECTORY_RENAMES_CONFLICT &&
 	    ren->dir_rename_original_dest) {
 		if (update_stages(opt, path,
-				  NULL,
-				  side == 2 ? &mfi.blob : NULL,
-				  side == 2 ? NULL : &mfi.blob))
+				  &mfi.blob, &mfi.blob, &mfi.blob))
 			return -1;
 		clean = 0; /* not clean, but conflicted */
 	}
@@ -3703,7 +3703,7 @@
 	}
 
 	CALLOC_ARRAY(opt->priv, 1);
-	string_list_init(&opt->priv->df_conflict_file_set, 1);
+	string_list_init_dup(&opt->priv->df_conflict_file_set);
 	return 0;
 }
 
diff --git a/merge.c b/merge.c
index 5fb88af..6e73688 100644
--- a/merge.c
+++ b/merge.c
@@ -53,7 +53,7 @@
 	struct unpack_trees_options opts;
 	struct tree_desc t[MAX_UNPACK_TREES];
 	int i, nr_trees = 0;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	struct lock_file lock_file = LOCK_INIT;
 
 	refresh_index(r->index, REFRESH_QUIET, NULL, NULL, NULL);
@@ -80,7 +80,6 @@
 	}
 
 	memset(&opts, 0, sizeof(opts));
-	dir_init(&dir);
 	if (overwrite_ignore) {
 		dir.flags |= DIR_SHOW_IGNORED;
 		setup_standard_excludes(&dir);
diff --git a/mergetools/kdiff3 b/mergetools/kdiff3
index 0264ed5..520cb91 100644
--- a/mergetools/kdiff3
+++ b/mergetools/kdiff3
@@ -25,3 +25,12 @@
 exit_code_trustable () {
 	true
 }
+
+translate_merge_tool_path() {
+	if type kdiff3 >/dev/null 2>/dev/null
+	then
+		echo kdiff3
+	else
+		mergetool_find_win32_cmd "kdiff3.exe" "Kdiff3"
+	fi
+}
diff --git a/midx.c b/midx.c
index 21d6a05..321c6fd 100644
--- a/midx.c
+++ b/midx.c
@@ -885,6 +885,11 @@
 static void clear_midx_files_ext(struct repository *r, const char *ext,
 				 unsigned char *keep_hash);
 
+static int midx_checksum_valid(struct multi_pack_index *m)
+{
+	return hashfile_checksum_valid(m->data, m->data_len);
+}
+
 static int write_midx_internal(const char *object_dir, struct multi_pack_index *m,
 			       struct string_list *packs_to_drop,
 			       const char *preferred_pack_name,
@@ -911,6 +916,11 @@
 	else
 		ctx.m = load_multi_pack_index(object_dir, 1);
 
+	if (ctx.m && !midx_checksum_valid(ctx.m)) {
+		warning(_("ignoring existing multi-pack-index; checksum mismatch"));
+		ctx.m = NULL;
+	}
+
 	ctx.nr = 0;
 	ctx.alloc = ctx.m ? ctx.m->num_packs : 16;
 	ctx.info = NULL;
@@ -1162,6 +1172,7 @@
 
 static int verify_midx_error;
 
+__attribute__((format (printf, 1, 2)))
 static void midx_report(const char *fmt, ...)
 {
 	va_list ap;
@@ -1218,6 +1229,9 @@
 		return result;
 	}
 
+	if (!midx_checksum_valid(m))
+		midx_report(_("incorrect checksum"));
+
 	if (flags & MIDX_PROGRESS)
 		progress = start_delayed_progress(_("Looking for referenced packfiles"),
 					  m->num_packs);
diff --git a/notes-merge.c b/notes-merge.c
index 46c1f7c..b4a3a90 100644
--- a/notes-merge.c
+++ b/notes-merge.c
@@ -273,7 +273,7 @@
 		 */
 		if (file_exists(git_path(NOTES_MERGE_WORKTREE)) &&
 		    !is_empty_dir(git_path(NOTES_MERGE_WORKTREE))) {
-			if (advice_resolve_conflict)
+			if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
 				die(_("You have not concluded your previous "
 				    "notes merge (%s exists).\nPlease, use "
 				    "'git notes merge --commit' or 'git notes "
diff --git a/object-file.c b/object-file.c
index dcb1859..a8be899 100644
--- a/object-file.c
+++ b/object-file.c
@@ -1032,12 +1032,26 @@
 	return ret;
 }
 
+const char *mmap_os_err(void)
+{
+	static const char blank[] = "";
+#if defined(__linux__)
+	if (errno == ENOMEM) {
+		/* this continues an existing error message: */
+		static const char enomem[] =
+", check sys.vm.max_map_count and/or RLIMIT_DATA";
+		return enomem;
+	}
+#endif /* OS-specific bits */
+	return blank;
+}
+
 void *xmmap(void *start, size_t length,
 	int prot, int flags, int fd, off_t offset)
 {
 	void *ret = xmmap_gently(start, length, prot, flags, fd, offset);
 	if (ret == MAP_FAILED)
-		die_errno(_("mmap failed"));
+		die_errno(_("mmap failed%s"), mmap_os_err());
 	return ret;
 }
 
@@ -1579,15 +1593,12 @@
 		}
 
 		/* Check if it is a missing object */
-		if (fetch_if_missing && has_promisor_remote() &&
-		    !already_retried && r == the_repository &&
+		if (fetch_if_missing && repo_has_promisor_remote(r) &&
+		    !already_retried &&
 		    !(flags & OBJECT_INFO_SKIP_FETCH_OBJECT)) {
 			/*
 			 * TODO Investigate checking promisor_remote_get_direct()
 			 * TODO return value and stopping on error here.
-			 * TODO Pass a repository struct through
-			 * promisor_remote_get_direct(), such that arbitrary
-			 * repositories work.
 			 */
 			promisor_remote_get_direct(r, real, 1);
 			already_retried = 1;
diff --git a/object-name.c b/object-name.c
index 3263c19..fdff460 100644
--- a/object-name.c
+++ b/object-name.c
@@ -806,7 +806,7 @@
 			refs_found = repo_dwim_ref(r, str, len, &tmp_oid, &real_ref, 0);
 			if (refs_found > 0) {
 				warning(warn_msg, len, str);
-				if (advice_object_name_warning)
+				if (advice_enabled(ADVICE_OBJECT_NAME_WARNING))
 					fprintf(stderr, "%s\n", _(object_name_msg));
 			}
 			free(real_ref);
diff --git a/object-store.h b/object-store.h
index d24915c..b4dc666 100644
--- a/object-store.h
+++ b/object-store.h
@@ -455,6 +455,12 @@
 	 * Visit objects within a pack in packfile order rather than .idx order
 	 */
 	FOR_EACH_OBJECT_PACK_ORDER = (1<<2),
+
+	/* Only iterate over packs that are not marked as kept in-core. */
+	FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS = (1<<3),
+
+	/* Only iterate over packs that do not have .keep files. */
+	FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4),
 };
 
 /*
diff --git a/object.c b/object.c
index 2b3c075..4e85955 100644
--- a/object.c
+++ b/object.c
@@ -185,6 +185,24 @@
 	return obj;
 }
 
+struct object *lookup_object_by_type(struct repository *r,
+			    const struct object_id *oid,
+			    enum object_type type)
+{
+	switch (type) {
+	case OBJ_COMMIT:
+		return (struct object *)lookup_commit(r, oid);
+	case OBJ_TREE:
+		return (struct object *)lookup_tree(r, oid);
+	case OBJ_TAG:
+		return (struct object *)lookup_tag(r, oid);
+	case OBJ_BLOB:
+		return (struct object *)lookup_blob(r, oid);
+	default:
+		die("BUG: unknown object type %d", type);
+	}
+}
+
 struct object *parse_object_buffer(struct repository *r, const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p)
 {
 	struct object *obj;
diff --git a/object.h b/object.h
index 8bca310..549f2d2 100644
--- a/object.h
+++ b/object.h
@@ -75,7 +75,6 @@
  * builtin/fsck.c:           0--3
  * builtin/gc.c:             0
  * builtin/index-pack.c:                                     2021
- * builtin/pack-objects.c:                                   20
  * builtin/reflog.c:                   10--12
  * builtin/show-branch.c:    0-------------------------------------------26
  * builtin/unpack-objects.c:                                 2021
@@ -144,9 +143,27 @@
  */
 struct object *parse_object_buffer(struct repository *r, const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p);
 
-/** Returns the object, with potentially excess memory allocated. **/
+/*
+ * Allocate and return an object struct, even if you do not know the type of
+ * the object. The returned object may have its "type" field set to a real type
+ * (if somebody previously called lookup_blob(), etc), or it may be set to
+ * OBJ_NONE. In the latter case, subsequent calls to lookup_blob(), etc, will
+ * set the type field as appropriate.
+ *
+ * Use this when you do not know the expected type of an object and want to
+ * avoid parsing it for efficiency reasons. Try to avoid it otherwise; it
+ * may allocate excess memory, since the returned object must be as large as
+ * the maximum struct of any type.
+ */
 struct object *lookup_unknown_object(struct repository *r, const struct object_id *oid);
 
+/*
+ * Dispatch to the appropriate lookup_blob(), lookup_commit(), etc, based on
+ * "type".
+ */
+struct object *lookup_object_by_type(struct repository *r, const struct object_id *oid,
+				     enum object_type type);
+
 struct object_list *object_list_insert(struct object *item,
 				       struct object_list **list_p);
 
diff --git a/oidtree.c b/oidtree.c
index 580cab8..0d39389 100644
--- a/oidtree.c
+++ b/oidtree.c
@@ -31,12 +31,19 @@
 void oidtree_insert(struct oidtree *ot, const struct object_id *oid)
 {
 	struct cb_node *on;
+	struct object_id k;
 
 	if (!oid->algo)
 		BUG("oidtree_insert requires oid->algo");
 
 	on = mem_pool_alloc(&ot->mem_pool, sizeof(*on) + sizeof(*oid));
-	oidcpy_with_padding((struct object_id *)on->k, oid);
+
+	/*
+	 * Clear the padding and copy the result in separate steps to
+	 * respect the 4-byte alignment needed by struct object_id.
+	 */
+	oidcpy_with_padding(&k, oid);
+	memcpy(on->k, &k, sizeof(k));
 
 	/*
 	 * n.b. Current callers won't get us duplicates, here.  If a
@@ -68,17 +75,20 @@
 static enum cb_next iter(struct cb_node *n, void *arg)
 {
 	struct oidtree_iter_data *x = arg;
-	const struct object_id *oid = (const struct object_id *)n->k;
+	struct object_id k;
 
-	if (x->algo != GIT_HASH_UNKNOWN && x->algo != oid->algo)
+	/* Copy to provide 4-byte alignment needed by struct object_id. */
+	memcpy(&k, n->k, sizeof(k));
+
+	if (x->algo != GIT_HASH_UNKNOWN && x->algo != k.algo)
 		return CB_CONTINUE;
 
 	if (x->last_nibble_at) {
-		if ((oid->hash[*x->last_nibble_at] ^ x->last_byte) & 0xf0)
+		if ((k.hash[*x->last_nibble_at] ^ x->last_byte) & 0xf0)
 			return CB_CONTINUE;
 	}
 
-	return x->fn(oid, x->arg);
+	return x->fn(&k, x->arg);
 }
 
 void oidtree_each(struct oidtree *ot, const struct object_id *oid,
diff --git a/pack-bitmap.c b/pack-bitmap.c
index d90e1d9..d999616 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -298,6 +298,11 @@
 		return -1;
 	}
 
+	if (!is_pack_valid(packfile)) {
+		close(fd);
+		return -1;
+	}
+
 	bitmap_git->pack = packfile;
 	bitmap_git->map_size = xsize_t(st.st_size);
 	bitmap_git->map = xmmap(NULL, bitmap_git->map_size, PROT_READ, MAP_PRIVATE, fd, 0);
@@ -525,6 +530,22 @@
 	return 1;
 }
 
+static int should_include_obj(struct object *obj, void *_data)
+{
+	struct include_data *data = _data;
+	int bitmap_pos;
+
+	bitmap_pos = bitmap_position(data->bitmap_git, &obj->oid);
+	if (bitmap_pos < 0)
+		return 1;
+	if ((data->seen && bitmap_get(data->seen, bitmap_pos)) ||
+	     bitmap_get(data->base, bitmap_pos)) {
+		obj->flags |= SEEN;
+		return 0;
+	}
+	return 1;
+}
+
 static int add_commit_to_bitmap(struct bitmap_index *bitmap_git,
 				struct bitmap **base,
 				struct commit *commit)
@@ -620,6 +641,7 @@
 		incdata.seen = seen;
 
 		revs->include_check = should_include;
+		revs->include_check_obj = should_include_obj;
 		revs->include_check_data = &incdata;
 
 		if (prepare_revision_walk(revs))
@@ -633,6 +655,7 @@
 					      &show_data, NULL);
 
 		revs->include_check = NULL;
+		revs->include_check_obj = NULL;
 		revs->include_check_data = NULL;
 	}
 
@@ -791,8 +814,9 @@
 	tips = find_tip_objects(bitmap_git, tip_objects, type);
 
 	/*
-	 * We can use the blob type-bitmap to work in whole words
-	 * for the objects that are actually in the bitmapped packfile.
+	 * We can use the type-level bitmap for 'type' to work in whole
+	 * words for the objects that are actually in the bitmapped
+	 * packfile.
 	 */
 	for (i = 0, init_type_iterator(&it, bitmap_git, type);
 	     i < to_filter->word_alloc && ewah_iterator_next(&mask, &it);
@@ -803,9 +827,9 @@
 	}
 
 	/*
-	 * Clear any blobs that weren't in the packfile (and so would not have
-	 * been caught by the loop above. We'll have to check them
-	 * individually.
+	 * Clear any objects that weren't in the packfile (and so would
+	 * not have been caught by the loop above. We'll have to check
+	 * them individually.
 	 */
 	for (i = 0; i < eindex->count; i++) {
 		uint32_t pos = i + bitmap_git->pack->num_objects;
diff --git a/pack-check.c b/pack-check.c
index 4b089fe..c8e560d 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -164,22 +164,13 @@
 
 int verify_pack_index(struct packed_git *p)
 {
-	size_t len;
-	const unsigned char *index_base;
-	git_hash_ctx ctx;
-	unsigned char hash[GIT_MAX_RAWSZ];
 	int err = 0;
 
 	if (open_pack_index(p))
 		return error("packfile %s index not opened", p->pack_name);
-	index_base = p->index_data;
-	len = p->index_size - the_hash_algo->rawsz;
 
 	/* Verify SHA1 sum of the index file */
-	the_hash_algo->init_fn(&ctx);
-	the_hash_algo->update_fn(&ctx, index_base, len);
-	the_hash_algo->final_fn(hash, &ctx);
-	if (!hasheq(hash, index_base + len))
+	if (!hashfile_checksum_valid(p->index_data, p->index_size))
 		err = error("Packfile index for %s hash mismatch",
 			    p->pack_name);
 	return err;
diff --git a/pack-write.c b/pack-write.c
index f1fc3ec..2767b78 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -75,9 +75,7 @@
 			index_name = strbuf_detach(&tmp_file, NULL);
 		} else {
 			unlink(index_name);
-			fd = open(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
-			if (fd < 0)
-				die_errno("unable to create '%s'", index_name);
+			fd = xopen(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
 		}
 		f = hashfd(fd, index_name);
 	}
@@ -256,9 +254,7 @@
 			rev_name = strbuf_detach(&tmp_file, NULL);
 		} else {
 			unlink(rev_name);
-			fd = open(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
-			if (fd < 0)
-				die_errno("unable to create '%s'", rev_name);
+			fd = xopen(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
 		}
 		f = hashfd(fd, rev_name);
 	} else if (flags & WRITE_REV_VERIFY) {
diff --git a/packfile.c b/packfile.c
index 755aa7a..4d0d625 100644
--- a/packfile.c
+++ b/packfile.c
@@ -652,8 +652,8 @@
 				PROT_READ, MAP_PRIVATE,
 				p->pack_fd, win->offset);
 			if (win->base == MAP_FAILED)
-				die_errno("packfile %s cannot be mapped",
-					  p->pack_name);
+				die_errno(_("packfile %s cannot be mapped%s"),
+					  p->pack_name, mmap_os_err());
 			if (!win->offset && win->len == p->pack_size
 				&& !p->do_not_close)
 				close_pack_fd(p);
@@ -2205,6 +2205,12 @@
 		if ((flags & FOR_EACH_OBJECT_PROMISOR_ONLY) &&
 		    !p->pack_promisor)
 			continue;
+		if ((flags & FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS) &&
+		    p->pack_keep_in_core)
+			continue;
+		if ((flags & FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS) &&
+		    p->pack_keep)
+			continue;
 		if (open_pack_index(p)) {
 			pack_errors = 1;
 			continue;
diff --git a/pager.c b/pager.c
index 3d37dd7..52f27a6 100644
--- a/pager.c
+++ b/pager.c
@@ -11,6 +11,10 @@
 static struct child_process pager_process = CHILD_PROCESS_INIT;
 static const char *pager_program;
 
+/* Is the value coming back from term_columns() just a guess? */
+static int term_columns_guessed;
+
+
 static void close_pager_fds(void)
 {
 	/* signal EOF to pager */
@@ -114,7 +118,8 @@
 	{
 		char buf[64];
 		xsnprintf(buf, sizeof(buf), "%d", term_columns());
-		setenv("COLUMNS", buf, 0);
+		if (!term_columns_guessed)
+			setenv("COLUMNS", buf, 0);
 	}
 
 	setenv("GIT_PAGER_IN_USE", "true", 1);
@@ -158,15 +163,20 @@
 		return term_columns_at_startup;
 
 	term_columns_at_startup = 80;
+	term_columns_guessed = 1;
 
 	col_string = getenv("COLUMNS");
-	if (col_string && (n_cols = atoi(col_string)) > 0)
+	if (col_string && (n_cols = atoi(col_string)) > 0) {
 		term_columns_at_startup = n_cols;
+		term_columns_guessed = 0;
+	}
 #ifdef TIOCGWINSZ
 	else {
 		struct winsize ws;
-		if (!ioctl(1, TIOCGWINSZ, &ws) && ws.ws_col)
+		if (!ioctl(1, TIOCGWINSZ, &ws) && ws.ws_col) {
 			term_columns_at_startup = ws.ws_col;
+			term_columns_guessed = 0;
+		}
 	}
 #endif
 
diff --git a/parse-options.c b/parse-options.c
index e6f5676..2abff13 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -585,7 +585,7 @@
 		if (!opts->long_name)
 			continue;
 		if (!show_all &&
-			(opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE)))
+			(opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE | PARSE_OPT_FROM_ALIAS)))
 			continue;
 
 		switch (opts->type) {
diff --git a/path.c b/path.c
index 7bccd83..0bc788e 100644
--- a/path.c
+++ b/path.c
@@ -12,6 +12,7 @@
 #include "packfile.h"
 #include "object-store.h"
 #include "lockfile.h"
+#include "exec-cmd.h"
 
 static int get_st_mode_bits(const char *path, int *mode)
 {
@@ -719,19 +720,25 @@
 }
 
 /*
- * Return a string with ~ and ~user expanded via getpw*.  If buf != NULL,
- * then it is a newly allocated string. Returns NULL on getpw failure or
- * if path is NULL.
+ * Return a string with ~ and ~user expanded via getpw*. Returns NULL on getpw
+ * failure or if path is NULL.
  *
- * If real_home is true, strbuf_realpath($HOME) is used in the expansion.
+ * If real_home is true, strbuf_realpath($HOME) is used in the `~/` expansion.
+ *
+ * If the path starts with `%(prefix)/`, the remainder is interpreted as
+ * relative to where Git is installed, and expanded to the absolute path.
  */
-char *expand_user_path(const char *path, int real_home)
+char *interpolate_path(const char *path, int real_home)
 {
 	struct strbuf user_path = STRBUF_INIT;
 	const char *to_copy = path;
 
 	if (path == NULL)
 		goto return_null;
+
+	if (skip_prefix(path, "%(prefix)/", &path))
+		return system_path(path);
+
 	if (path[0] == '~') {
 		const char *first_slash = strchrnul(path, '/');
 		const char *username = path + 1;
@@ -812,7 +819,7 @@
 		strbuf_add(&validated_path, path, len);
 
 		if (used_path.buf[0] == '~') {
-			char *newpath = expand_user_path(used_path.buf, 0);
+			char *newpath = interpolate_path(used_path.buf, 0);
 			if (!newpath)
 				return NULL;
 			strbuf_attach(&used_path, newpath, strlen(newpath),
diff --git a/pathspec.c b/pathspec.c
index 08f8d3e..44306fd 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -37,8 +37,6 @@
 			num_unmatched++;
 	if (!num_unmatched)
 		return;
-	/* TODO: audit for interaction with sparse-index. */
-	ensure_full_index(istate);
 	for (i = 0; i < istate->cache_nr; i++) {
 		const struct cache_entry *ce = istate->cache[i];
 		if (sw_action == PS_IGNORE_SKIP_WORKTREE && ce_skip_worktree(ce))
diff --git a/pathspec.h b/pathspec.h
index fceebb8..2341dc9 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -108,7 +108,7 @@
  *
  * A similar process is applied when a new pathspec magic is added. The designer
  * lifts the GUARD_PATHSPEC restriction in the functions that support the new
- * magic. At the same time (s)he has to make sure this new feature will be
+ * magic while at the same time making sure this new feature will be
  * caught at parse_pathspec() in commands that cannot handle the new magic in
  * some cases. grepping parse_pathspec() should help.
  */
diff --git a/perl/Git.pm b/perl/Git.pm
index 02eacef..090a7df 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -11,9 +11,6 @@
 use strict;
 use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
 
-use File::Temp ();
-use File::Spec ();
-
 BEGIN {
 
 our ($VERSION, @ISA, @EXPORT, @EXPORT_OK);
@@ -103,12 +100,9 @@
 =cut
 
 
-use Carp qw(carp croak); # but croak is bad - throw instead
+sub carp { require Carp; goto &Carp::carp }
+sub croak { require Carp; goto &Carp::croak }
 use Git::LoadCPAN::Error qw(:try);
-use Cwd qw(abs_path cwd);
-use IPC::Open2 qw(open2);
-use Fcntl qw(SEEK_SET SEEK_CUR);
-use Time::Local qw(timegm);
 }
 
 
@@ -191,13 +185,15 @@
 			$dir = undef;
 		};
 
+		require Cwd;
 		if ($dir) {
+			require File::Spec;
 			File::Spec->file_name_is_absolute($dir) or $dir = $opts{Directory} . '/' . $dir;
-			$opts{Repository} = abs_path($dir);
+			$opts{Repository} = Cwd::abs_path($dir);
 
 			# If --git-dir went ok, this shouldn't die either.
 			my $prefix = $search->command_oneline('rev-parse', '--show-prefix');
-			$dir = abs_path($opts{Directory}) . '/';
+			$dir = Cwd::abs_path($opts{Directory}) . '/';
 			if ($prefix) {
 				if (substr($dir, -length($prefix)) ne $prefix) {
 					throw Error::Simple("rev-parse confused me - $dir does not have trailing $prefix");
@@ -223,7 +219,7 @@
 				throw Error::Simple("fatal: Not a git repository: $dir");
 			}
 
-			$opts{Repository} = abs_path($dir);
+			$opts{Repository} = Cwd::abs_path($dir);
 		}
 
 		delete $opts{Directory};
@@ -408,10 +404,12 @@
 	my $cwd_save = undef;
 	if ($self) {
 		shift;
-		$cwd_save = cwd();
+		require Cwd;
+		$cwd_save = Cwd::getcwd();
 		_setup_git_cmd_env($self);
 	}
-	$pid = open2($in, $out, 'git', @_);
+	require IPC::Open2;
+	$pid = IPC::Open2::open2($in, $out, 'git', @_);
 	chdir($cwd_save) if $cwd_save;
 	return ($pid, $in, $out, join(' ', @_));
 }
@@ -538,7 +536,8 @@
 	my $t = shift || time;
 	my @t = localtime($t);
 	$t[5] += 1900;
-	my $gm = timegm(@t);
+	require Time::Local;
+	my $gm = Time::Local::timegm(@t);
 	my $sign = qw( + + - )[ $gm <=> $t ];
 	return sprintf("%s%02d%02d", $sign, (gmtime(abs($t - $gm)))[2,1]);
 }
@@ -1340,6 +1339,7 @@
 		my $n = $name;
 		$n =~ s/\W/_/g; # no strange chars
 
+		require File::Temp;
 		($$temp_fd, $fname) = File::Temp::tempfile(
 			"Git_${n}_XXXXXX", UNLINK => 1, DIR => $tmpdir,
 			) or throw Error::Simple("couldn't open new temp file");
@@ -1362,9 +1362,9 @@
 
 	truncate $temp_fd, 0
 		or throw Error::Simple("couldn't truncate file");
-	sysseek($temp_fd, 0, SEEK_SET) and seek($temp_fd, 0, SEEK_SET)
+	sysseek($temp_fd, 0, Fcntl::SEEK_SET()) and seek($temp_fd, 0, Fcntl::SEEK_SET())
 		or throw Error::Simple("couldn't seek to beginning of file");
-	sysseek($temp_fd, 0, SEEK_CUR) == 0 and tell($temp_fd) == 0
+	sysseek($temp_fd, 0, Fcntl::SEEK_CUR()) == 0 and tell($temp_fd) == 0
 		or throw Error::Simple("expected file position to be reset");
 }
 
diff --git a/pkt-line.c b/pkt-line.c
index 98304ce..9f63eae 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -103,7 +103,7 @@
 {
 	packet_trace("0002", 4, 1);
 	if (write_in_full(fd, "0002", 4) < 0)
-		die_errno(_("unable to write stateless separator packet"));
+		die_errno(_("unable to write response end packet"));
 }
 
 int packet_flush_gently(int fd)
diff --git a/po/README.md b/po/README.md
index 2fd92cc..dcd8436 100644
--- a/po/README.md
+++ b/po/README.md
@@ -1,5 +1,4 @@
-Core GIT Translations
-=====================
+# Core GIT Translations
 
 This directory holds the translations for the core of Git. This document
 describes how you can contribute to the effort of enhancing the language
@@ -8,14 +7,14 @@
 The localization (l10n) coordinator, Jiang Xin <worldhello.net@gmail.com>,
 coordinates our localization effort in the l10 coordinator repository:
 
-        https://github.com/git-l10n/git-po/
+    https://github.com/git-l10n/git-po/
 
-The two character language translation codes are defined by ISO_639-1, as
+The two character language translation codes are defined by ISO\_639-1, as
 stated in the gettext(1) full manual, appendix A.1, Usual Language Codes.
 
 
-Contributing to an existing translation
----------------------------------------
+## Contributing to an existing translation
+
 As a contributor for a language XX, you should first check TEAMS file in
 this directory to see whether a dedicated repository for your language XX
 exists. Fork the dedicated repository and start to work if it exists.
@@ -28,10 +27,10 @@
 their workflows.
 
 
-Creating a new language translation
------------------------------------
+## Creating a new language translation
+
 If you are the first contributor for the language XX, please fork this
-repository, prepare and/or update the translated message file po/XX.po
+repository, prepare and/or update the translated message file "po/XX.po"
 (described later), and ask the l10n coordinator to pull your work.
 
 If there are multiple contributors for the same language, please first
@@ -40,8 +39,8 @@
 person per language.
 
 
-Core translation
-----------------
+## Core translation
+
 The core translation is the smallest set of work that must be completed
 for a new language translation. Because there are more than 5000 messages
 in the template message file "po/git.pot" that need to be translated,
@@ -51,21 +50,25 @@
 will be generated in "po-core/core.pot" automatically by running a helper
 program named "git-po-helper" (described later).
 
-    git-po-helper init --core XX.po
+```shell
+git-po-helper init --core XX.po
+```
 
 After translating the generated "po-core/XX.po", you can merge it to
 "po/XX.po" using the following commands:
 
-    msgcat po-core/XX.po po/XX.po -s -o /tmp/XX.po
-    mv /tmp/XX.po po/XX.po
-    git-po-helper update XX.po
+```shell
+msgcat po-core/XX.po po/XX.po -s -o /tmp/XX.po
+mv /tmp/XX.po po/XX.po
+git-po-helper update XX.po
+```
 
 Edit "po/XX.po" by hand to fix "fuzzy" messages, which may have misplaced
 translated messages and duplicate messages.
 
 
-Translation Process Flow
-------------------------
+## Translation Process Flow
+
 The overall data-flow looks like this:
 
     +-------------------+            +------------------+
@@ -79,21 +82,20 @@
                                      | Language Team XX |
                                      +------------------+
 
- * Translatable strings are marked in the source file.
- * L10n coordinator pulls from the source (1)
- * L10n coordinator updates the message template po/git.pot
- * Language team pulls from L10n coordinator (2)
- * Language team updates the message file po/XX.po
- * L10n coordinator pulls from Language team (3)
- * L10n coordinator asks the result to be pulled (4).
+- Translatable strings are marked in the source file.
+- L10n coordinator pulls from the source (1)
+- L10n coordinator updates the message template "po/git.pot"
+- Language team pulls from L10n coordinator (2)
+- Language team updates the message file "po/XX.po"
+- L10n coordinator pulls from Language team (3)
+- L10n coordinator asks the result to be pulled (4).
 
 
-Maintaining the po/git.pot file
--------------------------------
+## Maintaining the "po/git.pot" file
 
 (This is done by the l10n coordinator).
 
-The po/git.pot file contains a message catalog extracted from Git's
+The "po/git.pot" file contains a message catalog extracted from Git's
 sources. The l10n coordinator maintains it by adding new translations with
 msginit(1), or update existing ones with msgmerge(1).  In order to update
 the Git sources to extract the messages from, the l10n coordinator is
@@ -105,62 +107,68 @@
 language, but they are not expected to modify it.
 
 
-Initializing a XX.po file
--------------------------
+## Initializing a "XX.po" file
 
 (This is done by the language teams).
 
-If your language XX does not have translated message file po/XX.po yet,
+If your language XX does not have translated message file "po/XX.po" yet,
 you add a translation for the first time by running:
 
-    msginit --locale=XX
+```shell
+msginit --locale=XX
+```
 
-in the po/ directory, where XX is the locale, e.g. "de", "is", "pt_BR",
-"zh_CN", etc.
+in the "po/" directory, where XX is the locale, e.g. "de", "is", "pt\_BR",
+"zh\_CN", etc.
 
-Then edit the automatically generated copyright info in your new XX.po
+Then edit the automatically generated copyright info in your new "XX.po"
 to be correct, e.g. for Icelandic:
 
-    @@ -1,6 +1,6 @@
-    -# Icelandic translations for PACKAGE package.
-    -# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER
-    -# This file is distributed under the same license as the PACKAGE package.
-    +# Icelandic translations for Git.
-    +# Copyright (C) 2010 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-    +# This file is distributed under the same license as the Git package.
-     # Ævar Arnfjörð Bjarmason <avarab@gmail.com>, 2010.
+```diff
+@@ -1,6 +1,6 @@
+-# Icelandic translations for PACKAGE package.
+-# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER
+-# This file is distributed under the same license as the PACKAGE package.
++# Icelandic translations for Git.
++# Copyright (C) 2010 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
++# This file is distributed under the same license as the Git package.
+ # Ævar Arnfjörð Bjarmason <avarab@gmail.com>, 2010.
+```
 
 And change references to PACKAGE VERSION in the PO Header Entry to
 just "Git":
 
-    perl -pi -e 's/(?<="Project-Id-Version: )PACKAGE VERSION/Git/' XX.po
+```shell
+perl -pi -e 's/(?<="Project-Id-Version: )PACKAGE VERSION/Git/' XX.po
+```
 
 Once you are done testing the translation (see below), commit the result
 and ask the l10n coordinator to pull from you.
 
 
-Updating a XX.po file
----------------------
+## Updating a "XX.po" file
 
 (This is done by the language teams).
 
-If you are replacing translation strings in an existing XX.po file to
+If you are replacing translation strings in an existing "XX.po" file to
 improve the translation, just edit the file.
 
-If there's an existing XX.po file for your language, but the repository
-of the l10n coordinator has newer po/git.pot file, you would need to first
+If there's an existing "XX.po" file for your language, but the repository
+of the l10n coordinator has newer "po/git.pot" file, you would need to first
 pull from the l10n coordinator (see the beginning of this document for its
 URL), and then update the existing translation by running:
 
-    msgmerge --add-location --backup=off -U XX.po git.pot
+```shell
+msgmerge --add-location --backup=off -U XX.po git.pot
+```
 
-in the po/ directory, where XX.po is the file you want to update.
+in the "po/" directory, where "XX.po" is the file you want to update.
 
 Once you are done testing the translation (see below), commit the result
 and ask the l10n coordinator to pull from you.
 
-Fuzzy translation
------------------
+
+## Fuzzy translation
 
 Fuzzy translation is a translation marked by comment "fuzzy" to let you
 know that the translation is out of date because the "msgid" has been
@@ -172,14 +180,15 @@
 tag in the comment.
 
 
-Testing your changes
---------------------
+## Testing your changes
 
-(This is done by the language teams, after creating or updating XX.po file).
+(This is done by the language teams, after creating or updating "XX.po" file).
 
 Before you submit your changes go back to the top-level and do:
 
-    make
+```shell
+make
+```
 
 On systems with GNU gettext (i.e. not Solaris) this will compile your
 changed PO file with `msgfmt --check`, the --check option flags many
@@ -188,8 +197,7 @@
 with a newline or not.
 
 
-Marking strings for translation
--------------------------------
+## Marking strings for translation
 
 (This is done by the core developers).
 
@@ -202,132 +210,155 @@
 
 General advice:
 
- - Don't mark everything for translation, only strings which will be
-   read by humans (the porcelain interface) should be translated.
+- Don't mark everything for translation, only strings which will be
+  read by humans (the porcelain interface) should be translated.
 
-   The output from Git's plumbing utilities will primarily be read by
-   programs and would break scripts under non-C locales if it was
-   translated. Plumbing strings should not be translated, since
-   they're part of Git's API.
+  The output from Git's plumbing utilities will primarily be read by
+  programs and would break scripts under non-C locales if it was
+  translated. Plumbing strings should not be translated, since
+  they're part of Git's API.
 
- - Adjust the strings so that they're easy to translate. Most of the
-   advice in `info '(gettext)Preparing Strings'` applies here.
+- Adjust the strings so that they're easy to translate. Most of the
+  advice in `info '(gettext)Preparing Strings'` applies here.
 
- - If something is unclear or ambiguous you can use a "TRANSLATORS"
-   comment to tell the translators what to make of it. These will be
-   extracted by xgettext(1) and put in the po/*.po files, e.g. from
-   git-am.sh:
+- If something is unclear or ambiguous you can use a "TRANSLATORS"
+  comment to tell the translators what to make of it. These will be
+  extracted by xgettext(1) and put in the "po/\*.po" files, e.g. from
+  git-am.sh:
 
-       # TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
-       # in your translation. The program will only accept English
-       # input at this point.
-       gettext "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+  ```shell
+  # TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+  # in your translation. The program will only accept English
+  # input at this point.
+  gettext "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+  ```
 
-   Or in C, from builtin/revert.c:
+  Or in C, from builtin/revert.c:
 
-       /* TRANSLATORS: %s will be "revert" or "cherry-pick" */
-       die(_("%s: Unable to write new index file"), action_name(opts));
+  ```c
+  /* TRANSLATORS: %s will be "revert" or "cherry-pick" */
+  die(_("%s: Unable to write new index file"), action_name(opts));
+  ```
 
 We provide wrappers for C, Shell and Perl programs. Here's how they're
 used:
 
-C:
 
- - Include builtin.h at the top, it'll pull in gettext.h, which
-   defines the gettext interface. Consult with the list if you need to
-   use gettext.h directly.
+### C
 
- - The C interface is a subset of the normal GNU gettext
-   interface. We currently export these functions:
+Include builtin.h at the top, it'll pull in gettext.h, which
+defines the gettext interface. Consult with the list if you need to
+use gettext.h directly.
 
-   - _()
+The C interface is a subset of the normal GNU gettext
+interface. We currently export these functions:
 
-    Mark and translate a string. E.g.:
+- \_()
 
-        printf(_("HEAD is now at %s"), hex);
+  Mark and translate a string. E.g.:
 
-   - Q_()
+  ```c
+  printf(_("HEAD is now at %s"), hex);
+  ```
 
-    Mark and translate a plural string. E.g.:
+- Q\_()
 
-        printf(Q_("%d commit", "%d commits", number_of_commits));
+  Mark and translate a plural string. E.g.:
 
-    This is just a wrapper for the ngettext() function.
+  ```c
+  printf(Q_("%d commit", "%d commits", number_of_commits));
+  ```
 
-   - N_()
+  This is just a wrapper for the ngettext() function.
 
-    A no-op pass-through macro for marking strings inside static
-    initializations, e.g.:
+- N\_()
 
-        static const char *reset_type_names[] = {
-            N_("mixed"), N_("soft"), N_("hard"), N_("merge"), N_("keep"), NULL
-        };
+  A no-op pass-through macro for marking strings inside static
+  initializations, e.g.:
 
-    And then, later:
+  ```c
+  static const char *reset_type_names[] = {
+      N_("mixed"), N_("soft"), N_("hard"), N_("merge"), N_("keep"), NULL
+  };
+  ```
 
-        die(_("%s reset is not allowed in a bare repository"),
-               _(reset_type_names[reset_type]));
+  And then, later:
 
-    Here _() couldn't have statically determined what the translation
-    string will be, but since it was already marked for translation
-    with N_() the look-up in the message catalog will succeed.
+  ```c
+  die(_("%s reset is not allowed in a bare repository"),
+        _(reset_type_names[reset_type]));
+  ```
 
-Shell:
-
- - The Git gettext shell interface is just a wrapper for
-   gettext.sh. Import it right after git-sh-setup like this:
-
-       . git-sh-setup
-       . git-sh-i18n
-
-   And then use the gettext or eval_gettext functions:
-
-       # For constant interface messages:
-       gettext "A message for the user"; echo
-
-       # To interpolate variables:
-       details="oh noes"
-       eval_gettext "An error occurred: \$details"; echo
-
-   In addition we have wrappers for messages that end with a trailing
-   newline. I.e. you could write the above as:
-
-       # For constant interface messages:
-       gettextln "A message for the user"
-
-       # To interpolate variables:
-       details="oh noes"
-       eval_gettextln "An error occurred: \$details"
-
-   More documentation about the interface is available in the GNU info
-   page: `info '(gettext)sh'`. Looking at git-am.sh (the first shell
-   command to be translated) for examples is also useful:
-
-       git log --reverse -p --grep=i18n git-am.sh
-
-Perl:
-
- - The Git::I18N module provides a limited subset of the
-   Locale::Messages functionality, e.g.:
-
-       use Git::I18N;
-       print __("Welcome to Git!\n");
-       printf __("The following error occurred: %s\n"), $error;
-
-   Run `perldoc perl/Git/I18N.pm` for more info.
+  Here `_()` couldn't have statically determined what the translation
+  string will be, but since it was already marked for translation
+  with `N_()` the look-up in the message catalog will succeed.
 
 
-Testing marked strings
-----------------------
+### Shell
 
-Git's tests are run under LANG=C LC_ALL=C. So the tests do not need be
+The Git gettext shell interface is just a wrapper for
+gettext.sh. Import it right after git-sh-setup like this:
+
+```shell
+. git-sh-setup
+. git-sh-i18n
+```
+
+And then use the `gettext` or `eval_gettext` functions:
+
+```shell
+# For constant interface messages:
+gettext "A message for the user"; echo
+
+# To interpolate variables:
+details="oh noes"
+eval_gettext "An error occurred: \$details"; echo
+```
+
+In addition we have wrappers for messages that end with a trailing
+newline. I.e. you could write the above as:
+
+```shell
+# For constant interface messages:
+gettextln "A message for the user"
+
+# To interpolate variables:
+details="oh noes"
+eval_gettextln "An error occurred: \$details"
+```
+
+More documentation about the interface is available in the GNU info
+page: `info '(gettext)sh'`. Looking at git-am.sh (the first shell
+command to be translated) for examples is also useful:
+
+```shell
+git log --reverse -p --grep=i18n git-am.sh
+```
+
+
+### Perl
+
+The Git::I18N module provides a limited subset of the
+Locale::Messages functionality, e.g.:
+
+```perl
+use Git::I18N;
+print __("Welcome to Git!\n");
+printf __("The following error occurred: %s\n"), $error;
+```
+
+Run `perldoc perl/Git/I18N.pm` for more info.
+
+
+## Testing marked strings
+
+Git's tests are run under `LANG=C LC_ALL=C`. So the tests do not need be
 changed to account for translations as they're added.
 
 
-PO helper
----------
+## PO helper
 
-To make the maintenance of XX.po easier, the l10n coordinator and l10n
+To make the maintenance of "XX.po" easier, the l10n coordinator and l10n
 team leaders can use a helper program named "git-po-helper". It is a
 wrapper to gettext suite, specifically written for the purpose of Git
 l10n workflow.
@@ -337,64 +368,84 @@
 
 Usage for git-po-helper:
 
-  - To start a new language translation:
+- To start a new language translation:
 
-        git-po-helper init XX.po
+  ```shell
+  git-po-helper init XX.po
+  ```
 
-  - To update your XX.po file:
+- To update your "XX.po" file:
 
-        git-po-helper update XX.po
+  ```shell
+  git-po-helper update XX.po
+  ```
 
-  - To check commit log and syntax of XX.po:
+- To check commit log and syntax of "XX.po":
 
-        git-po-helper check-po XX.po
-        git-po-helper check-commits
+  ```shell
+  git-po-helper check-po XX.po
+  git-po-helper check-commits
+  ```
 
 Run "git-po-helper" without arguments to show usage.
 
 
-Conventions
------------
+## Conventions
 
 There are some conventions that l10n contributors must follow:
 
-1. The subject of each l10n commit should be prefixed with "l10n: ".
-2. Do not use non-ASCII characters in the subject of a commit.
-3. The length of commit subject (first line of the commit log) should
-   be less than 50 characters, and the length of other lines of the
-   commit log should be no more than 72 characters.
-4. Add "Signed-off-by" trailer to your commit log, like other commits
-   in Git. You can automatically add the trailer by committing with
-   the following command:
+- The subject of each l10n commit should be prefixed with "l10n: ".
 
-        git commit -s
+- Do not use non-ASCII characters in the subject of a commit.
 
-5. Check syntax with "msgfmt" or the following command before creating
-   your commit:
+- The length of commit subject (first line of the commit log) should
+  be less than 50 characters, and the length of other lines of the
+  commit log should be no more than 72 characters.
 
-        git-po-helper check-po <XX.po>
+- Add "Signed-off-by" trailer to your commit log, like other commits
+  in Git. You can automatically add the trailer by committing with
+  the following command:
 
-6. Squash trivial commits to make history clear.
-7. DO NOT edit files outside "po/" directory.
-8. Other subsystems ("git-gui", "gitk", and Git itself) have their
-   own workflow. See [Documentation/SubmittingPatches][] for
-   instructions on how to contribute patches to these subsystems.
+  ```shell
+  git commit -s
+  ```
+
+- Check syntax with "msgfmt" or the following command before creating
+  your commit:
+
+  ```shell
+  git-po-helper check-po <XX.po>
+  ```
+
+- Squash trivial commits to make history clear.
+
+- DO NOT edit files outside "po/" directory.
+
+- Other subsystems ("git-gui", "gitk", and Git itself) have their
+  own workflow. See [Documentation/SubmittingPatches][] for
+  instructions on how to contribute patches to these subsystems.
+
 
 To contribute for a new l10n language, contributor should follow
 additional conventions:
 
-1. Initialize proper filename of the "XX.po" file conforming to
-   iso-639 and iso-3166.
-2. Must complete a minimal translation based on the "po-core/core.pot"
-   template. Using the following command to initialize the minimal
-   "po-core/XX.po" file:
+- Initialize proper filename of the "XX.po" file conforming to
+  iso-639 and iso-3166.
 
-        git-po-helper init --core <your-language>
+- Must complete a minimal translation based on the "po-core/core.pot"
+  template. Using the following command to initialize the minimal
+  "po-core/XX.po" file:
 
-3. Add a new entry in the "po/TEAMS" file with proper format, and check
-   the syntax of "po/TEAMS" by runnning the following command:
+  ```shell
+  git-po-helper init --core <your-language>
+  ```
 
-        git-po-helper team --check
+- Add a new entry in the "po/TEAMS" file with proper format, and check
+  the syntax of "po/TEAMS" by running the following command:
+
+  ```shell
+  git-po-helper team --check
+  ```
 
 
 [git-po-helper/README]: https://github.com/git-l10n/git-po-helper#readme
diff --git a/po/TEAMS b/po/TEAMS
index bf52d3a..66ad06b 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -73,11 +73,11 @@
 Members:	Nguyễn Thái Ngọc Duy <pclouds AT gmail.com>
 
 Language:	zh_CN (Simplified Chinese)
-Repository:	https://github.com/jiangxin/git/
-Leader:		Jiang Xin <worldhello.net AT gmail.com>
+Repository:	https://github.com/fangyi-zhou/git/
+Leader:		Fangyi Zhou <me AT fangyi.io>
 Members:	Ray Chen <oldsharp AT gmail.com>
 		依云 <lilydjwg AT gmail.com>
-		Fangyi Zhou <me AT fangyi.io>
+		Jiang Xin <worldhello.net AT gmail.com>
 
 Language:	zh_TW (Traditional Chinese)
 Repository:	https://github.com/l10n-tw/git-po
diff --git a/po/bg.po b/po/bg.po
index 212f7ac..905eb8e 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -177,8 +177,8 @@
 msgstr ""
 "Project-Id-Version: git 2.31\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-28 17:44+0200\n"
+"POT-Creation-Date: 2021-08-03 17:06+0800\n"
+"PO-Revision-Date: 2021-08-06 13:38+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
 "Language: bg\n"
@@ -193,7 +193,7 @@
 msgstr "Неуспешен анализ — „%s“."
 
 #: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "индексът не може да бъде прочетен"
@@ -222,7 +222,7 @@
 msgid "could not stage '%s'"
 msgstr "неуспешно добавяне в индекса на „%s“"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3707
 msgid "could not write index"
 msgstr "индексът не може да бъде записан"
 
@@ -280,12 +280,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "пренебрегване на неслятото: „%s“"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Само двоични файлове са променени.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Няма промени.\n"
@@ -362,11 +362,11 @@
 msgid "(empty) select nothing"
 msgstr "(празно) без избор на нищо"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "●●● Команди ●●●"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Избор на следващо действие"
 
@@ -378,12 +378,12 @@
 msgid "unstaged"
 msgstr "извън индекса"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:408 builtin/submodule--helper.c:1818
+#: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
+#: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "път"
@@ -393,7 +393,7 @@
 msgstr "индексът не може да бъде обновен"
 
 #
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Изход.\n"
@@ -713,34 +713,34 @@
 "a — прилагане на това и всички следващи парчета от файла\n"
 "d — без прилагане на това и всички следващи парчета от файла\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "заглавната част на парчето „%.*s“ не може да се анализира"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "заглавната част на оцветеното парче „%.*s“ не може да се анализира"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "разликата не може да се анализира"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "оцветената разлика не може да се анализира"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "неуспешно изпълнение на „%s“"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "изходът от „interactive.diffFilter“ не напасва"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -748,7 +748,7 @@
 "Обработените редове на изхода на ползвания филтър, трябва\n"
 "да се отнасят едно към едно спрямо редовете на входа."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -757,7 +757,7 @@
 "очаква се ред №%d от контекста в\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -770,11 +770,11 @@
 "    не завършва с:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Ръчно редактиране на парчета код — отдолу има подсказка.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -789,7 +789,7 @@
 "Редовете, които започват с „%c“ ще бъдат пропуснати.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -799,11 +799,11 @@
 "изтриете всички редове от парчето код, то ще бъде оставено непроменено, а\n"
 "редактирането — отказано.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "заглавната част парчето не може да се анализира"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "неуспешно изпълнение на „git apply --cached“"
 
@@ -819,7 +819,7 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
@@ -827,19 +827,19 @@
 "редактирането? (текущите редакции ще се отменят при отказ!): „y“ (да)/ "
 "„n“ (не)? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Избраните парчета не може да се добавят в индекса!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Да се приложат ли към работното дърво? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Нищо не е приложено.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -861,69 +861,69 @@
 "e — ръчно редактиране на текущото парче\n"
 "? — извеждане не помощта\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Няма друго парче преди това"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Няма друго парче след това"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Няма други парчета"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "към кое парче да се придвижи (за повече варианти натиснете „enter“)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "към кое парче да се придвижи? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Неправилен номер: „%s“"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Има само %d парче."
 msgstr[1] "Има само %d парчета."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Няма други парчета за търсене"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "да се търси с регулярен израз? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Сгрешен регулярен израз „%s“: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Никое парче не напасва на регулярния израз"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Това парче не може да бъде разделено"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Разделяне на %d парчета."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Това парче не може да бъде редактирано"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "неуспешно изпълнение на „git apply“"
 
@@ -1382,8 +1382,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "„%s“ е от вид „%o“, а се очакваше „%o“"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "неправилен път: „%s“"
@@ -1477,7 +1477,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "не може да се добави запис в кеша за „%s“"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "в „%s“ не може да се пише"
@@ -1569,7 +1569,7 @@
 msgstr[1] ""
 "Добавени са %d реда след корекцията на грешките в знаците за интервали."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Новият индекс не може да бъде записан"
 
@@ -1581,7 +1581,7 @@
 msgid "apply changes matching the given path"
 msgstr "прилагане на промените напасващи на дадения път"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "БРОЙ"
 
@@ -1650,9 +1650,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "да се осигури контекст от поне такъв БРОЙ съвпадащи редове"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "действие"
@@ -1683,8 +1683,8 @@
 msgstr "позволяване на застъпващи се парчета"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "повече подробности"
 
@@ -1696,7 +1696,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "без доверяване на номерата на редовете в заглавните части на парчетата"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "НАЧАЛНА_ДИРЕКТОРИЯ"
 
@@ -1738,7 +1738,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "твърде дълъг път (%d знака, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "грешка при декомпресиране с „deflate“ (%d)"
@@ -1773,13 +1773,13 @@
 msgstr "обектът „%s“ не може да бъде прочетен"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
 #: builtin/merge.c:1143
 #, c-format
 msgid "could not read '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "пътят „%s“ не съвпада с никой файл"
@@ -1821,7 +1821,7 @@
 msgid "archive format"
 msgstr "ФОРМАТ на архива"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "ПРЕФИКС"
 
@@ -1832,7 +1832,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1863,7 +1863,7 @@
 msgstr "извеждане на списъка с поддържаните формати"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
 msgid "repo"
 msgstr "хранилище"
 
@@ -1871,7 +1871,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "получаване на архива от отдалеченото ХРАНИЛИЩЕ"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "команда"
@@ -2057,11 +2057,11 @@
 "Едновременното задаване на опциите „--reverse“ и „--first-parent“ изисква "
 "указването на крайно подаване"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2274 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "неуспешно настройване на обхождането на версиите"
 
@@ -2220,119 +2220,119 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "Указателят „HEAD“ на работното дърво „%s“ не е обновен"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "непознат алгоритъм за контролни суми за пратки „%s“"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "непозната възможност „%s“"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "Файлът „%s“ не изглежда да е пратка на git версия 2 или 3"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "непозната заглавна част: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "„%s“ не може да се отвори"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "В хранилището липсват следните необходими подавания:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "за проверката на пратка е необходимо хранилище"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Пратката съдържа следния указател:"
 msgstr[1] "Пратката съдържа следните %d указатели:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Пратката съдържа пълна история."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Пратката изисква следния указател:"
 msgstr[1] "Пратката изисква следните %d указатели:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "неуспешно дублиране на дескриптора на пратката с „dup“"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Командата „git pack-objects“ не може да бъде стартирана"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "Командата „git pack-objects“ не завърши успешно"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 "указателят „%s“ не е бил включен поради опциите зададени на „git rev-list“"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "неподдържана версия на индекса %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "пратка %d не може да се запише с алгоритъм %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "непознат аргумент: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Създаването на празна пратка е невъзможно."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "файлът „%s“ не може да бъде създаден"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "командата „git index-pack“ не завърши успешно"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "идентификаторът за краен откъс се явява по-рано от очакваното"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "неправилно отместване на откъс/и %<PRIx64> и %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "повтарящ се идентификатор на откъс %<PRIx32>"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "ненулев идентификатор за краен откъс %<PRIx32>"
@@ -2404,12 +2404,12 @@
 "графът с подаванията изисква генериране на данни за отместването, но такива "
 "липсват"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "подаването не може да бъде анализирано: %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "видът на обекта „%s“ не може да бъде определен"
@@ -2471,7 +2471,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "правилният брой на базовите идентификатори не може да се запише"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "родителските директории на „%s“ не може да бъдат създадени"
@@ -2522,63 +2522,63 @@
 msgid "too many commits to write graph"
 msgstr "прекалено много подавания за записване на гра̀фа"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "графът с подаванията е с грешна сума за проверка — вероятно е повреден"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 "неправилна подредба на обектите по идентификатор в гра̀фа с подаванията: „%s“ "
 "е преди „%s“, а не трябва"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "неправилна стойност за откъс в гра̀фа с подаванията: fanout[%d] = %u, а "
 "трябва да е %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "подаване „%s“ в гра̀фа с подаванията не може да се анализира"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Проверка на подаванията в гра̀фа"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "подаване „%s“ в базата от данни към гра̀фа с подаванията не може да се "
 "анализира"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "идентификаторът на обект за кореновото дърво за подаване „%s“ в гра̀фа с "
 "подаванията е „%s“, а трябва да е „%s“"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено дълъг"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "родителят на „%s“ в гра̀фа с подаванията е „%s“, а трябва да е „%s“"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено къс"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2586,7 +2586,7 @@
 "номерът на поколението на подаване „%s“ в гра̀фа с подаванията е 0, а другаде "
 "не е"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2594,22 +2594,22 @@
 "номерът на поколението на подаване „%s“ в гра̀фа с подаванията не е 0, а "
 "другаде е"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 "номерът на поколението на подаване „%s“ в гра̀фа с подаванията е %<PRIuMAX> < "
 "%<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "датата на подаване на „%s“ в гра̀фа с подаванията е %<PRIuMAX>, а трябва да е "
 "%<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "„%s“ не може да се анализира"
@@ -2900,7 +2900,7 @@
 "„simple“ (клонът със същото име, от който се издърпва), „upstream“ (клонът, "
 "от който се издърпва) или „current“ (клонът със същото име)"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "неправилно ниво на компресиране при пакетиране: %d"
@@ -2920,112 +2920,112 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "обектът-BLOB „%s“ с конфигурации не може да бъде открит"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "„%s“ не може да бъде анализиран"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "неправилни настройки от командния ред"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "неочаквана грешка при изчитането на конфигурационните файлове"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Неправилен %s: „%s“"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "стойността на „splitIndex.maxPercentChange“ трябва да е между 1 и 100, а не "
 "%d"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "неразпозната стойност „%s“ от командния ред"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "неправилна настройка „%s“ във файла „%s“ на ред №%d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "неправилно име на раздел: „%s“"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "зададени са няколко стойности за „%s“"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "новият конфигурационен файл „%s“ не може да бъде запазен"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "конфигурационният файл „%s“ не може да бъде заключен"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "отваряне на „%s“"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "неправилен шаблон: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "неправилен конфигурационен файл: „%s“"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "неуспешно изпълнение на „fstat“ върху „%s“"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
+msgid "unable to mmap '%s'%s"
+msgstr "неуспешно изпълнение на „mmap“ върху „%s“%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "неуспешна смяна на права с „chmod“ върху „%s“"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "конфигурационният файл „%s“ не може да бъде записан"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "„%s“ не може да се зададе да е „%s“"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "„%s“ не може да се премахне"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "неправилно име на раздел: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "липсва стойност за „%s“"
@@ -3209,7 +3209,7 @@
 msgid "unable to fork"
 msgstr "неуспешно създаване на процес"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Проверка на свързаността"
 
@@ -3484,36 +3484,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "Отбелязани са %d групи, работата приключи.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "непозната стойност за опцията „--diff-merges“: „%s“"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "опцията „--merge-base“ не работи с диапазони"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "опцията „--merge-base“ работи само с подавания"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "Указателят „HEAD“ не може да бъде получен"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "липсва база за сливане"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "много бази за сливане"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [ОПЦИЯ…] ПЪТ ПЪТ"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3577,38 +3577,53 @@
 "Грешки в настройката „diff.dirstat“:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr ""
 "външната програма за разлики завърши неуспешно.  Спиране на работата при „%s“"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "опциите „--name-only“, „--name-status“, „--check“ и „-s“ са несъвместими "
 "една с друга"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "опциите „-G“, „-S“ и „--find-object“ са несъвместими една с друга"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"опциите „-G“ и „--pickaxe-regex“ са несъвместими една с друга.  Пробвайте „--"
+"pickaxe-regex“ със „-S“"
+
+#: diff.c:4643
+msgid ""
+"---pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"опциите „--pickaxe-all“ и „--find-object“ са несъвместими една с друга.  "
+"Пробвайте „--pickaxe-all“ с „-G“ и „-S“"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "опцията „--follow“ изисква точно един път"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "неправилна стойност за „--stat“: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "опцията „%s“ очаква число за аргумент"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3617,44 +3632,44 @@
 "Неразпознат параметър към опцията „--dirstat/-X“:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "непознат вид промяна: „%c“ в „--diff-filter=%s“"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "непозната стойност след „ws-error-highlight=%.*s“"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "„%s“ не може да се открие"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 "опцията „%s“ изисква стойности за МИНИМАЛЕН_%%_ПРОМЯНА_ЗА_ИЗТОЧНИК_/"
 "МАКСИМАЛЕН_%%_ПРОМЯНА_ЗА_ЗАМЯНА от"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "опцията „%s“ изисква знак, а не: „%s“"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "неправилен аргумент за „--color-moved“: „%s“"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "неправилен режим „%s“ за „ --color-moved-ws“"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3663,158 +3678,158 @@
 "Майерс), „minimal“ (минимизиране на разликите), „patience“ (пасианс) и "
 "„histogram“ (хистограмен)"
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "неправилен аргумент към „%s“"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "неправилен регулярен израз подаден към „-I“: „%s“"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "неразпознат параметър към опцията „--submodule“: „%s“"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "неправилен аргумент към „--word-diff“: „%s“"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Формат на изхода за разликите"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "създаване на кръпки"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "без извеждане на разликите"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "БРОЙ"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "файловете с разлики да са с контекст с такъв БРОЙ редове"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "файловете с разлики да са в суров формат"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "псевдоним на „-p --stat“"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "псевдоним на „-p --stat“"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "„--stat“ във формат за четене от програма"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "извеждане само на последния ред на „--stat“"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "ПАРАМЕТЪР_1, ПАРАМЕТЪР_2, …"
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "извеждане на разпределението на промените за всяка поддиректория"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "псевдоним на „--dirstat=cumulative“"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "псевдоним на „--dirstat=ФАЙЛОВЕ,ПАРАМЕТЪР_1,ПАРАМЕТЪР_2,…“"
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "предупреждаване, ако промените водят до маркери за конфликт или грешки в "
 "празните знаци"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "съкратено резюме на създадените, преименуваните и файловете с промяна на "
 "режима на достъп"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "извеждане само на имената на променените файлове"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "извеждане само на имената и статистиката за променените файлове"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "ШИРОЧИНА[,ИМЕ-ШИРОЧИНА[,БРОЙ]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "извеждане на статистика за промените"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "ШИРОЧИНА"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "статистика с такава ШИРОЧИНА за промените"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "статистика за промените с такава ШИРОЧИНА на имената"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "статистика за промените с такава ШИРОЧИНА на гра̀фа"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "БРОЙ"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "ограничаване на БРОя на редовете в статистиката за промените"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "кратко резюме в статистиката за промените"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "извеждане на двоична разлика във вид за прилагане"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "показване на пълните имена на обекти в редовете за индекса при вариантите "
 "преди и след промяната"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "разлики в цвят"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "ВИД"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3822,7 +3837,7 @@
 "грешките в празните знаци да се указват в редовете за контекста, вариантите "
 "преди и след разликата,"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3830,261 +3845,261 @@
 "без преименуване на пътищата.  Да се използват нулеви байтове за разделители "
 "на полета в изхода при ползване на опцията „--raw“ или „--numstat“"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "ПРЕФИКС"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "префикс вместо „a/“ за източник"
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "префикс вместо „b/“ за цел"
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "добавяне на допълнителен префикс за всеки ред на изхода"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "без префикс за източника и целта"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "извеждане на контекст между последователните парчета с разлики от указания "
 "БРОЙ редове"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "ЗНАК"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "знак вместо „+“ за нов вариант на ред"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "знак вместо „-“ за стар вариант на ред"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "знак вместо „ “ за контекст"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Настройки за разлики с преименуване"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "МИНИМАЛЕН_%_ПРОМЯНА_ЗА_ИЗТОЧНИК[/МАКСИМАЛEН_%_ПРОМЯНА_ЗА_ЗАМЯНА]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "заместване на пълните промени с последователност от изтриване и създаване"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "засичане на преименуванията"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "без предварителен вариант при изтриване"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "засичане на копиранията"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "търсене на копирано и от непроменените файлове"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "без търсене на преименувания"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "празни обекти като източник при преименувания"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 "продължаване на извеждането на историята — без отрязването при преименувания "
 "на файл"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 "без засичане на преименувания/копирания, ако броят им надвишава тази стойност"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Опции към алгоритъма за разлики"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "търсене на възможно най-малка разлика"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "без промени в празните знаци при сравняване на редове"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "без промени в празните знаци"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "без промени в празните знаци в края на редовете"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "без промени в знаците за край на ред"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "без промени в редовете, които са изцяло от празни знаци"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "РЕГУЛЯРЕН_ИЗРАЗ"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "без промени в редовете, които напасват РЕГУЛЯРНия_ИЗРАЗ"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "евристика за преместване на границите на парчетата за улесняване на четенето"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "разлика чрез алгоритъм за подредба като пасианс"
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "разлика по хистограмния алгоритъм"
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "АЛГОРИТЪМ"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "избор на АЛГОРИТЪМа за разлики"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "ТЕКСТ"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "разлика чрез алгоритъма със закотвяне"
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "РЕЖИМ"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "разлика по думи, като се ползва този РЕЖИМ за отделянето на променените думи"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "РЕГУЛЯРЕН_ИЗРАЗ за разделяне по думи"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "псевдоним на „--word-diff=color --word-diff-regex=РЕГУЛЯРЕН_ИЗРАЗ“"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "различен цвят за извеждане на преместените редове"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 "режим за прескачането на празните знаци при задаването на „--color-moved“"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Други опции за разлики"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "при изпълнение от поддиректория да се пренебрегват разликите извън нея и да "
 "се ползват относителни пътища"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "обработка на всички файлове като текстови"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "размяна на двата входа — обръщане на разликата"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 "завършване с код за състояние 1 при наличието на разлики, а в противен "
 "случай — с 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "без всякакъв изход от програмата"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "позволяване на изпълнение на външна помощна програма за разлики"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "изпълнение на външни програми-филтри при сравнението на двоични файлове"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "КОГА"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "игнориране на промените в подмодулите при извеждането на разликите"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "ФОРМАТ"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "начин за извеждане на промените в подмодулите"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "без включване в индекса на записите, добавени с „git add -N“"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "включване в индекса на записите, добавени с „git add -N“"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "НИЗ"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "търсене на разлики, които променят броя на поява на указаните низове"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -4092,69 +4107,69 @@
 "търсене на разлики, които променят броя на поява на низовете, които напасват "
 "на регулярния израз"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "извеждане на всички промени с „-G“/„-S“"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "НИЗът към „-S“ да се тълкува като разширен регулярен израз по POSIX"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "управление на подредбата на файловете в изхода"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "ПЪТ"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "първо извеждане на промяната в указания път"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "прескачане на изхода към указания път"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "ИДЕНТИФИКАТОР_НА_ОБЕКТ"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "търсене на разлики, които променят броя на поява на указания обект"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)…[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "избор на файловете по вид разлика"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "ФАЙЛ"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Изход към указания файл"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"търсенето на преименувания на обекти съчетани с промени се прескача поради "
-"многото файлове."
+"пълното търсене на преименувания на обекти се прескача поради многото "
+"файлове."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "установени са само точните копия на променените пътища поради многото "
 "файлове."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -4165,7 +4180,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "файлът с подредбата на съответствията „%s“ не може да бъде прочетен"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1510
 msgid "Performing inexact rename detection"
 msgstr "Търсене на преименувания на обекти съчетани с промени"
 
@@ -4174,62 +4189,62 @@
 msgid "No such path '%s' in the diff"
 msgstr "Няма път на име „%s“ в разликата"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "пътят „%s“ не съвпада с никой файл в git"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "непознат шаблон: „%s“"
 
-#: dir.c:777 dir.c:791
+#: dir.c:792 dir.c:806
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "непознат отрицателен шаблон: „%s“"
 
-#: dir.c:809
+#: dir.c:824
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "файлът определящ частичността на изтегленото хранилище може да има проблем: "
 "шаблонът „%s“ се повтаря"
 
-#: dir.c:819
+#: dir.c:834
 msgid "disabling cone pattern matching"
 msgstr "изключване на пътеводното напасване"
 
-#: dir.c:1206
+#: dir.c:1221
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "„%s“ не може да се ползва за игнорираните файлове (като gitignore)"
 
-#: dir.c:2314
+#: dir.c:2358
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "директорията „%s“ не може да бъде отворена"
 
-#: dir.c:2614
+#: dir.c:2660
 msgid "failed to get kernel name and information"
 msgstr "името и версията на ядрото не бяха получени"
 
-#: dir.c:2738
+#: dir.c:2784
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 "кешът за неследените файлове е изключен на тази система или местоположение"
 
-#: dir.c:3543
+#: dir.c:3617
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "файлът с индекса е повреден в хранилището „%s“"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3664 dir.c:3669
 #, c-format
 msgid "could not create directories for %s"
 msgstr "директориите за „%s“ не може да бъдат създадени"
 
-#: dir.c:3624
+#: dir.c:3698
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "директорията на git не може да се мигрира от „%s“ до „%s“"
@@ -4239,11 +4254,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "Подсказка: чака се редакторът ви да затвори файла …%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Филтриране на съдържанието"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "неуспешно изпълнение на „stat“ върху файла „%s“"
@@ -4419,7 +4434,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "клонираното хранилище е плитко, затова няма да се клонира."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: неуспешно доставяне."
 
@@ -4441,7 +4456,7 @@
 msgid "Server supports filter"
 msgstr "Сървърът поддържа филтри"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "невъзможно писане към отдалечено хранилище"
 
@@ -4500,24 +4515,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: очаква се пакет за край на отговора"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "отдалеченото хранилище не изпрати всички необходими обекти."
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "неочаквано състояние за готовност от отдалечено хранилище"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "такъв отдалечен указател няма: %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Сървърът не позволява заявка за необявен обект „%s“"
@@ -4537,7 +4552,7 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr "прескачане на неправилния цвят „%.*s“ в „log.graphColors“"
 
 #: grep.c:531
@@ -4548,18 +4563,18 @@
 "зададеният шаблон съдържа нулев знак (идва от -f „ФАЙЛ“).  Това се поддържа "
 "в комбинация с „-P“ само при ползването на „PCRE v2“"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "„%s“: изчитането върна по-малко байтове от очакваното"
@@ -4805,7 +4820,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "„%s“ не е правилна стойност за вид на обект в „object:type=ВИД“"
 
 #: list-objects-filter-options.c:124
@@ -4853,7 +4868,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "обект „%s“ в дървото „%s“ е отбелязан като BLOB, но не е"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "кореновото дърво за подаване „%s“ не може да се зареди"
@@ -4900,34 +4915,34 @@
 msgid "bad action '%s' for '%s'"
 msgstr "неправилно действие „%s“ за „%s“"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1228 merge-recursive.c:1206
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Неуспешно сливане на подмодула „%s“ (не е изтеглен)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1237 merge-recursive.c:1213
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Неуспешно сливане на подмодула „%s“ (няма подавания)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1246 merge-recursive.c:1220
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 "Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
 "подаванията)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1256 merge-ort.c:1263
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Бележка: Превъртане на подмодула „%s“ към „%s“"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1284
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "Неуспешно сливане на подмодула „%s“"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1291
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4936,7 +4951,7 @@
 "Неуспешно сливане на подмодула „%s“, но е открито възможно решение:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1295 merge-recursive.c:1274
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4952,7 +4967,7 @@
 "\n"
 "Това приема предложеното.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1308
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4961,21 +4976,21 @@
 "Неуспешно сливане на подмодула „%s“, но са открити множество решения:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1527 merge-recursive.c:1363
 msgid "Failed to execute internal merge"
 msgstr "Неуспешно вътрешно сливане"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1532 merge-recursive.c:1368
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "„%s“ не може да се добави в базата с данни"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1539 merge-recursive.c:1401
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Автоматично сливане на „%s“"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:1678 merge-recursive.c:2123
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4984,7 +4999,7 @@
 "КОНФЛИКТ (косвено преименуване на директория): следният файл или директория "
 "„%s“ не позволяват косвеното преименуване на следния път/ища: %s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:1688 merge-recursive.c:2133
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4994,7 +5009,7 @@
 "съответства на „%s“.  Косвено преименуване на директория води до поставянето "
 "на тези пътища там: %s."
 
-#: merge-ort.c:1634
+#: merge-ort.c:1746
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -5005,7 +5020,7 @@
 "да се преименува „%s“, защото е преместен в няколко нови директории, без "
 "никоя от тях да е по-честа цел."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:1900 merge-recursive.c:2469
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -5014,7 +5029,7 @@
 "ПРЕДУПРЕЖДЕНИЕ: прескачане на преименуването на „%s“ на „%s“ в „%s“, защото "
 "„%s“ също е с променено име."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2044 merge-recursive.c:3252
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -5023,7 +5038,7 @@
 "Обновен път: „%s“ е добавен в „%s“ в директория, която е преименувана в "
 "„%s“.  Обектът се мести в „%s“."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2051 merge-recursive.c:3259
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -5032,7 +5047,7 @@
 "Обновен път: „%s“ е преименуван на „%s“ в „%s“ в директория, която е "
 "преименувана в „%s“.  Обектът се мести в „%s“."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2064 merge-recursive.c:3255
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -5041,7 +5056,7 @@
 "КОНФЛИКТ (места на файлове): „%s“ е добавен в „%s“ в директория, която е "
 "преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2072 merge-recursive.c:3262
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -5050,14 +5065,14 @@
 "КОНФЛИКТ (места на файлове): „%s“ е преименуван на „%s“ в „%s“ в директория, "
 "която е преименувана в „%s“.  Предложението е да преместите обекта в „%s“."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2228
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон „%s“ "
 "и на „%s“ в „%s“."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2323
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -5068,24 +5083,24 @@
 "има и промени в съдържанието, а и има съвпадение на пътя.  Може да се "
 "получат вложени маркери за конфликт."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2342 merge-ort.c:2366
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
 "е изтрит в „%s“."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:2819 merge-recursive.c:3013
 #, c-format
 msgid "cannot read object %s"
 msgstr "обектът „%s“ не може да се прочете"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:2822 merge-recursive.c:3016
 #, c-format
 msgid "object %s is not a blob"
 msgstr "обектът „%s“ не е BLOB"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -5094,7 +5109,7 @@
 "КОНФЛИКТ (файл/директория): директория на мястото на „%s“ от „%s“, вместо "
 "това се извършва преместване в „%s“."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3326
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -5103,7 +5118,7 @@
 "КОНФЛИКТ (различни видове): „%s“ е различен вид обект в двата варианта.  И "
 "двата се преименуват, за да може всичко да е отразено."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3333
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -5112,24 +5127,24 @@
 "КОНФЛИКТ (различни видове): „%s“ е различен вид обект в двата варианта.  "
 "Извършва се преименуване в единия, за да може всичко да е отразено."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3433 merge-recursive.c:3092
 msgid "content"
 msgstr "съдържание"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3435 merge-recursive.c:3096
 msgid "add/add"
 msgstr "добавяне/добавяне"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3437 merge-recursive.c:3141
 msgid "submodule"
 msgstr "ПОДМОДУЛ"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3439 merge-recursive.c:3142
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3470
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -5138,7 +5153,7 @@
 "КОНФЛИКТ (промяна/изтриване): „%s“ е изтрит в %s, а е променен в %s.  Версия "
 "%s на „%s“ е оставена в дървото."
 
-#: merge-ort.c:3433
+#: merge-ort.c:3757
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -5150,12 +5165,12 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4116
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "неуспешно събиране на информацията за сливането на „%s“, „%s“ и „%s“"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3707
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -5164,113 +5179,113 @@
 "Сливането ще презапише локалните промени на тези файлове:\n"
 "    %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3473 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Вече е обновено."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:357
 msgid "(bad commit)\n"
 msgstr "(лошо подаване)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:380
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr ""
 "неуспешно изпълнение на „add_cacheinfo“ за пътя „%s“.  Сливането е "
 "преустановено."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:389
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 "неуспешно изпълнение на „add_cacheinfo“ за обновяването на пътя „%s“.  "
 "Сливането е преустановено."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:877
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "грешка при създаването на пътя „%s“%s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:888
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:902 merge-recursive.c:921
 msgid ": perhaps a D/F conflict?"
 msgstr ": възможно е да има конфликт директория/файл."
 
-#: merge-recursive.c:910
+#: merge-recursive.c:911
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr ""
 "преустановяване на действието, за да не се изтрие неследеният файл „%s“"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:952 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "обектът „%s“ (%s) не може да бъде прочетен"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:957
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:982
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "„%s“ не може да се отвори: %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:993
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "неуспешно създаване на символната връзка „%s“: %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:998
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr ""
 "не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1228 merge-recursive.c:1240
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Превъртане на подмодула „%s“ до следното подаване:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1231 merge-recursive.c:1243
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Превъртане на подмодула „%s“"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1266
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
 "от подаванията)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1270
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1271
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr ""
 "Открито е сливане, което може да решава проблема със сливането на "
 "подмодула:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1283
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1425
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5279,7 +5294,7 @@
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s.  Версия %s на „%s“ "
 "е оставена в дървото."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1502
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5288,7 +5303,7 @@
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
 "%s.  Версия %s на „%s“ е оставена в дървото."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5297,7 +5312,7 @@
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s.  Версия %s на „%s“ "
 "е оставена в дървото: %s."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1514
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5306,45 +5321,45 @@
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
 "%s.  Версия %s на „%s“ е оставена в дървото: %s."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1549
 msgid "rename"
 msgstr "преименуване"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1549
 msgid "renamed"
 msgstr "преименуван"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1600 merge-recursive.c:2506 merge-recursive.c:3169
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Преустановяване на действието, за да не се изгуби промененият „%s“"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1610
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 "Отказ да се загуби неследеният файл „%s“, защото е на място, където пречи."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1668
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
 "„%s“ е добавен в „%s“"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1699
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "„%s“ е директория в „%s“, затова се добавя като „%s“"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1704
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 "Преустановяване на действието, за да не се изгуби неследеният файл „%s“.  "
 "Вместо него се добавя „%s“"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1731
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5353,18 +5368,18 @@
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“/%s."
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1736
 msgid " (left unresolved)"
 msgstr " (некоригиран конфликт)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1828
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2091
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5375,7 +5390,7 @@
 "постави „%s“, защото няколко нови директории поделят съдържанието на "
 "директория „%s“, като никоя не съдържа мнозинство от файловете ѝ."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2225
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5384,80 +5399,80 @@
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3080
 msgid "modify"
 msgstr "промяна"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3080
 msgid "modified"
 msgstr "променен"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3119
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3172
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Добавяне като „%s“"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3376
 #, c-format
 msgid "Removing %s"
 msgstr "Изтриване на „%s“"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3399
 msgid "file/directory"
 msgstr "файл/директория"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3404
 msgid "directory/file"
 msgstr "директория/файл"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3411
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "КОНФЛИКТ (%s): Съществува директория на име „%s“ в „%s“.  Добавяне на „%s“ "
 "като „%s“"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3420
 #, c-format
 msgid "Adding %s"
 msgstr "Добавяне на „%s“"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3429
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "КОНФЛИКТ (добавяне/добавяне): Конфликт при сливане на „%s“"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3482
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "неуспешно сливане на дърветата „%s“ и „%s“"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3576
 msgid "Merging:"
 msgstr "Сливане:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3589
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "открит е %u общ предшественик:"
 msgstr[1] "открити са %u общи предшественици:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3639
 msgid "merge returned no commit"
 msgstr "сливането не върна подаване"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3804
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Неуспешен анализ на обекта „%s“"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3822 builtin/merge.c:716 builtin/merge.c:900
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Индексът не може да бъде прочетен"
@@ -5466,7 +5481,7 @@
 msgid "failed to read the cache"
 msgstr "кешът не може да бъде прочетен"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
 #: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
@@ -5548,52 +5563,61 @@
 msgid "failed to locate object %d in packfile"
 msgstr "обект %d в пакетния файл липсва"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "файлът за индекса не може да бъде съхранен"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+"индексът за множество пакети се прескача, защото контролната сума не съвпада"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Добавяне на пакетни файлове към индекс за множество пакети"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "пакетният файл за триене „%s“ не може да се открие"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "непознат предпочитан пакет: %s"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "предпочитаният пакет „%s“ е остарял"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "няма пакетни файлове за индексиране"
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "файлът „%s“ не може да бъде изтрит"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "индексът за множество пакети не може да бъде изчистен при „%s“"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "файлът с индекса за множество пакети, но не може да бъде анализиран"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "неправилна контролна сума"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Търсене на указаните пакетни файлове"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
@@ -5601,58 +5625,58 @@
 "неправилна подредба на откъси (OID fanout): fanout[%d] = %<PRIx32> > "
 "%<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "във файла с индекса за множество пакети няма идентификатори на обекти"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 "Проверка на подредбата на идентификатори на обекти във файл с индекс към "
 "множество пакетни файлове"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 "неправилна подредба на откъси (OID lookup): oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Подредба на обектите по пакетни файлове"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Проверка на отместването на обекти"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "записът в пакета за обекта oid[%d] = %s не може да бъде зареден"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "индексът на пакета „%s“ не може да бъде зареден"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "неправилно отместване на обект за oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Преброяване на свързаните обекти"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Търсене и изтриване на несвързаните пакетни файлове"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "командата „pack-objects“ не може да бъде стартирана"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "командата „pack-objects“ не може да бъде завършена"
 
@@ -5726,272 +5750,273 @@
 "директорията за обекти „%s“ не съществува, проверете „.git/objects/info/"
 "alternates“"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "алтернативният път към обекти не може да бъде нормализиран: „%s“"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 "%s: алтернативните хранилища за обекти се пренебрегват поради прекалено "
 "дълбоко влагане"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "директорията за обекти „%s“ не може да бъде нормализирана"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "заключващият файл за алтернативите не може да се отвори с „fdopen“"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "файлът с алтернативите не може да бъде прочетен"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "новият файл с алтернативите не може да бъде преместен на мястото му"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "пътят „%s“ не съществува."
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "все още не се поддържа еталонно хранилище „%s“ като свързано."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "еталонното хранилище „%s“ не е локално"
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "еталонното хранилище „%s“ е плитко"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "еталонното хранилище „%s“ е с присаждане"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "неправилен ред при анализа на алтернативните указатели: „%s“"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 "неуспешен опит за „mmap“ %<PRIuMAX>, което е над позволеното %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "неуспешно изпълнение на „mmap“"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "неуспешно изпълнение на „mmap“%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "файлът с обектите „%s“ е празен"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "непакетираният обект „%s“ е повреден"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "грешни данни в края на непакетирания обект „%s“"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "неправилен вид обект"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 "заглавната част „%s“ не може да се разпакетира с опцията „--allow-unknown-"
 "type“"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 "заглавната част „%s“ не може да се анализира с опцията „--allow-unknown-type“"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "заглавната част на „%s“ не може да бъде анализирана"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "обектът „%s“ не може да бъде прочетен"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "заместителят „%s“ на „%s“ не може да бъде открит"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "непакетираният обект „%s“ (в „%s“) е повреден"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "файлът „%s“ не може да бъде записан"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "правата за достъп до „%s“ не може да бъдат зададени"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "грешка при запис на файл"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "грешка при затварянето на файла с непакетиран обект"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 "няма права за добавяне на обект към базата от данни на хранилището „%s“"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "не може да бъде създаден временен файл"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "грешка при записа на файла с непакетиран обект"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "новият обект „%s“ не може да се компресира с „deflate“: %d"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "неуспешно приключване на „deflate“ върху „%s“: %d"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "грешка поради нестабилния източник данни за обектите „%s“"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "неуспешно задаване на време на достъп/създаване чрез „utime“ на „%s“"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "обектът за „%s“ не може да се прочете"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "повредено подаване"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "повреден етикет"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "грешка при четене по време на индексиране на „%s“"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "непълно прочитане по време на индексиране на „%s“"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "„%s“ не може да се вмъкне в базата от данни"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "неподдържан вид файл: „%s“"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "„%s“ е неправилен обект"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "„%s“ е неправилен обект от вид „%s“"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "обектът „%s“ не може да бъде отворен"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "неправилна контролна сума за „%s“ (трябва да е %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "заглавната част на „%s“ не може да бъде анализирана"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "съдържанието на „%s“ не може да бъде разпакетирано"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "късият идентификатор на обект „%s“ не е еднозначен"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Възможностите са:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -6015,22 +6040,22 @@
 "\n"
 "    git config advice.objectNameWarning false"
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "журналът за „%.*s“ стига само до „%s“"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "журналът за „%.*s“ съдържа само %d записа"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "пътят „%s“ съществува на диска, но не и в „%.*s“"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -6039,12 +6064,12 @@
 "пътят „%s“ съществува на диска, но не е в „%s“\n"
 "Пробвайте с „%.*s:%s“, което е същото като „%.*s:./%s“."
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "пътят „%s“ не съществува в „%.*s“"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -6053,7 +6078,7 @@
 "пътят „%s“ е в индекса, но не версия %d\n"
 "Пробвайте с „%d:%s“."
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -6062,21 +6087,21 @@
 "пътят „%s“ е в индекса, но не в „%s“\n"
 "Пробвайте с „%d:%s“, което е същото като „%d:./%s“."
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "пътят „%s“ съществува на диска, но не е в индекса"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "пътят „%s“ не съществува нито на диска, нито в индекса"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "относителен път не може да се ползва извън работното дърво"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "неправилно име на обект: „%.*s“"
@@ -6091,27 +6116,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "обектът „%s“ е %s, а не %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "обектът „%s“ е непознат вид: %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "обектът „%s“ не може да бъде анализиран"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "разлика в контролната сума: „%s“"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "размерът на „%s“ не може да бъде получен"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "използваното място за „%s“ не може да бъде получено"
@@ -6167,14 +6192,19 @@
 msgstr ""
 "отместване преди края на пакетния файл (възможно е индексът да е повреден)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "не може да се изпълни „mmap“ върху пакетния файл „%s“%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 "отместване преди началото на индекса на пакетния файл „%s“ (възможно е "
 "индексът да е повреден)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -6383,8 +6413,8 @@
 msgstr "разделящият пакет не може да се запише"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "разделящият пакет без запазване на състояние не може да се запише"
+msgid "unable to write response end packet"
+msgstr "пакетът за край на отговора не може да се запише"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6445,21 +6475,21 @@
 msgid "unable to parse --pretty format"
 msgstr "аргументът към опцията „--pretty“ не може да се анализира"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "хранилище-гарант: неуспешно създаване на процес за доставяне"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "хранилище-гарант: не може да се пише към процеса за доставяне"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 "хранилище-гарант: стандартният вход на процеса за доставяне не може да се "
 "затвори"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr ""
@@ -6482,7 +6512,7 @@
 msgstr ""
 "изходът от командата за журнала с подавания „log“ не може да се прочете"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "подаването „%s“ не може да бъде анализирано"
@@ -6501,66 +6531,66 @@
 msgid "could not parse git header '%.*s'"
 msgstr "заглавната част на git „%.*s“ не може да се анализира"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "неуспешно търсене на разлика"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "опциите „--left-only“ и „--right-only“ са несъвместими"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "журналът с подаванията на „%s“ не може да бъде анализиран"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 "няма да бъде добавен псевдоним за файл „%s“ („%s“ вече съществува в индекса)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "в базата от данни за обектите не може да се създаде празен обект-BLOB"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 "%s: може да добавяте само обикновени файлове, символни връзки и директории "
 "на git"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "не е изтеглено подаване в „%s“"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "файлът „%s“ не може да бъде индексиран"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "„%s“ не може да се добави в индекса"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "„stat“ не може да се изпълни върху „%s“"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "„%s“ съществува и като файл, и като директория"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Обновяване на индекса"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6569,7 +6599,7 @@
 "Зададена е неправилна стойност на настройката „index.version“.\n"
 "Ще се ползва версия %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6579,146 +6609,146 @@
 "„GIT_INDEX_VERSION“.\n"
 "Ще се ползва версия %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "неправилен подпис: „0x%08x“"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "неправилна версия на индекса %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "неправилен подпис за контролна сума по SHA1 на файла на индекса"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 "индексът ползва разширение „%.4s“, което не се поддържа от тази версия на git"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "игнориране на разширението „%.4s“"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "непознат формат на запис в индекса: „0x%08x“"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "неправилно име на поле в индекса близо до пътя „%s“"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "неподредени записи в индекса"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "множество записи за слетия файл „%s“"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "неподредени записи за „%s“"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:331
 msgid "index file corrupt"
 msgstr "файлът с индекса е повреден"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "не може да се създаде нишка за зареждане на обектите от кеша: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "не може да се изчака нишка за зареждане на обектите от кеша: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: неуспешно отваряне на файла на индекса"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: не може да се получи информация за отворения индекс със „stat“"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: файлът на индекса е по-малък от очакваното"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: неуспешно заделяне на съответстваща памет чрез „mmap“ на индекса"
+msgid "%s: unable to map index file%s"
+msgstr "%s: неуспешно изпълнение на „mmap“ върху индексния файл%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr ""
 "не може да се създаде нишка за зареждане на разширенията на индекса: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr ""
 "не може да се създаде нишка за зареждане на разширенията на индекса: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "споделеният индекс „%s“ не може да се обнови"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "грешки в индекса — в „%2$s“ се очаква „%1$s“, а бе получено „%3$s“"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3031 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
 #, c-format
 msgid "could not close '%s'"
 msgstr "„%s“ не може да се затвори"
 
-#: read-cache.c:3138
+#: read-cache.c:3074
 msgid "failed to convert to a sparse-index"
 msgstr "индексът не може да бъде превърнат в частичен"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3145 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "неуспешно изпълнение на „stat“ върху „%s“"
 
-#: read-cache.c:3222
+#: read-cache.c:3158
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "не може да се отвори директорията на git: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3170
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "неуспешно изтриване на „%s“"
 
-#: read-cache.c:3263
+#: read-cache.c:3199
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "правата за достъп до „%s“ не може да бъдат поправени"
 
-#: read-cache.c:3412
+#: read-cache.c:3348
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: не може да се премине към етап №0"
@@ -6841,8 +6871,8 @@
 "Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "„%s“ не може да се запише"
@@ -6886,7 +6916,7 @@
 msgid "could not read '%s'."
 msgstr "от „%s“ не може да се чете."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "изтрит"
 
@@ -6905,247 +6935,247 @@
 msgid "ahead %d, behind %d"
 msgstr "напред с %d, назад с %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "очакван формат: %%(color:ЦВЯТ)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "непознат цвят: %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "очаква се цяло число за „refname:lstrip=%s“"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "очаква се цяло число за „refname:rstrip=%s“"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "непознат аргумент за „%%(%s)“: %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) не приема аргументи"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "непознат аргумент за %%(objectsize): %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) не приема аргументи"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) не приема аргументи"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "непознат аргумент за %%(subject): %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "очаква се %%(trailers:КЛЮЧ=СТОЙНОСТ)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "непознат аргумент „%%(trailers)“: %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "очаква се положителна стойност за „contents:lines=%s“"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "непознат аргумент за %%(contents): %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "очаква се положителна стойност за „%s“ в %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "непознат аргумент „%s“ в %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "непозната опция за е-поща: %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "очакван формат: %%(align:ШИРОЧИНА,ПОЗИЦИЯ)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "непозната позиция: %s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "непозната широчина: %s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "непознат аргумент за %%(align): %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "очаква се положителна широчина с лексемата „%%(align)“"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "непознат аргумент за „%%(if)“: %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "неправилно име на обект: „%.*s“"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "непознато име на обект: „%.*s“"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr "не е хранилище на git, а полето „%.*s“ изисква достъп данни на обектни"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "формат: лексемата %%(if) е използвана без съответната ѝ %%(then)"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "формат: лексемата %%(then) е използвана без съответната ѝ %%(if)"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "формат: лексемата %%(then) е използвана повече от един път"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "формат: лексемата %%(then) е използвана след %%(else)"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(if)"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(then)"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "формат: лексемата %%(else) е използвана повече от един път"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "формат: лексемата %%(end) е използвана без съответната ѝ"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "неправилен форматиращ низ „%s“"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(извън клон, пребазиране на „%s“)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(извън клон, пребазиране на несвързан указател „HEAD“ при „%s“)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(извън клон, двоично търсене от „%s“)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(указателят „HEAD“ не е свързан и е при „%s“)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(указателят „HEAD“ не е свързан и е отделѐн от „%s“)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(извън клон)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "обектът „%s“ липсва за „%s“"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "неуспешно анализиране чрез „parse_object_buffer“ на „%s“ за „%s“"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "обект със сгрешен формат при „%s“"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "игнориране на указателя с грешно име „%s“"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "игнориране на повредения указател „%s“"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2498
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "грешка във форма̀та: липсва лексемата %%(end)"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2592
 #, c-format
 msgid "malformed object name %s"
 msgstr "неправилно име на обект „%s“"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2597
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "опцията „%s“ не сочи към подаване"
@@ -7606,8 +7636,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "Предварителният вариант на „%s“ е запазен"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "Директорията „%s“ не може да бъде създадена"
@@ -7645,40 +7675,40 @@
 msgid "could not determine HEAD revision"
 msgstr "не може да се определи към какво да сочи указателят „HEAD“"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:70 reset.c:76 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "дървото, сочено от „%s“, не може да бъде открито"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "опцията „--unpacked=ПАКЕТЕН_ФАЙЛ“ вече не се поддържа"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "Текущият клон е повреден"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "Текущият клон „%s“ е без подавания "
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 "опцията „-L“ поддържа единствено форматирането на разликите според опциите „-"
 "p“ и „-s“"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "неуспешно отваряне на „/dev/null“"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "не може да се създаде асинхронна нишка: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7717,16 +7747,16 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "неуспешно договаряне на изтласкване, но се продължава с изтласкването"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr ""
 "отсрещната страна не поддържа алгоритъма за контролни суми на това хранилище"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr "отсрещната страна не поддържа изтласкване с опцията „--signed“"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -7734,11 +7764,11 @@
 "отсрещната страна не поддържа изтласкване с опцията „--signed“, затова не се "
 "използва сертификат"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "получаващата страна не поддържа изтласкване с опцията „--atomic“"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "отсрещната страна не поддържа опции при изтласкване"
 
@@ -7798,7 +7828,7 @@
 msgstr "„%s“ не може да се заключи"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "в „%s“ не може да се пише"
@@ -7809,7 +7839,7 @@
 msgstr "краят на ред не може да се запише в „%s“"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "„%s“ не може да се завърши"
@@ -7859,8 +7889,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "цитирането на стойността на „%s“ не може да бъде изчистено"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1140 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "файлът не може да бъде прочетен: „%s“"
@@ -8013,7 +8043,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1702
 msgid "could not parse HEAD commit"
 msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
 
@@ -8021,7 +8051,7 @@
 msgid "unable to parse commit author"
 msgstr "авторът на подаването не може да бъде анализиран"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:706
 msgid "git write-tree failed to write a tree"
 msgstr "Командата „git write-tree“ не успя да запише обект-дърво"
 
@@ -8039,12 +8069,13 @@
 msgid "corrupt author: missing date information"
 msgstr "повредена информация за автор: липсва дата"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1816 builtin/merge.c:909
 #: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "обектът за подаването не може да бъде записан"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "„%s“ не може да се обнови"
@@ -8096,7 +8127,7 @@
 msgid "need a HEAD to fixup"
 msgstr "За вкарване в предходното подаване ви трябва указател „HEAD“"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "указателят „HEAD“ не може да се прочете"
 
@@ -8239,7 +8270,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "неправилен файл с опции: „%s“"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "зададено е празно множество от подавания"
 
@@ -8272,7 +8303,7 @@
 msgid "could not lock HEAD"
 msgstr "указателят „HEAD“ не може да се заключи"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr ""
 "в момента не се извършва отбиране на подавания или пребазиране на клона"
@@ -8287,7 +8318,7 @@
 "действието не може да бъде преустановено, когато сте на клон, който тепърва "
 "предстои да бъде създаден"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "„%s“ не може да бъде отворен"
@@ -8340,7 +8371,7 @@
 "\n"
 "    git %s --continue"
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "указателят „HEAD“ не може да бъде прочетен"
 
@@ -8424,90 +8455,90 @@
 "    git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "неправилно име на етикет: „%.*s“"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "запазване на фалшиво начално подаване"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "запазване на подаването, в което другите да се вкарат"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "„%s“ не може да бъде открит"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "без текущо подаване не може да се слива"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "„%.*s“ не може да се анализира"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "няма нищо за сливане: „%.*s“"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "върху начално подаване не може да се извърши множествено сливане"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "съобщението за подаване към „%s“ не може да бъде получено"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "сливането на „%.*s“ не може даже да започне"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "сливане: новият индекс не може да бъде запазен"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Не може да се скатае автоматично"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Неочакван резултат при скатаване: „%s“"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Директорията за „%s“ не може да бъде създадена"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Автоматично скатано: „%s“\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "неуспешно изпълнение на „git reset --hard“"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Автоматично скатаното е приложено.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "„%s“ не може да бъде запазен"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8519,29 +8550,29 @@
 "„git stash pop“ или да ги изхвърлите чрез „git stash drop“, когато "
 "поискате.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "Конфликти при прилагането на автоматично скатаното."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Вече има запис за автоматично скатано, затова се създава нов запис."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "указателят „HEAD“ не може да се отдели"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Бе спряно при „HEAD“\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Бе спряно при „%s“\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8564,58 +8595,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Пребазиране (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Спиране при „%s“…  %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "непозната команда %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "указателят за „orig-head“ не може да се прочете"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "указателят за „onto“ не може да се прочете"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "„HEAD“ не може да бъде обновен до „%s“"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Успешно пребазиране и обновяване на „%s“.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "не може да пребазирате, защото има промени, които не са в индекса."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "несъществуващо подаване не може да се поправи"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "неправилен файл: „%s“"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "неправилно съдържание: „%s“"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8625,50 +8656,50 @@
 "В работното дърво има неподадени промени.  Първо ги подайте, а след това\n"
 "отново изпълнете „git rebase --continue“."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "файлът „%s“ не може да бъде записан"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "промените в индекса не може да бъдат подадени."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: не може да се отбере „%s“"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: неправилна версия"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "първоначалното подаване не може да бъде отменено"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: неподдържани опции"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script: грешка при подготовката на версии"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "няма какво да се прави"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "излишните команди за отбиране не бяха прескочени"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "скриптът вече е преподреден."
 
@@ -8723,94 +8754,98 @@
 msgstr ""
 "не може да се зададе текуща работна директория при неправилни настройки"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "тази команда трябва да се изпълни в работно дърво"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Очаква се версия на хранилището на git <= %d, а не %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "открити са непознати разширения в хранилището:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "открито е непознато разширение в хранилището:"
+msgstr[1] "открити са непознати разширения в хранилището:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "версията на хранилището е 0, но са открити разширения за версия 1:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "версията на хранилището е 0, но е открито разширение за версия 1:"
+msgstr[1] "версията на хранилището е 0, но са открити разширения за версия 1:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "„%s“ не може да се отвори"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "прекалено голям файл „.git“: „%s“"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "грешка при прочитане на „%s“"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "неправилен формат на gitfile: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "липсва път в gitfile: „%s“"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "не е хранилище на Git: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "„%s“ е прекалено голям"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "не е хранилище на git: „%s“"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "не може да се влезе в директорията „%s“"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "процесът не може да се върне към предишната работна директория"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "не може да бъде получена информация чрез „stat“ за „%*s%s%s“"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Текущата работна директория не може да бъде прочетена"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "не може да се влезе в директорията „%s“"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 "нито тази, нито която и да е от по-горните директории, не е хранилище на "
 "git: %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8821,7 +8856,7 @@
 "Git работи в рамките на една файлова система, защото променливата на средата "
 "„GIT_DISCOVERY_ACROSS_FILESYSTEM“ не е зададена."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8831,27 +8866,27 @@
 "(0%.3o).\n"
 "Собственикът на файла трябва да има права за писане и четене."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "неуспешно изпълнение на „open“ или „dup“ върху „/dev/null“"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "неуспешно създаване на процес чрез „fork“"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "неуспешно изпълнение на „setsid“"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "опит за ползване на частичен индекс без пътеводен режим"
 
-#: sparse-index.c:156
+#: sparse-index.c:174
 msgid "unable to update cache-tree, staying full"
 msgstr "дървото на кеша не може да бъде обновено и остава пълно"
 
-#: sparse-index.c:239
+#: sparse-index.c:261
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "обектът в индекса е директория, но не частично изтеглена (%08x)"
@@ -8908,7 +8943,7 @@
 msgstr[0] "%u байт/сек."
 msgstr[1] "%u байта/сек."
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8980,7 +9015,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "неправилен аргумент за „--ignore-submodules“: „%s“"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8989,12 +9024,12 @@
 "Подмодулът при подаване %s на пътя „%s“ е различен от другия модул със "
 "същото име, затова първият се прескача."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "записът за подмодула „%s“ (%s) е %s, а не подаване!"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -9003,36 +9038,36 @@
 "Командата „git rev-list ПОДАВАНИЯ --not --remotes -n 1“ не може да се "
 "изпълни в подмодула „%s“"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "процесът за подмодула „%s“ завърши неуспешно"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2469
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Не може да се открие към какво сочи указателят „HEAD“"
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Изтласкване на подмодула „%s“\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Подмодулът „%s“ не може да бъде изтласкан\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Доставяне на подмодула „%s%s“\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Подмодулът „%s“ не може да бъде достъпен\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -9041,63 +9076,63 @@
 "Грешки при доставяне на подмодул:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "„%s“ не е хранилище на git"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr ""
 "Командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr ""
 "командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Настройката „core.worktree“ не може да се изтрие в подмодула „%s“"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "неуспешна обработка на поддиректориите в подмодула „%s“"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "неуспешно зануляване на индекса на подмодула"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "индексът на подмодула „%s“ не е чист"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Подмодулът „%s“ не може да се обнови."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "„%s“ (директория на подмодул) е в директорията на git: „%.*s“"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -9105,17 +9140,17 @@
 "не се поддържа „relocate_gitdir“ за подмодула „%s“, който има повече от едно "
 "работно дърво"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "името на подмодула „%s“ не може да бъде намерено"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "„%s“ не може да се премести в съществуваща директория на git"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -9126,11 +9161,11 @@
 "„%s“ към\n"
 "„%s“\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "„ls-stat“ не може да се стартира в „..“"
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "„ls-tree“ завърши с неочакван изходен код: %d"
@@ -9167,7 +9202,7 @@
 msgid "could not read input file '%s'"
 msgstr "входният файл „%s“ не може да бъде прочетен"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "от стандартния вход не може да се чете"
 
@@ -9261,7 +9296,7 @@
 msgid "invalid remote service path"
 msgstr "неправилен път на отдалечената услуга"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "опцията не се поддържа от протокола"
 
@@ -9270,7 +9305,7 @@
 msgid "can't connect to subservice %s"
 msgstr "неуспешно свързване към подуслугата „%s“"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "опцията „--negotiate-only“ изисква версия 2 на протокола"
 
@@ -9408,47 +9443,47 @@
 msgid "could not read bundle '%s'"
 msgstr "пратката на git „%s“ не може да бъде прочетена"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: неправилна опция за дълбочина: %s"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr ""
 "За повече информация вижте раздела „protocol.version“ в „git help config“"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "опциите на сървъра изискват поне версия 2 на протокола"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "сървърът не поддържа „wait-for-done“"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "стойността на настройката „transport.color.*“ не може да се разпознае"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "протокол версия 2 все още не се поддържа"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "непозната стойност за настройката „%s“: „%s“"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "преносът по „%s“ не е позволен"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "командата „git-over-rsync“ вече не се поддържа"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9457,7 +9492,7 @@
 "Следните пътища за подмодули съдържат промени,\n"
 "които липсват от всички отдалечени хранилища:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9482,11 +9517,11 @@
 "    git push\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Преустановяване на действието."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "неуспешно изтласкване на всички необходими подмодули"
 
@@ -9755,11 +9790,11 @@
 "във файлови системи, които не различават главни от малки букви)\n"
 "и само един от участниците в конфликта е в работното дърво:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "Обновяване на флаговете на индекса"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2707
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -9802,102 +9837,102 @@
 msgid "Fetching objects"
 msgstr "Доставяне на обектите"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "„%s“ не може да бъде прочетен"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "„%s“ в основното работно дърво не е директорията на хранилището"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "файлът „%s“ не съдържа абсолютния път към местоположението на работното дърво"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "„%s“ не съществува."
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "„%s“ не е файл на .git, код за грешка: %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "„%s“ не сочи към обратно към „%s“"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "не е директория"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr "„.git“ не е файл"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr "„.git“ е повреден"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr "„.git“ е неправилен"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "неправилен път"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "не може да се открие хранилище: „.git“ не е файл"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "не може да се открие хранилище: файлът „.git“ не сочи към хранилище"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "не може да се открие хранилище: „.git“ е повреден"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "директорията „gitdir“ не може да се прочете"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "неправилна директория „gitdir“"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "не е валидна директория"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "файлът „gitdir“ не съществува"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "файлът „gitdir“ не може да бъде прочетен (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr ""
 "изчитането върна по-малко байтове от очакваното (очаквани: %<PRIuMAX> байта, "
 "получени: %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "неправилен файл „gitdir“"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "файлът „gitdir“ сочи несъществуващо местоположение"
 
@@ -9952,11 +9987,11 @@
 msgstr ""
 "  (използвайте „git rm ФАЙЛ…“, за да укажете разрешаването на конфликта)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Промени, които ще бъдат подадени:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Промени, които не са в индекса за подаване:"
 
@@ -10061,22 +10096,22 @@
 msgid "untracked content, "
 msgstr "неследено съдържание, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Има %d скатаване."
 msgstr[1] "Има %d скатавания."
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Подмодулите са променени, но не са обновени:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Промени в подмодулите за подаване:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -10084,7 +10119,7 @@
 "Не променяйте и не изтривайте горния ред.\n"
 "Всичко отдолу ще бъде изтрито."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -10095,271 +10130,275 @@
 "Изчисляването на броя различаващи се подавания отне %.2f сек.\n"
 "За да избегнете това, ползвайте „--no-ahead-behind“.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Някои пътища не са слети."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git commit“)"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (използвайте „git merge --abort“, за да преустановите сливането)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Всички конфликти са решени, но продължавате сливането."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (използвайте „git commit“, за да завършите сливането)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "В момента прилагате поредица от кръпки чрез „git am“."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Текущата кръпка е празна."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git am --continue“)"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (използвайте „git am --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 "  (използвайте „git am --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "„git-rebase-todo“ липсва."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Не са изпълнени команди."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Последно изпълнена команда (изпълнена е общо %d команда):"
 msgstr[1] "Последно изпълнени команди (изпълнени са общо %d команди):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (повече информация има във файла „%s“)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Не остават повече команди."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Следваща команда за изпълнение (остава още %d команда):"
 msgstr[1] "Следващи команди за изпълнение (остават още %d команди):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 "  (използвайте „git rebase --edit-todo“, за да разгледате и редактирате)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "В момента пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "В момента пребазирате."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (коригирайте конфликтите и използвайте „git rebase --continue“)"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (използвайте „git rebase --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (използвайте „git rebase --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (всички конфликти са коригирани: изпълнете „git rebase --continue“)"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "В момента разделяте подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "В момента разделяте подаване докато пребазирате."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (След като работното ви дърво стане чисто, използвайте „git rebase --"
 "continue“)"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "В момента редактирате подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "В момента редактирате подаване докато пребазирате."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (използвайте „git commit --amend“, за да редактирате текущото подаване)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (използвайте „git rebase --continue“, след като завършите промените си)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "В момента се извършва отбиране на подавания."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "В момента отбирате подаването „%s“."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (за да продължите, изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (всички конфликти са коригирани, изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (използвайте „git cherry-pick --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (използвайте „git cherry-pick --abort“, за да отмените всички действия с "
 "отбиране)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "В момента тече отмяна на подаване."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "В момента отменяте подаване „%s“."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git revert --continue“)"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (за да продължите, изпълнете „git revert --continue“)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (всички конфликти са коригирани, изпълнете „git revert --continue“)"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (използвайте „git revert --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (използвайте „git revert --abort“, за да преустановите отмяната на "
 "подаване)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "В момента търсите двоично, като сте стартирали от клон „%s“."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "В момента търсите двоично."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (използвайте „git bisect reset“, за да се върнете към първоначалното "
 "състояние и клон)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Вие сте в частично изтегляне."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Намирате се в частично изтеглено хранилище с %d%% налични, следени файла."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "На клон "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "извършвате интерактивно пребазиране върху "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "извършвате пребазиране върху "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "Указателят „HEAD“ не е свързан и е при "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "Указателят „HEAD“ не е свързан и е отделѐн от "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Извън всички клони."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Първоначално подаване"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Все още липсват подавания"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Неследени файлове"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Игнорирани файлове"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10371,32 +10410,32 @@
 "изпълнението, но ще трябва да добавяте новите файлове ръчно.\n"
 "За повече подробности погледнете „git status help“."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Неследените файлове не са изведени%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (използвайте опцията „-u“, за да изведете неследените файлове)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Няма промени"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "към индекса за подаване не са добавени промени (използвайте „git add“ и/или "
 "„git commit -a“)\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "към индекса за подаване не са добавени промени\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10405,84 +10444,84 @@
 "към индекса за подаване не са добавени промени, но има нови файлове "
 "(използвайте „git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "към индекса за подаване не са добавени промени, но има нови файлове\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "липсват каквито и да е промени (създайте или копирайте файлове и използвайте "
 "„git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "липсват каквито и да е промени\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "липсват каквито и да е промени (използвайте опцията „-u“, за да се изведат и "
 "неследените файлове)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "липсват каквито и да е промени, работното дърво е чисто\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Все още липсват подавания в "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (извън клон)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "различен"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "назад с "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "напред с "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "не може да извършите „%s“, защото има промени, които не са в индекса."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "освен това в индекса има неподадени промени."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "не може да извършите „%s“, защото в индекса има неподадени промени."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "командата за комуникация между процеси не може да бъде пратена"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "отговорът за комуникацията между процеси не може да бъде прочетен"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "неуспешно изпълнение на „accept_thread“ върху нишката „%s“"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "не може да се стартира нишката worker[0] за „%s“"
@@ -10519,7 +10558,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Промени, които и след обновяването на индекса не са добавени към него:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Индексът не може да бъде прочетен"
 
@@ -10555,8 +10594,8 @@
 msgstr ""
 "Следните пътища ще бъдат игнорирани според някой от файловете „.gitignore“:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "пробно изпълнение"
@@ -10706,13 +10745,13 @@
 msgstr "параметърът към „--chmod“ — „%s“ може да е или „-x“, или „+x“"
 
 #: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 "опцията „--pathspec-from-file“ е несъвместима с аргументи, указващи пътища"
 
 #: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "опцията „--pathspec-file-nul“ изисква опция „--pathspec-from-file“"
 
@@ -10732,110 +10771,110 @@
 "\n"
 "    git config advice.addEmptyPathspec false"
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "скриптът за автор не може да се анализира"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "„%s“ бе изтрит от куката „applypatch-msg“"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Даденият входен ред е с неправилен формат: „%s“."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Бележката не може да се копира от „%s“ към „%s“"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "неуспешно изпълнение на „fseek“"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "кръпката „%s“ не може да се анализира"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr ""
 "Само една поредица от кръпки от „StGIT“ може да бъде прилагана в даден момент"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "неправилна стойност за време"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "неправилен ред за дата „Date“"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "неправилно отместване на часовия пояс"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Форматът на кръпката не може да бъде определен."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "директорията „%s“ не може да бъде създадена"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Кръпките не може да бъдат разделени."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "След коригирането на този проблем изпълнете „%s --continue“."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Ако предпочитате да прескочите тази кръпка, изпълнете „%s --skip“."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr "За да се върнете към първоначалното състояние, изпълнете „%s --abort“."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 "Кръпката е пратена с форматиране „format=flowed“.  Празните знаци в края на "
 "редовете може да се загубят."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Кръпката е празна."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "липсва ред за авторство в подаването „%s“"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "грешен ред с идентичност: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "В хранилището липсват необходимите обекти-BLOB, за да се премине към тройно "
 "сливане."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "Базовото дърво се реконструира от информацията в индекса…"
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10843,24 +10882,24 @@
 "Кръпката не може да се приложи към обектите-BLOB в индекса.\n"
 "Да не би да сте я редактирали на ръка?"
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Преминаване към прилагане на кръпка към базата и тройно сливане…"
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Неуспешно сливане на промените."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "прилагане върху празна история"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "не може да се продължи — „%s“ не съществува."
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Тялото на кръпката за прилагане е:"
 
@@ -10868,45 +10907,45 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr ""
 "Прилагане? „y“ — да/„n“ — не/„e“ — редактиране/„v“ — преглед/„a“ — приемане "
 "на всичко:"
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "индексът не може да бъде записан"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr ""
 "Индексът не е чист: кръпките не може да бъдат приложени (замърсени са: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Прилагане: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Без промени — кръпката вече е приложена."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Неуспешно прилагане на кръпка при %s %.*s“"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 "За да видите неуспешно приложени кръпки, използвайте:\n"
 "\n"
 "    git am --show-current-patch=diff"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10916,7 +10955,7 @@
 "Ако няма друга промяна за включване в индекса, най-вероятно някоя друга\n"
 "кръпка е довела до същите промени и в такъв случай просто пропуснете тази."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10927,17 +10966,17 @@
 "След корекция на конфликтите изпълнете „git add“ върху поправените файлове.\n"
 "За да приемете „изтрити от тях“, изпълнете „git rm“ върху изтритите файлове."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "„%s“ не е разпознат като обект."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "индексът не може да бъде изчистен"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10948,94 +10987,94 @@
 "сочи към\n"
 "„ORIG_HEAD“"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Неправилна стойност за „--patch-format“: „%s“"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Неправилна стойност за „--show-current-patch“: „%s“"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr ""
 "опциите „--show-current-patch=%s“ и „--show-current-patch=%s“ са несъвместими"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [ОПЦИЯ…] [(ФАЙЛ_С_ПОЩА|ДИРЕКТОРИЯ_С_ПОЩА)…]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [ОПЦИЯ…] (--continue | --quit | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "интерактивна работа"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "изоставена опция, съществува по исторически причини, нищо не прави"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "да се преминава към тройно сливане при нужда."
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "без извеждане на информация"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "добавяне на епилог за подпис „Signed-off-by“ в съобщението за подаване"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "прекодиране в UTF-8 (стандартно)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "подаване на опцията „-k“ на командата „git-mailinfo“"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "подаване на опцията „-b“ на командата „git-mailinfo“"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "подаване на опцията „-m“ на командата „git-mailinfo“"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr ""
 "подаване на опцията „--keep-cr“ на командата „git-mailsplit“ за формат „mbox“"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "без подаване на опцията „--keep-cr“ на командата „git-mailsplit“ независимо "
 "от „am.keepcr“"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "пропускане на всичко преди реда за отрязване"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "прекарване през „git-mailinfo“"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "прекарване през „git-apply“"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -11044,70 +11083,70 @@
 msgid "n"
 msgstr "БРОЙ"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "ФОРМАТ"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "формат на кръпките"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "избрано от вас съобщение за грешка при прилагане на кръпки"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "продължаване на прилагането на кръпки след коригирането на конфликт"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "псевдоними на „--continue“"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "прескачане на текущата кръпка"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr ""
 "възстановяване на първоначалното състояние на клона и преустановяване на "
 "прилагането на кръпката"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
 "преустановяване на прилагането на кръпката без промяна към кое сочи „HEAD“"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "показване на прилаганата кръпка"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "дата за подаване различна от първоначалната"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "използване на текущото време като това за автор"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "ИДЕНТИФИКАТОР_НА_КЛЮЧ"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "подписване на подаванията с GPG"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(ползва се вътрешно за „git-rebase“)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -11115,18 +11154,18 @@
 "Опциите „-b“/„--binary“ отдавна не правят нищо и\n"
 "ще бъдат премахнати в бъдеще.  Не ги ползвайте."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "неуспешно изчитане на индекса"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 "предишната директория за пребазиране „%s“ все още съществува, а е зададен "
 "файл „mbox“."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -11135,11 +11174,11 @@
 "Открита е излишна директория „%s“.\n"
 "Може да я изтриете с командата „git am --abort“."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "В момента не тече операция по коригиране и няма как да се продължи."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "интерактивният режим изисква кръпки на командния ред"
 
@@ -11233,36 +11272,36 @@
 msgid "could not write to file '%s'"
 msgstr "във файла „%s“ не може да се пише"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "„%s“ е неправилна управляваща дума"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "„%s“ е вградена команда и не може да се използва като управляваща дума"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "не може да смените значението на управляващата дума „%s“"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "използвайте две различни управляващи думи"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "В момента не се извършва двоично търсене.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "„%s“ не е подаване"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -11270,27 +11309,27 @@
 "първоначално указаното „%s“ в указателя „HEAD“ не може да бъде\n"
 "изтеглено.  Пробвайте да изпълните командата „git bisect reset ПОДАВАНЕ“."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Неправилен аргумент на функцията „bisect_write“: „%s“"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "идентификаторът на обект на версия „%s“ не може да бъде получен"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "файлът „%s“ не може да бъде отворен"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Неправилна команда: в момента се изпълнява двоично търсене по %s/%s."
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -11299,7 +11338,7 @@
 "Трябва да зададете поне една „%s“ и една „%s“ версия.  (Това може да се\n"
 "направи съответно и чрез командите „git bisect %s“ и „git bisect %s“.)"
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -11310,7 +11349,7 @@
 "Трябва да зададете поне една „%s“ и една „%s“ версия.  (Това може да се\n"
 "направи съответно и чрез командите „git bisect %s“ и „git bisect %s“.)"
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "двоично търсене само по „%s“ подаване."
@@ -11319,15 +11358,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Да се продължи ли? „Y“ —  ДА, „n“ — не"
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "не са указани управляващи думи"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -11336,7 +11375,7 @@
 "Текущите управляващи думи са: %s за старото състояние\n"
 "и %s за новото състояние.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -11345,56 +11384,56 @@
 "на „git bisect terms“ е подаден неправилен аргумент „%s“\n"
 "Поддържат се опциите „--term-good“/„--term-old“ и „--term-bad„/„--term-new“."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "неуспешно настройване на обхождането на версиите\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "файлът „%s“ не може да се отвори за добавяне"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "„“ е неправилна управляваща дума"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "непозната опция: %s"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "„%s“ не изглежда като указател към версия"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "Неправилен указател „HEAD“"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Неуспешно преминаване към „%s“.  Изпълнете командата „git bisect start "
 "СЪЩЕСТВУВАЩ_КЛОН“."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 "не може да се търси двоично, когато е изпълнена командата „cg-seek“ от "
 "„cogito“"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "Неправилен указател „HEAD“ — необичаен символен указател"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "неправилен указател: „%s“"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Започнете като изпълните командата „git bisect start“\n"
 
@@ -11402,108 +11441,108 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Да се извърши ли автоматично? „Y“ —  ДА, „n“ — не"
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "опцията „--bisect-state“ изисква поне един аргумент"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "Командата „git bisect %s“ приема само един аргумент."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Неправилна версия: „%s“"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Неправилна версия (не е подаване): „%s“"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "В момента не се извършва двоично търсене."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr ""
 "Непозната команда „%s“.  Възможностите са: „start“, „skip“, „good“, „bad“ (и "
 "вариантите им)"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr ""
 "файлът „%s“ не може да бъде прочетен, за да се изпълнят командите от него "
 "наново"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "изчистване на състоянието на двоичното търсене"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "проверка дали съществуват одобряващи/отхвърлящи управляващи думи"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "извеждане на управляващите думи"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "начало на двоично търсене"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "откриване на следващото подаване при двоично търсене"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "задаване на състоянието на указателя/ите"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "извеждане на стъпките на двоичното търсене досега"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "наново изпълнение на двоичното търсене чрез дадения файл"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "прескачане на някои подавания при изтегляне"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "липсва запис за „BISECT_WRITE“"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "опцията „--bisect-reset“ изисква или 0 аргументи, или 1 — подаване"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "опцията „--bisect-next-check“ изисква 2 или 3 аргумента"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "опцията „--bisect-terms“ изисква 0 или 1 аргумента"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "опцията „--bisect-next“ не приема аргументи"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "опцията „--bisect-log“ не приема аргументи"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "не е зададен журнален файл"
 
@@ -11561,7 +11600,7 @@
 #: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "извеждане на напредъка"
 
@@ -11617,7 +11656,7 @@
 msgid "ignore whitespace differences"
 msgstr "без разлики в знаците за интервали"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "ВЕРС"
 
@@ -12217,19 +12256,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle ФАЙЛ [ИМЕ_НА_УКАЗАТЕЛ…]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "без извеждане на напредъка"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "извеждане на напредъка"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "извеждане на напредъка във фазата на запазване на обектите"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 "същото действие като опцията „--all-progress“ при извеждането на напредъка"
@@ -12242,29 +12281,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "За създаването на пратка е необходимо хранилище."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "без подробна информация за пратките"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "Пратката „%s“ е наред\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "За приемането на пратка е необходимо хранилище."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "повече подробности.  Поставя се пред подкоманда"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Непозната подкоманда: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -12272,7 +12311,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | ВИД | --textconv --filters) [--path=ПЪТ] ОБЕКТ"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -12280,79 +12319,79 @@
 "git cat-file (--batch[=ФОРМАТ] | --batch-check[=ФОРМАТ]) [--follow-symlinks] "
 "[--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "може да укажете само една пакетна опция"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
 "ВИДът може да е: „blob“ (BLOB), „tree“ (дърво), „commit“ (подаване), "
 "„tag“ (етикет)"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "извеждане на вида на обект"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "извеждане на размера на обект"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "изход с 0, когато няма грешка"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "форматирано извеждане на съдържанието на обекта"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 "да се стартира програмата зададена в настройката „textconv“ за преобразуване "
 "на съдържанието на обекта-BLOB"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr ""
 "да се стартират програмите за преобразуване на съдържанието на обектите-BLOB"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "обект-BLOB"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "опциите „--textconv“/„--filters“ изискват път"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "позволяване на опциите „-s“ и „-t“ да работят с повредени обекти"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "буфериране на изхода от „--batch“"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "извеждане на информация и съдържание на обектите подадени на стандартния вход"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "извеждане на информация за обектите подадени на стандартния вход"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "следване на символните връзки сочещи в дървото (ползва се с „--batch“ или „--"
 "batch-check“)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "извеждане на всички обекти с „--batch“ или „--batch-check“"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "без подреждане на изхода от „--batch-all-objects“"
 
@@ -12381,7 +12420,7 @@
 msgstr "разделяне на входните и изходните записи с нулевия знак „NUL“"
 
 #: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "без показване на напредъка"
 
@@ -12439,9 +12478,10 @@
 msgstr "git checkout--worker [ОПЦИЯ…]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1824
+#: builtin/submodule--helper.c:1827 builtin/submodule--helper.c:1835
+#: builtin/submodule--helper.c:2333 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "НИЗ"
 
@@ -12616,7 +12656,7 @@
 msgid "HEAD is now at"
 msgstr "Указателят „HEAD“ в момента сочи към"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "Указателят „HEAD“ не може да бъде обновен"
 
@@ -12756,7 +12796,7 @@
 msgid "only one reference expected, %d given."
 msgstr "очаква се един указател, а сте подали %d."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1330 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "неправилен указател: %s"
@@ -12866,7 +12906,7 @@
 msgid "perform a 3-way merge with the new branch"
 msgstr "извършване на тройно сливане с новия клон"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1526 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "СТИЛ"
 
@@ -12955,7 +12995,7 @@
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "опциите „--pathspec-from-file“ и „--detach“ са несъвместими"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "опциите „--pathspec-from-file“ и „--patch“ са несъвместими"
 
@@ -12973,7 +13013,7 @@
 
 #: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
 #: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "клон"
@@ -13068,7 +13108,7 @@
 msgid "could not lstat %s\n"
 msgstr "не може да се получи информация чрез „lstat“ за „%s“\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -13081,7 +13121,7 @@
 "ПРЕФИКС    — избор на единствен обект по този уникален префикс\n"
 "           — (празно) нищо да не се избира\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -13102,33 +13142,33 @@
 "*          — избиране на всички обекти\n"
 "           — (празно) завършване на избирането\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Неправилен избор (%s).\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Шаблони за игнорирани елементи≫ "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: Никой обект не напасва на „%s“"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Избиране на обекти за изтриване"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Да се изтрие ли „%s“? „y“ —  да, „N“ — НЕ"
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -13146,52 +13186,52 @@
 "help                — този край\n"
 "?                   — подсказка за шаблоните"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Следният обект ще бъде изтрит:"
 msgstr[1] "Следните обекти ще бъдат изтрити:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Файловете за изчистване свършиха.  Изход от програмата."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "без извеждане на имената на файловете, които ще бъдат изтрити"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "принудително изтриване"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "интерактивно изтриване"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "изтриване на цели директории"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "ШАБЛОН"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "добавяне на ШАБЛОН от файлове, които да не се трият"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "изтриване и на игнорираните файлове"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "изтриване само на игнорирани файлове"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -13199,7 +13239,7 @@
 "Настройката „clean.requireForce“ е зададена като истина, което изисква някоя "
 "от опциите „-i“, „-n“ или „-f“.  Няма да се извърши изчистване"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -13208,7 +13248,7 @@
 "което изисква някоя от опциите „-i“, „-n“ или „-f“.  Няма да се извърши "
 "изчистване"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "опциите „-x“ и „-X“ са несъвместими"
 
@@ -13224,7 +13264,7 @@
 msgid "don't create a checkout"
 msgstr "без създаване на работно дърво"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "създаване на голо хранилище"
 
@@ -13257,26 +13297,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "брой подмодули, клонирани паралелно"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "директория с шаблони"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "директория, която съдържа шаблоните, които да се ползват"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1831
+#: builtin/submodule--helper.c:2336
 msgid "reference repository"
 msgstr "еталонно хранилище"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1833
+#: builtin/submodule--helper.c:2338
 msgid "use --reference only while cloning"
 msgstr "опцията „--reference“ може да се използва само при клониране"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "ИМЕ"
@@ -13293,7 +13333,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "път към командата „git-upload-pack“ на отдалеченото хранилище"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "ДЪЛБОЧИНА"
@@ -13302,7 +13342,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "плитко клониране до тази ДЪЛБОЧИНА"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "ВРЕМЕ"
@@ -13320,8 +13360,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "задълбочаване на историята на плитко хранилище до изключващ указател"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1843
+#: builtin/submodule--helper.c:2352
 msgid "clone only one branch, HEAD or --branch"
 msgstr ""
 "клониране само на един клон — или сочения от отдалечения „HEAD“, или изрично "
@@ -13336,11 +13376,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "всички клонирани подмодули ще са плитки"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "СЛУЖЕБНА_ДИРЕКТОРИЯ"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "отделна СЛУЖЕБНА_ДИРЕКТОРИЯ за git извън работното дърво"
 
@@ -13353,22 +13393,22 @@
 msgstr "задаване на настройките на новото хранилище"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "специфични за сървъра"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "опция за пренос"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "само адреси IPv4"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "само адреси IPv6"
 
@@ -13477,7 +13517,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "временният файл за алтернативни обекти не може да бъде изтрит"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Прекалено много аргументи."
 
@@ -13499,7 +13539,7 @@
 msgid "repository '%s' does not exist"
 msgstr "не съществува хранилище „%s“"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "дълбочината трябва да е положително цяло число, а не „%s“"
@@ -13520,7 +13560,7 @@
 msgstr "в „%s“ вече съществува работно дърво."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "родителските директории на „%s“ не може да бъдат създадени"
@@ -13585,12 +13625,16 @@
 msgid "--local is ignored"
 msgstr "опцията „--local“ се прескача"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "отдалеченият транспорт върна грешка"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Отдалеченият клон „%s“ липсва в клонираното хранилище „%s“"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Изглежда клонирахте празно хранилище."
 
@@ -13649,7 +13693,7 @@
 msgstr "директорията с обекти, която отговаря на „%s“, не може да бъде открита"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "директория"
 
@@ -13749,7 +13793,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "прескачане на повтарящ се родител: „%s“"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "неправилно име на обект: „%s“"
@@ -13777,13 +13821,13 @@
 msgid "id of a parent commit object"
 msgstr "ИДЕНТИФИКАТОР на обекта за подаването-родител"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "СЪОБЩЕНИЕ"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "СЪОБЩЕНИЕ при подаване"
 
@@ -13791,7 +13835,7 @@
 msgid "read commit log message from file"
 msgstr "изчитане на съобщението за подаване от ФАЙЛ"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "подписване на подаването с GPG"
@@ -13949,7 +13993,7 @@
 "не може да се избере знак за коментар — в текущото съобщение за подаване са "
 "използвани всички подобни знаци"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "следното подаване не може да бъде открито: %s"
@@ -13985,7 +14029,45 @@
 msgid "could not write commit template"
 msgstr "шаблонът за подаване не може да бъде запазен"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
+"с „%c“, ще бъдат пропуснати.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
+"с „%c“, ще бъдат пропуснати, а празно съобщение преустановява подаването.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
+"с „%c“, също ще бъдат включени — може да ги изтриете вие.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
+"с „%c“, също ще бъдат включени — може да ги изтриете вие.  Празно \n"
+"съобщение преустановява подаването.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -14000,7 +14082,7 @@
 "    git update-ref -d MERGE_HEAD\n"
 "и опитайте отново.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -14015,98 +14097,78 @@
 "    git update-ref -d CHERRY_PICK_HEAD\n"
 "и опитайте отново.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
-"с „%c“, ще бъдат пропуснати, а празно съобщение преустановява подаването.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Въведете съобщението за подаване на промените.  Редовете, които започват\n"
-"с „%c“, също ще бъдат включени — може да ги изтриете вие.  Празно \n"
-"съобщение преустановява подаването.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sАвтор:   %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sДата:    %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sПодаващ: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Индексът не може да бъде прочетен"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "епилогът не може да се подаде на „--trailers“"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Грешка при изграждане на дърветата"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Подайте съобщението с някоя от опциите „-m“ или „-F“.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "опцията „--author '%s'“ не отговаря на форма̀та „Име <е-поща>“ и не съвпада с "
 "никой автор"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Неправилен режим за игнорираните файлове: „%s“"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Неправилен режим за неследените файлове: „%s“"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "опциите „--long“ и „-z“ са несъвместими."
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr ""
 "В момента се извършва сливане, не може да промените съобщение при подаване."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr ""
 "В момента се извършва отбиране на подаване, не може да промените съобщение "
 "при подаване."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 "опцията за промяна на съобщението на „--fixup“ и указването на път „%s“ са "
 "несъвместими"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
@@ -14114,107 +14176,107 @@
 "опцията за промяна на съобщението на „--fixup“ и „--patch“/„--interactive“/"
 "„--all“/„--include“/„--only“ са несъвместими"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "опциите „--reset-author“ и „--author“ са несъвместими."
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Няма какво да бъде поправено."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "В момента се извършва сливане, не може да поправяте."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "В момента се извършва отбиране на подаване, не може да поправяте."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "В момента се извършва пребазиране, не може да поправяте."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "опциите „--squash“ и „--fixup“ са несъвместими."
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "опциите „-c“, „-C“, „-F“ и „--fixup““ са несъвместими."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "опцията „-m“ е несъвместима с „-c“, „-C“ и „-F“."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "опцията „--reset-author“ може да се използва само заедно с „-C“, „-c“ или\n"
 "„--amend“."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "опциите „--include“, „--only“, „--all“, „--interactive“ и „--patch“ са\n"
 "несъвместими."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "непозната опция: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "опцията „-a“ е несъвместима със задаването на пътища: „%s…“"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "кратка информация за състоянието"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "информация за клоните"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "информация за скатаното"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "изчисляване на точните стойности напред/назад"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "версия"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "формат на изхода за четене от програма"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "подробна информация за състоянието (стандартно)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "разделяне на елементите с нулевия знак „NUL“"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "РЕЖИМ"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "извеждане на неследените файлове.  Възможните РЕЖИМи са „all“ (подробна "
 "информация), „normal“ (кратка информация), „no“ (без неследените файлове).  "
 "Стандартният РЕЖИМ е: „all“."
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -14223,11 +14285,11 @@
 "„traditional“ (традиционен), „matching“ (напасващи), „no“ (без игнорираните "
 "файлове).  Стандартният РЕЖИМ е: „traditional“."
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "КОГА"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -14236,197 +14298,197 @@
 "една от „all“ (всички), „dirty“ (тези с неподадени промени), "
 "„untracked“ (неследени)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "извеждане на неследените файлове в колони"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "без засичане на преименуванията"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "засичане на преименуванията, може да се зададе коефициент на прилика"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Неподдържана комбинация от аргументи за игнорирани и неследени файлове"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "без информация след успешно подаване"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "добавяне на разликата към шаблона за съобщението при подаване"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Опции за съобщението при подаване"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "взимане на съобщението от ФАЙЛ"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "АВТОР"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "задаване на АВТОР за подаването"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "ДАТА"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "задаване на ДАТА за подаването"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "ПОДАВАНЕ"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "преизползване и редактиране на съобщението от указаното ПОДАВАНЕ"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "преизползване на съобщението от указаното ПОДАВАНЕ"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]подаване"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "използване на автоматичното съобщение за вкарване на указаното ПОДАВАНЕ в "
 "предходното без следа или за промяна на подаването или съобщението"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "използване на автоматичното съобщение за вкарване на указаното ПОДАВАНЕ в "
 "предното"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "смяна на автора да съвпада с подаващия (използва се с „-C“/„-c“/„--amend“)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "епилог"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "добовяне на друг епилог"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "добавяне на епилог за подпис „Signed-off-by“"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "използване на указания шаблонен ФАЙЛ"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "редактиране на подаване"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "вмъкване на състоянието в шаблона за съобщението при подаване"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Опции за избор на файлове при подаване"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "подаване на всички променени файлове"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "добавяне на указаните файлове към индекса за подаване"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "интерактивно добавяне на файлове"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "интерактивно добавяне на промени"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "подаване само на указаните файлове"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr ""
 "без изпълнение на куките преди подаване и при промяна на съобщението за "
 "подаване (pre-commit и commit-msg)"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "отпечатване на това, което би било подадено"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "поправяне на предишното подаване"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "без изпълнение на куката след презаписване (post-rewrite)"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "позволяване на празни подавания"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "позволяване на подавания с празни съобщения"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1747
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Повреден файл за върха за сливането „MERGE_HEAD“ (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1754
 msgid "could not read MERGE_MODE"
 msgstr "режимът на сливане „MERGE_MODE“ не може да бъде прочетен"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1775
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "съобщението за подаване не може да бъде прочетено: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1782
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Неизвършване на подаване поради празно съобщение.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1787
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Неизвършване на подаване поради нередактирано съобщение.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1798
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "Неизвършване на подаване поради празно съобщение.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1834
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -15082,37 +15144,37 @@
 msgid "you may want to cleanup or recover these."
 msgstr "възможно е да ги изчистите или възстановите"
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "използвайте „diff.guitool“ вместо „diff.tool“"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "разлика по директории"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "стартиране на ПРОГРАМАта за разлики без предупреждение"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "следване на символните връзки при разлика по директории"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "ПРОГРАМА"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "използване на указаната ПРОГРАМА"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "извеждане на списък с всички ПРОГРАМи, които може да се ползват с опцията „--"
 "tool“"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -15120,31 +15182,31 @@
 "„git-difftool“ да спре работа, когато стартираната ПРОГРАМА завърши с "
 "ненулев код"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "команда за разглеждане на разлики"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "подава се към „diff“"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "„git-difftool“ изисква работно дърво или опцията „--no-index“"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "опциите „--dir-diff“ и „--no-index“ са несъвместими"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "опциите „--gui“, „--tool“ и „--extcmd“ са несъвместими една с друга"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "не е зададена програма за „--tool=ПРОГРАМА“"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "не е зададена команда за „--extcmd=КОМАНДА“"
 
@@ -15239,7 +15301,7 @@
 msgid "skip output of blob data"
 msgstr "без извеждане на съдържанието на обектите-BLOB"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "УКАЗАТЕЛ_НА_ВЕРСИЯ"
 
@@ -15565,10 +15627,9 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
+msgid "rejected %s because shallow roots are not allowed to be updated"
 msgstr ""
-"отхвърляне на върха „%s“, защото плитките хранилища не може да бъдат "
-"обновявани"
+"отхвърляне на „%s“, защото плитките върхове не може да бъдат обновявани"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -15670,48 +15731,53 @@
 msgid "You need to specify a tag name."
 msgstr "Трябва да укажете име на етикет."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr ""
+"Опцията „--negotiate-only“ изисква една или повече опции „--negotiate-tip=*“"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Отрицателна дълбочина като аргумент на „--deepen“ не се поддържа"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "опциите „--deepen“ и „--depth“ са несъвместими"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "опциите „--depth“ и „--unshallow“ са несъвместими"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "не може да използвате опцията „--unshallow“ върху пълно хранилище"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "към „git fetch --all“ не може да добавите аргумент-хранилище"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "към „git fetch --all“ не може да добавите аргумент-указател на версия"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Няма нито отдалечено хранилище, нито група от хранилища на име „%s“"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Указването на група и указването на версия са несъвместими"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "опцията „--negotiate-only“ изисква хранилище"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Протоколът не поддържа опцията „--negotiate-only“, изход от прогамата."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15719,12 +15785,12 @@
 "опцията „--filter“ може да се ползва само с отдалеченото хранилище указано в "
 "настройката „extensions.partialClone“"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr ""
 "опцията „--atomic“ поддържа доставяне само от едно отдалечено хранилище"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "опцията „--stdin“ поддържа доставяне само от едно отдалечено хранилище"
 
@@ -15832,7 +15898,7 @@
 msgid "missing --config=<config>"
 msgstr "липсва --config=НАСТРОЙКА"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "непознат"
 
@@ -15848,16 +15914,16 @@
 msgid "warning in %s %s: %s"
 msgstr "предупреждение за %s „%s“: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "скъсана връзка от %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "неправилен вид обект във връзката"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15866,212 +15932,212 @@
 "скъсана връзка от %7s %s\n"
 "              към %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "липсващ обект: %s „%s“"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "недостижим обект: %s „%s“"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "извън клон: %s „%s“"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "„lost-found“ не може да се създаде"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "„%s“ не може да се завърши"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Проверка на „%s“"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Проверка на свързаността (%d обекта)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Проверяване на %s „%s“"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "скъсани връзки"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "начална директория „%s“"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "приложен етикет „%s“ върху „%s“ (%s) в „%s“"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: липсващ или повреден обект"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: неправилен запис в журнала за указатели „%s“"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Проверка на журнала на указателите: „%s“ до „%s“"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "„%s“: неправилен указател за SHA1: „%s“"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: не е подаване!"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "внимание: няма указатели по подразбиране"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "„%s“: липсващ обект: „%s“"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "„%s“: не може да се анализира: „%s“"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "неправилен ред с контролна сума по SHA1: „%s“"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Проверка на директория с обекти"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Проверка на директориите с обекти"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Проверка на връзките на „%s“"
 
 #
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "неправилен указател „%s“"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "„%s“ сочи към нещо необичайно (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: несвързаният връх „HEAD“ не сочи към нищо"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "предупреждение: „%s“ сочи към все още несъществуващ клон (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Проверка на дървото на кеша"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "„%s“: неправилен указател за SHA1 в дървото на кеша"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "в дървото на кеша има нещо, което не е дърво"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [ОПЦИЯ…] [ОБЕКТ…]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "показване на недостижимите обекти"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "показване на обектите извън клоните"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "показване на етикетите"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "показване на кореновите възли"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "задаване на обекти от индекса да са коренови"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "проследяване и на указателите от журнала с указателите (стандартно)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "допълнително да се проверяват пакетите и алтернативните обекти"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "проверка само на връзката"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "по-строги проверки"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "запазване на обектите извън клоните в директорията „.git/lost-found“"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "показване на напредъка"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "показване на подробни имена на достижимите обекти"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Проверка на обектите"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "„%s“: липсващ обект"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "неправилен параметър: очаква се SHA1, а бе получено: „%s“"
@@ -16368,8 +16434,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "липсва поддръжка за нишки.  „%s“ ще се пренебрегне"
@@ -16384,255 +16450,255 @@
 msgid "unable to grep from object of type %s"
 msgstr "не може да се изпълни „grep“ от обект от вида %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "опцията „%c“ очаква число за аргумент"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "търсене в индекса, а не в работното дърво"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "търсене и във файловете, които не са под управлението на git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "търсене и в следените, и в неследените файлове"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "игнориране на файловете указани в „.gitignore“"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "рекурсивно търсене във всички подмодули"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "извеждане на редовете, които не съвпадат"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "без значение на регистъра на буквите (главни/малки)"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "напасване на шаблоните само по границите на думите"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "обработване на двоичните файлове като текстови"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "прескачане на двоичните файлове"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr ""
 "обработване на двоичните файлове чрез филтри за преобразуване към текст"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "търсене в поддиректориите (стандартно)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "навлизане максимално на тази ДЪЛБОЧИНА в дървото"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "разширени регулярни изрази по POSIX"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "основни регулярни изрази по POSIX (стандартно)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "шаблоните са дословни низове"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "регулярни изрази на Perl"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "извеждане на номерата на редовете"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "извеждане на номера на колоната на първото напасване"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "без извеждане на имената на файловете"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "извеждане на имената на файловете"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr ""
 "извеждане на относителните имена на файловете спрямо основната директория на "
 "хранилището"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "извеждане само на имената на файловете без напасващите редове"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "псевдоним на „--files-with-matches“"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr ""
 "извеждане само на имената на файловете, които не съдържат ред, напасващ на "
 "шаблона"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "извеждане на нулевия знак „NUL“ след всяко име на файл"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "извеждане само на частите на редовете, които съвпадат"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "извеждане на броя на съвпаденията вместо напасващите редове"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "оцветяване на напасванията"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "извеждане на празен ред между напасванията от различни файлове"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "извеждане на името на файла само веднъж за всички напасвания от този файл"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "извеждане на такъв БРОЙ редове преди и след напасванията"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "извеждане на такъв БРОЙ редове преди напасванията"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "извеждане на такъв БРОЙ редове след напасванията"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "използване на такъв БРОЙ работещи нишки"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "псевдоним на „-C БРОЙ“"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "извеждане на ред с името на функцията, в която е напаснат шаблона"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "извеждане на обхващащата функция"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "изчитане на шаблоните от ФАЙЛ"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "напасване на ШАБЛОН"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "комбиниране на шаблоните указани с опцията „-e“"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr ""
 "без извеждане на стандартния изход.  Изходният код указва наличието на "
 "напасване"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "извеждане на редове само от файловете, които напасват на всички шаблони"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "програма за преглед по страници"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "извеждане на съвпадащите файлове в програма за преглед по страници"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr ""
 "позволяване на стартирането на grep(1) (текущият компилат пренебрегва тази "
 "опция)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "не сте задали шаблон"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "опциите „--cached“ и „--untracked“ са несъвместими с версии."
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "версията „%s“ не може бъде открита"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "опциите „--untracked“ и „--recurse-submodules“ са несъвместими"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "неправилна комбинация от опции, „--threads“ ще се пренебрегне"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "липсва поддръжка за нишки.  „--threads“ ще се пренебрегне"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "зададен е неправилен брой нишки: %d"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "опцията „--open-files-in-pager“ изисква търсене в работното дърво"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "опциите „--cached“ и „--untracked“ са несъвместими с „--no-index“"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "опциите „--untracked“ и „--cached“ са несъвместими"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 "опциите „--(no-)exclude-standard“ са несъвместими с търсене по следени "
 "файлове"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "опцията „--cached“ е несъвместима със задаване на дърво"
 
@@ -16757,32 +16823,32 @@
 msgid "'%s': unknown man viewer."
 msgstr "„%s“: непозната програма за преглед на ръководството."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "никоя програма за преглед на ръководство не успя да обработи заявката"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr ""
 "никоя програма за преглед на информационните страници не успя да обработи "
 "заявката"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "„%s“ е псевдоним на „%s“"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "неправилен низ за настройката „alias.%s“: „%s“"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "употреба: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "За повече информация изпълнете „git help config“"
 
@@ -16820,7 +16886,7 @@
 msgid "used more bytes than were available"
 msgstr "използвани са повече от наличните байтове"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "пакетният файл е прекалено голям за текущата стойност на типа „off_t“"
 
@@ -16847,247 +16913,247 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "не се поддържа пакетиране вeрсия „%<PRIu32>“"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "повреден обект в пакетния файл при отместване %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "декомпресирането с „inflate“ върна %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "стойността на отместването за обекта-разлика води до препълване"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "стойността на отместването за обекта-разлика е извън диапазона"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "непознат вид обект %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "пакетният файл не може да бъде прочетен"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "неочакван край на файл, липсва %<PRIuMAX> байт"
 msgstr[1] "неочакван край на файл, липсват %<PRIuMAX> байта"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "сериозна грешка при декомпресиране с „inflate“"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr ""
 "СЪВПАДЕНИЕ НА СТОЙНОСТИТЕ ЗА СУМИТЕ ЗА SHA1: „%s“ НА ДВА РАЗЛИЧНИ ОБЕКТА!"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "обектът „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "съществуващият обект в „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "съществуващият обект „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "неправилен обект-BLOB „%s“"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "грешка при проверката на пакетирани обекти"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Някои обекти, наследници на „%s“, не може да бъдат достигнати"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "разликата не може да бъде приложена"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Получаване на обекти"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Индексиране на обекти"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "пакетният файл е повреден (нееднакви суми по SHA1)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "не може да се получи информация за пакетния файл с „fstat“"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "в края на пакетния файл има повредени данни"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr ""
 "фатална грешка във функцията „parse_pack_objects“.  Това е грешка в Git, "
 "докладвайте я на разработчиците, като пратите е-писмо на адрес: „git@vger."
 "kernel.org“."
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Откриване на съответните разлики"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "не може да се създаде нишка: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr ""
 "фатална грешка във функцията „conclude_pack“.  Това е грешка в Git, "
 "докладвайте я на разработчиците, като пратите е-писмо на адрес: „git@vger."
 "kernel.org“."
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "действието завърши с %d локален обект"
 msgstr[1] "действието завърши с %d локални обекта"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr ""
 "Неочаквана последваща сума за грешки за „%s“ (причината може да е грешка в "
 "диска)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "в пакета има %d ненапасваща разлика"
 msgstr[1] "в пакета има %d ненапасващи разлики"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "добавеният обект не може да се компресира с „deflate“: %d"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "локалният обект „%s“ е повреден"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "името на пакетния файл „%s“ не завършва с „%s“"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "грешка при запис на файла „%s“ „%s“"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "грешка при затварянето на записания файл „%s“ „%s“"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "грешка при затварянето на пакетния файл"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "пакетният файл не може да бъде запазен"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "файлът за индекса не може да бъде съхранен"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "зададена е неправилна версия пакетиране: „pack.indexversion=%<PRIu32>“"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Съществуващият пакетен файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Съществуващият индекс за пакетния файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "%d обект не е разлика"
 msgstr[1] "%d обекта не са разлика"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "дължината на веригата е %d: %lu обект"
 msgstr[1] "дължината на веригата е %d: %lu обекта"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Процесът не може да се върне към предишната работна директория"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "неправилна стойност „%s“"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "непознат алгоритъм за контролни суми „%s“"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "опцията „--fix-thin“ изисква „--stdin“"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "„--stdin“ изисква хранилище на git"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "опцията „--object-format“ и „--stdin“ са несъвместими"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "опцията „--verify“ изисква име на пакетен файл"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "грешка при проверка с „fsck“ на пакетните обекти"
 
@@ -17131,59 +17197,59 @@
 msgid "not copying templates from '%s': %s"
 msgstr "шаблоните няма да бъдат копирани от „%s“: „%s“"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "неправилно име на първоначалния клон: „%s“"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "файлове от вид %d не се поддържат"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "„%s“ не може да се премести в „%s“"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr ""
 "опит за повторно задаване на първото подаване в хранилището с различна "
 "контролна сума"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "Директорията „%s“ вече съществува"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: „--initial-branch=%s“ се пропуска"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr ""
 "Инициализиране наново на съществуващо, споделено хранилище на Git в „%s%s“\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Инициализиране наново на съществуващо хранилище на Git в „%s%s“\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Инициализиране на празно, споделено хранилище на Git в „%s%s“\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Инициализиране на празно хранилище на Git в „%s%s“\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -17191,43 +17257,43 @@
 "git init [-q | --quiet] [--bare] [--template=ДИРЕКТОРИЯ_С_ШАБЛОНИ] [--"
 "shared[=ПРАВА]] [ДИРЕКТОРИЯ]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "права"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 "указване, че хранилището на Git ще бъде споделено от повече от един "
 "потребител"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "задаване на името на първоначалния клон"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "алгоритъм"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "указване на алгоритъм за контролна сума"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "опциите „--separate-git-dir“ и „--bare“ са несъвместими"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "директорията „%s“ не може да бъде създадена"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "не може да се влезе в директорията „%s“"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -17236,12 +17302,12 @@
 "%s (или --work-tree=ДИРЕКТОРИЯ) изисква указването на %s (или --git-"
 "dir=ДИРЕКТОРИЯ)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Работното дърво в „%s“ е недостъпно"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "опцията „--separate-git-dir“ е несъвместима с голо хранилище"
 
@@ -17352,85 +17418,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "опцията „-LДИАПАЗОН:ФАЙЛ“ не може да се ползва с път"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Резултат: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: повреден файл"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "обектът не може да бъде прочетен: %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "неизвестен вид: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: неправилно придружаващо писмо от режима на описание"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "не е зададена стойност на „format.headers“"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "файлът-кръпка „%s“ не може да бъде отворен"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "трябва да зададете точно един диапазон"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "не е диапазон"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "придружаващото писмо трябва да е форматирано като е-писмо"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "неуспешно създаване на придружаващо писмо"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "неправилен формат на заглавната част за отговор „in-reply-to“: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [ОПЦИЯ…] [ОТ | ДИАПАЗОН_НА_ВЕРСИИТЕ]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "може да укажете максимум една директория за изход"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "непознато подаване: „%s“"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "„%s“ не е указател или не сочи към нищо"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "точната база за сливане не може да бъде открита"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -17441,307 +17507,307 @@
 "Може ръчно да зададете базово подаване чрез „--"
 "base=<ИДЕНТИФИКАТОР_НА_БАЗОВО_ПОДАВАНЕ>“."
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "точната база при сливане не може да бъде открита"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "базовото подаване трябва да е предшественикът на списъка с версиите"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "базовото подаване не може да е в списъка с версиите"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "идентификаторът на кръпката не може да бъде получен"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 "неуспешно определяне на началото на диапазонната разлика на текущата поредица"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 "„%s“ се ползва като началото на диапазонната разлика на текущата поредица"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "номерация „[PATCH n/m]“ дори и при единствена кръпка"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "номерация „[PATCH]“ дори и при множество кръпки"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "извеждане на кръпките на стандартния изход"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "създаване на придружаващо писмо"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "проста числова последователност за имената на файловете-кръпки"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "ЗНАЦИ"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "използване на тези ЗНАЦИ за суфикс вместо „.patch“"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "номерирането на кръпките да започва от този БРОЙ, а не с 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "номер на редакция"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "отбелязване, че това е N-тата поредна редакция на поредицата от кръпки"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "максимална дължина на име на всеки пакетен файл"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "използване на „[RFC PATCH]“ вместо „[PATCH]“"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "режим-придружаващо-писмо-по-описание"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "генериране на частите на придружаващото писмо на базата на описанието на "
 "клона"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "използване на този „[ПРЕФИКС]“ вместо „[PATCH]“"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "запазване на изходните файлове в тази ДИРЕКТОРИЯ"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "без добавяне/махане на префикса „[PATCH]“"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "без извеждане на разлики между двоични файлове"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "в заглавната част „From:“ (от) контролната сума да е само от нули"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "без кръпки, които присъстват в следения клон"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 "извеждане във формат за кръпки, а на в стандартния (кръпка и статистика)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "Опции при изпращане"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "ЗАГЛАВНА_ЧАСТ"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "добавяне на тази ЗАГЛАВНА_ЧАСТ"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "Е-ПОЩА"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "добавяне на заглавна част „To:“ (до)"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "добавяне на заглавна част „Cc:“ (и до)"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "ИДЕНТИЧНОСТ"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "задаване на адреса в заглавната част „From“ (от) да е тази ИДЕНТИЧНОСТ.  Ако "
 "не е зададена такава, се взима адреса на подаващия"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr ""
 "първото съобщение да е в отговор на е-писмото с този "
 "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "граница"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "прикрепяне на кръпката"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "включване на кръпката в текста на писмата"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr ""
 "използване на нишки за съобщенията.  СТИЛът е „shallow“ (плитък) или "
 "„deep“ (дълбок)"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "подпис"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "добавяне на поле за подпис"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "БАЗОВО_ПОДАВАНЕ"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "добавяне на необходимото БАЗово дърво към поредицата от кръпки"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "добавяне на подпис от файл"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "без извеждане на имената на кръпките"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "извеждане на напредъка във фазата на създаване на кръпките"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "показване на промените спрямо ВЕРСията в придружаващото писмо или единствена "
 "кръпка"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "показване на промените спрямо указателя на ВЕРСията в придружаващото писмо "
 "или единствена кръпка"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "процент за претегляне при оценка на създаването"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "грешна идентичност: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "опциите „-n“ и „-k“ са несъвместими"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "опциите „--subject-prefix“/„-rfc“ и „-k“ са несъвместими"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "опцията „--name-only“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "опцията „--name-status“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "опцията „--check“ е несъвместима с генерирането на кръпки"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 "опциите „--stdout“, „--output“ и „--output-directory“ са несъвместими една с "
 "друга"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 "опцията „--interdiff“ изисква опция „--cover-letter“ или единствена кръпка"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Разлика в разликите:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Разлика в разликите спрямо v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "опцията „--creation-factor“ изисква опция „--range-diff“"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 "опцията „--range-diff“ изисква опция „--cover-letter“ или единствена кръпка"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Диапазонна разлика:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Диапазонна разлика спрямо v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "файлът „%s“ с подпис не може да бъде прочетен"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Създаване на кръпки"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "неуспешно създаване на изходни файлове"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [ОТДАЛЕЧЕН_КЛОН [ВРЪХ [ПРЕДЕЛ]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -18118,14 +18184,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [ОПЦИЯ…] [ПОДАВАНЕ…]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "опцията „-m“ изисква стойност"
@@ -18286,7 +18344,7 @@
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Непозната опция за рекурсивното сливане „merge-recursive“: „-X%s“"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:760 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "„%s“ не може да бъде записан"
@@ -18601,7 +18659,7 @@
 "при препакетиране пакетните файлове, които са с по-малък от този размер, да "
 "се обединяват в пакети с по-голям от този размер"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "непозната подкоманда: %s"
@@ -19153,7 +19211,7 @@
 msgid "read object names from the standard input"
 msgstr "изчитане на имената на обектите от стандартния вход"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "само извеждане без действително окастряне"
 
@@ -19169,25 +19227,25 @@
 msgid "use notes from <notes-ref>"
 msgstr "да се използва бележката сочена от този УКАЗАТЕЛ_ЗА_БЕЛЕЖКА"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "непозната подкоманда: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [ОПЦИЯ…] [< СПИСЪК_С_УКАЗАТЕЛИ | < СПИСЪК_С_ОБЕКТИ]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [ОПЦИЯ…] ПРЕФИКС_НА_ИМЕТО [< СПИСЪК_С_УКАЗАТЕЛИ | < "
 "СПИСЪК_С_ОБЕКТИ]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -19196,112 +19254,112 @@
 "write_reuse_object: „%s“ не може да се открие, а се очакваше при отместване "
 "%<PRIuMAX> в пакетния файл „%s“"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "лоша контролна сума за пакетирания обект „%s“"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "пакетиран обект с грешки за „%s“"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "рекурсивна разлика за обект „%s“"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "подредени бяха %u обекта, а се очакваха %<PRIu32>"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "очаква се обект при отместване %<PRIuMAX> в пакетния файл „%s“"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "изключване на записването на битовата маска, пакетите са разделени поради "
 "стойността на „pack.packSizeLimit“"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Записване на обектите"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "бяха записани %<PRIu32> обекти, а се очакваха %<PRIu32>"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "изключване на записването на битовата маска, защото някои обекти няма да се "
 "пакетират"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "прекалено далечно начало на отместването за обектите-разлика за „%s“"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "недостижимо начало на отместването за обектите-разлика за „%s“"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Преброяване на обектите"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "заглавната част на „%s“ не може да бъде анализирана"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "обектът „%s“ не може да се прочете"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "обектът „%s“ е с неправилна дължина (%<PRIuMAX>, а не %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "неоптимизиран пакет — паметта свърши"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Делта компресията ще използва до %d нишки"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 "обектите, които може да бъдат достигнати от етикета „%s“, не може да бъдат "
 "пакетирани"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Компресиране на обектите"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "неправилен брой разлики"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -19310,7 +19368,7 @@
 "стойността на „uploadpack.blobpackfileuri“ трябва да е във формат "
 "„СУМА_НА_ОБЕКТ СУМА_НА_ПАКЕТ АДРЕС“ (получена е „%s“)"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -19318,17 +19376,17 @@
 "вече има настройка за обекта в друг ред „uploadpack."
 "blobpackfileuri“ (получена е „%s“)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "видът на обекта „%s“ в пакет „%s“ не може да бъде определен"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "пакетът „%s“ не може да се открие"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -19337,7 +19395,7 @@
 "очаква се идентификатор на краен обект, а не:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -19346,264 +19404,264 @@
 "очаква се идентификатор на обект, а не:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "неправилна стойност за „--missing“"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "индексът на пакетния файл не може да бъде отворен"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "непакетираният обект в „%s“ не може да бъде анализиран"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "оставането на обекта непакетиран не може да бъде наложено"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "„%s“ не е версия"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "неправилна версия „%s“"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "скорошните обекти не може да бъдат добавени"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "неподдържана версия на индекса „%s“"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "неправилна версия на индекса „%s“"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "ВЕРСИЯ[,ОТМЕСТВАНЕ]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "запазване на индекса на пакетните файлове във форма̀та с указаната версия"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "максимален размер на всеки пакетен файл"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "игнориране на обектите заети от други хранилища на обекти"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "игнориране на пакетираните обекти"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "ограничаване на прозореца за пакетиране по брой обекти"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "ограничаване на прозореца за пакетиране и по памет освен по брой обекти"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 "максимална дължина на веригата от разлики, която е позволена в пакетния файл"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "преизползване на съществуващите разлики"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "преизползване на съществуващите обекти"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "използване на обекти „OFS_DELTA“"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "стартиране на нишки за претърсване на най-добрите съвпадения на разликите"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "без създаване на празен пакетен файл"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "изчитане на версиите от стандартния вход"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "ограничаване до все още непакетираните обекти"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr ""
 "включване на всички обекти, които може да се достигнат от произволен указател"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "включване и на обектите сочени от записите в журнала на указателите"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "включване и на обектите сочени от индекса"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "изчитане на пакетите от стандартния вход"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "извеждане на пакета на стандартния изход"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 "включване и на обектите-етикети, които сочат към обектите, които ще бъдат "
 "пакетирани"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "запазване на недостижимите обекти"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "пакетиране и на недостижимите обекти"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "разпакетиране на недостижимите обекти, които са по-нови от това ВРЕМЕ"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "използване на алгоритъм за частична достижимост"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "създаване на съкратени пакети"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "пакетиране подходящо за плитко доставяне"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "игнориране на пакетите, които са придружени от файл „.keep“"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "пропускане на този пакет"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "ниво на компресиране при пакетиране"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr ""
 "извеждане на всички родители — дори и тези, които нормално са скрити при "
 "присажданията"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "използване на съществуващи индекси на база битови маски за ускоряване на "
 "преброяването на обектите"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "запазване и на индекс на база битова маска, заедно с индекса за пакета"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "записване на индекси на база битови маски при възможност"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "как да се обработват липсващите обекти"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "без пакетиране на обекти в гарантиращи пакети"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "без промяна на групите при делта компресия"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "протокол"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "без ползване на настройки „uploadpack.blobpackfileuri“ с този протокол"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "веригата с разлики е прекалено дълбока — %d, ще се ползва %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 "Стойността на настройката „pack.deltaCacheLimit“ е прекалено голяма.  Ще се "
 "ползва %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "опцията „--max-pack-size“ не може да се използва за създаване на пакетни "
 "файлове за пренос"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "минималният размер на пакетите е 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 "опцията „--thin“не може да се използва за създаване на пакетни файлове с "
 "индекс"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "опциите „--keep-unreachable“ и „--unpack-unreachable“ са несъвместими"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "опцията „-filter“ изисква „-stdout“"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "опциите „-filter“ и „--stdin-packs“ са несъвместими"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr ""
 "вътрешният списък на указатели и опцията „--stdin-packs“ са несъвместими"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Изброяване на обектите"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19825,19 +19883,19 @@
 "използвайте опциите „--rebase“, „--no-rebase“, „--ff-only“.  Те са с\n"
 "приоритет пред настройките.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Обновяване на все още несъздаден клон с промените от индекса"
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "издърпване с пребазиране"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "трябва да подадете или скатаете промените."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19847,7 +19905,7 @@
 "доставянето обнови върха на текущия клон.  Работното\n"
 "ви копие бе превъртяно от подаване „%s“."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19864,15 +19922,15 @@
 "    git reset --hard\n"
 "за връщане към нормално състояние."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Не може да сливате множество клони в празен върхов указател."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Не може да пребазирате върху повече от един клон."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "пребазирането е невъзможно заради локално записаните промени по подмодулите"
@@ -19937,7 +19995,7 @@
 "\n"
 "    git push %s HEAD:ИМЕ_НА_ОТДАЛЕЧЕНИЯ_КЛОН\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19951,14 +20009,21 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 "Текущият клон „%s“ следи няколко отдалечени клона, не може просто да "
 "изтласкате."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Не сте указали версия за подаване, а настройката „push.default“ е "
+"„nothing“ (нищо без изрично указана версия да не се изтласква)"
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19970,14 +20035,7 @@
 "Трябва да укажете коя версия да се изтласка, за обновяване на отдалечения "
 "клон."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Не сте указали версия за подаване, а настройката „push.default“ е "
-"„nothing“ (нищо без изрично указана версия да не се изтласква)"
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19991,7 +20049,7 @@
 "преди отново да изтласкате промените.  За повече информация вижте раздела\n"
 "„Note about fast-forwards“ в страницата от ръководството „git push --help“."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -20005,7 +20063,7 @@
 "информация погледнете раздела „Note about fast-forwards“ в страницата от\n"
 "ръководството „git push --help“."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -20024,14 +20082,14 @@
 "страницата\n"
 "от ръководството „git push --help“."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Изтласкването е отхвърлено, защото в отдалеченото хранилище съществува "
 "етикет,\n"
 "който ще припокриете с етикет от вашето хранилище."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -20041,7 +20099,7 @@
 "указател, който вече сочи към обект, който не е подаване, както и тепърва\n"
 "да го промените да сочи към подобен обект.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -20052,107 +20110,107 @@
 "последното изтегляне.  Внесете отдалечените промени (напр. с командата\n"
 "„git pull…“), преди отново принудително да изтласкате промените.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Изтласкване към „%s“\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "част от указателите не бяха изтласкани към „%s“"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "хранилище"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "изтласкване на всички указатели"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "огледално копие на всички указатели"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "изтриване на указателите"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "изтласкване на етикетите (несъвместимо с опциите „--all“ и „--mirror“)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "принудително обновяване"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "ИМЕ_НА_УКАЗАТЕЛ:ОЧАКВАНА_СТОЙНОСТ"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "УКАЗАТЕЛят трябва първоначално да е с тази ОЧАКВАНА_СТОЙНОСТ"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr ""
 "изискване обновяванията в отдалечените хранилища да се внасят и в локалното"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "управление на рекурсивното изтласкване на подмодулите"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "използване на съкратени пакети"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "програма за получаването на пакети"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "задаване на отдалеченото хранилище за командите „git pull/status“"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "окастряне на указателите, които са премахнати от локалното хранилище"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "без изпълнение на куката преди изтласкване (pre-push)"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr ""
 "изтласкване на липсващите в отдалеченото хранилище, но свързани с текущото "
 "изтласкване, етикети"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "подписване на изтласкването с GPG"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "изискване на атомарни операции от отсрещната страна"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr ""
 "опцията „--delete“ е несъвместима с опциите  „--all“, „--mirror“ и „--tags“"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "опцията „--delete“ изисква поне един указател на версия"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "неправилно указано хранилище „%s“"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -20174,27 +20232,27 @@
 "\n"
 "    git push ИМЕ\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "опциите „--all“ и „--tags“ са несъвместими"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "опцията „--all“ е несъвместима с указването на версия"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "опциите „--mirror“ и „--tags“ са несъвместими"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "опцията „--mirror“ е несъвместима с указването на версия"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "опциите „--all“ и „--mirror“ са несъвместими"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "опциите за изтласкване не трябва да съдържат знак за нов ред"
 
@@ -20786,7 +20844,7 @@
 msgstr ""
 "Опцията „--edit-todo“ е достъпна само по време на интерактивно пребазиране."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Указателят „HEAD“ не може да бъде прочетен"
 
@@ -20897,8 +20955,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "ФАТАЛНА ГРЕШКА: не съществува клон „%s“"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2414
 #, c-format
 msgid "No such ref: %s"
 msgstr "Такъв указател няма: %s"
@@ -20968,7 +21026,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack ДИРЕКТОРИЯ_НА_GIT"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -21001,7 +21059,7 @@
 "За да заглушите това съобщение, като запазите стандартното поведение,\n"
 "задайте настройката „receive.denyCurrentBranch“ да е „refuse“ (отказ)."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -21022,11 +21080,11 @@
 "За да заглушите това съобщение, задайте настройката\n"
 "„receive.denyDeleteCurrent“ да е „refuse“ (отказ)."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "без извеждане на информация"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Трябва да укажете директория."
 
@@ -22026,15 +22084,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget ПЪТ… | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "регистриране на чисти корекции на конфликти в индекса"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "командата „git rerere forget“ изисква указването на път"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "неуспешно генериране на разлика за „%s“"
@@ -22191,19 +22249,19 @@
 msgid "Could not write new index file."
 msgstr "Новият индекс не може да бъде записан."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "опциите „--exclude-promisor-objects“ и „--missing“ и са несъвместими"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "филтрирането на обекти изисква опцията „--objects“"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "командата „rev-list“ не поддържа извеждането на бележки"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "опцията „--objects“ е несъвместима с изброяването"
 
@@ -22223,6 +22281,18 @@
 msgid "output in stuck long form"
 msgstr "изход в дългия формат"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "неочакван край на входа"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "липсва низ преди разделителя „--“"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Изисква точно една версия"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -22238,6 +22308,50 @@
 "За повече информация за първия вариант изпълнете „git rev-parse --parseopt -"
 "h“"
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "опцията „--resolve-git-dir“ изисква аргумент"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "„%s“ не е директория „gitdir“"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "опцията „--git-path“ изисква аргумент"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "опцията „-n“ изисква аргумент"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "опцията „--path-format“ изисква аргумент"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "неправилен аргумент за „--path-format“: „%s“"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "опцията „--default“ изисква аргумент"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "опцията „--prefix“ изисква аргумент"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "непознат режим за „--abbrev-ref“: „%s“"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "непознат режим за „--show-object-format“: „%s“"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ПОДАВАНЕ…"
@@ -22795,10 +22909,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch КЛОН [СКАТАНО]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22950,93 +23060,93 @@
 msgid "only show untracked files in the stash"
 msgstr "извеждане само на неследените файлове в скатаното"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Указателят „%s“ не може да бъде обновен да сочи към „%s“"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "съобщение при скатаване"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "командата „git stash store“ изисква точно един аргумент-ПОДАВАНЕ"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Не са избрани никакви промени"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Все още липсва първоначално подаване"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Състоянието на текущия индекс не може да бъде запазено"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Неследените файлове не може да се запазят"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Състоянието на работното дърво не може да бъде запазено"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Състоянието на работното дърво не може да бъде запазено"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "опцията „--patch“ е несъвместима с „--include-untracked“ и „--all“"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Пробвайте да използвате „git add“"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Няма никакви локални промени за скатаване"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Скатаването не може да стартира"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Текущото състояние не може да бъде запазено"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Състоянието на работната директория и индекса e запазено: „%s“"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Промените в работното дърво не може да бъдат занулени"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "запазване на индекса"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "скатаване в режим за кръпки"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "без извеждане на информация"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "скатаване и на неследените файлове"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "скатаване и на игнорираните файлове"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -23060,41 +23170,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "добавяне на „# “ в началото на всеки ред"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2423
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Очаква се пълно име на указател, а не „%s“"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 "командата „print-default-remote“ на „submodule--helper“ не приема аргументи"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "не може да се махне компонент от адреса „%s“"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
 msgid "alternative anchor for relative paths"
 msgstr "директория за определянето на относителните пътища"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:414
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=ПЪТ] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:629
+#: builtin/submodule--helper.c:652
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Във файла „.gitmodules“ не е открит адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:524
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Влизане в „%s“\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:527
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -23103,7 +23213,7 @@
 "изпълнената команда завърши с ненулев изход за „%s“\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:549
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -23114,20 +23224,20 @@
 "вложени в „%s“\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:565
 msgid "suppress output of entering each submodule command"
 msgstr "без извеждане на изход при въвеждането на всяка команда за подмодули"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:1487
 msgid "recurse into nested submodules"
 msgstr "рекурсивно обхождане на подмодулите"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:572
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] КОМАНДА"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:599
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -23136,55 +23246,55 @@
 "настройката „%s“ липсва.  Приема се, че това хранилище е правилният източник "
 "за себе си."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:666
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Неуспешно регистриране на адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Регистриран е подмодул „%s“ (%s) за пътя към подмодул „%s“\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:680
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: препоръчва се режим на обновяване за подмодула „%s“\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:687
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Неуспешно регистриране на режима на обновяване за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:709
 msgid "suppress output for initializing a submodule"
 msgstr "без извеждане на информация при инициализирането на подмодул"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:714
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [ОПЦИЯ…] [ПЪТ]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:787 builtin/submodule--helper.c:922
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "Във файла „.gitmodules“ липсва информация за пътя „%s“"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:835
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "указателят сочен от „HEAD“ в подмодула „%s“ не може да бъде открит"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:862 builtin/submodule--helper.c:1457
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "неуспешно рекурсивно обхождане на подмодула „%s“"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
 msgid "suppress submodule status output"
 msgstr "без изход за състоянието на подмодула"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:887
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -23192,100 +23302,100 @@
 "използване на подаването указано в индекса, а не това от указателя „HEAD“ на "
 "подмодула"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:893
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:917
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name ПЪТ"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:989
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "● %s %s(обект-BLOB)→%s(подмодул)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:992
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "● %s %s(подмодул)→%s(обект-BLOB)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1005
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1055
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "неуспешно изчисляване на контролната сума на обект от „%s“"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1059
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "неочакван режим „%o“\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1300
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr ""
 "използване на подаването указано в индекса, а не това от указателя „HEAD“ на "
 "подмодула"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
+#: builtin/submodule--helper.c:1302
+msgid "compare the commit in the index with that in the submodule HEAD"
 msgstr ""
-"за сравнение на подаването указано в индекса с това от указателя „HEAD“ на "
+"сравнение на подаването указано в индекса с това от указателя „HEAD“ на "
 "подмодула"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1304
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "прескачане на подмодули, чиято настройка „ignore_config“ е „all“"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1306
 msgid "limit the summary size"
 msgstr "ограничаване на размера на обобщението"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1311
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [ОПЦИЯ…] [ПОДАВАНЕ] -- [ПЪТ]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1335
 msgid "could not fetch a revision for HEAD"
 msgstr "не може да се достави версия за „HEAD“"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1340
 msgid "--cached and --files are mutually exclusive"
 msgstr "опциите „--cached“ и „--files“ са несъвместими"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1407
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Синхронизиране на адреса на подмодул за „%s“\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1413
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "неуспешно регистриране на адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1427
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде получен"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1438
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде променен"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1485
 msgid "suppress output of synchronizing submodule url"
 msgstr "без извеждане на информация при синхронизирането на подмодул"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1492
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [ПЪТ]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1546
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -23294,7 +23404,7 @@
 "Работното дърво на подмодул „%s“ съдържа директория „.git“.\n"
 "(ако искате да ги изтриете заедно с цялата им история, използвайте „rm -rf“)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1558
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -23303,47 +23413,47 @@
 "Работното дърво на подмодул „%s“ съдържа локални промени.  Може да ги "
 "отхвърлите с опцията „-f“"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1566
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Директорията „%s“ е изчистена\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr ""
 "Директорията към работното дърво на подмодула „%s“ не може да бъде изтрита\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1579
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "празната директория за подмодула „%s“ не може да бъде създадена"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1595
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Регистрацията на подмодула „%s“ (%s) за пътя „%s“ е премахната\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1624
 msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 "изтриване на работните дървета на подмодулите, дори когато те съдържат "
 "локални промени"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1625
 msgid "unregister all submodules"
 msgstr "премахване на регистрациите на всички подмодули"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1630
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr "git submodule deinit [--quiet] [-f | --force] [--all | [--] [ПЪТ…]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1644
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Използвайте „--all“, за да премахнете всички подмодули"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1713
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -23355,47 +23465,47 @@
 "задайте настройката „submodule.alternateErrorStrategy“ да е „info“ или\n"
 "при клониране ползвайте опцията „--reference-if-able“ вместо „--reference“."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1752 builtin/submodule--helper.c:1755
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "към подмодула „%s“ не може да се добави алтернативен източник: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1791
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr ""
 "Непозната стойност „%s“ за настройката „submodule.alternateErrorStrategy“"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1798
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Непозната стойност „%s“ за настройката „submodule.alternateLocation“"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1822
 msgid "where the new submodule will be cloned to"
 msgstr "къде да се клонира новият подмодул"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1825
 msgid "name of the new submodule"
 msgstr "име на новия подмодул"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1828
 msgid "url where to clone the submodule from"
 msgstr "адрес, от който да се клонира новият подмодул"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1836
 msgid "depth for shallow clones"
 msgstr "дълбочина на плитките хранилища"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1839 builtin/submodule--helper.c:2348
 msgid "force cloning progress"
 msgstr "извеждане на напредъка на клонирането"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1841 builtin/submodule--helper.c:2350
 msgid "disallow cloning into non-empty directory"
 msgstr "предотвратяване на клониране в непразна история"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1848
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -23404,108 +23514,108 @@
 "git submodule--helper clone [--prefix=ПЪТ] [--quiet] [--reference ХРАНИЛИЩЕ] "
 "[--name ИМЕ] [--depth ДЪЛБОЧИНА] [--single-branch] --url АДРЕС --path ПЪТ"
 
-#: builtin/submodule--helper.c:1874
+#: builtin/submodule--helper.c:1873
 #, c-format
 msgid "refusing to create/use '%s' in another submodule's git dir"
 msgstr ""
 "„%s“ не може нито да се създаде, нито да се ползва в директорията на git на "
 "друг подмодул"
 
-#: builtin/submodule--helper.c:1885
+#: builtin/submodule--helper.c:1884
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "Неуспешно клониране на адреса „%s“ в пътя „%s“ като подмодул"
 
-#: builtin/submodule--helper.c:1889
+#: builtin/submodule--helper.c:1888
 #, c-format
 msgid "directory not empty: '%s'"
 msgstr "директорията не е празна: „%s“"
 
-#: builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:1900
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "директорията на подмодула „%s“ не може да бъде получена"
 
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1936
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Неправилен режим на обновяване „%s“ за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1940
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Настроен е неправилен режим на обновяване „%s“ за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2041
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Пътят на подмодула „%s“ не е инициализиран"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2045
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Вероятно искахте да използвате „update --init“?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2075
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Прескачане на неслетия подмодул „%s“"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2104
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Прескачане на подмодула „%s“"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2254
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Неуспешен опит за клониране на „%s“.  Насрочен е втори опит"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2265
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr ""
 "Втори неуспешен опит за клониране на „%s“.  Действието се преустановява"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2573
 msgid "path into the working tree"
 msgstr "път към работното дърво"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2330
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "път към работното дърво, през границите на вложените подмодули"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2334
 msgid "rebase, merge, checkout or none"
 msgstr ""
 "„rebase“ (пребазиране), „merge“ (сливане), „checkout“ (изтегляне) или "
 "„none“ (нищо да не се прави)"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2340
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "извършване на плитко клониране, отрязано до указания брой версии"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2343
 msgid "parallel jobs"
 msgstr "брой паралелни процеси"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2345
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "дали първоначалното клониране да е плитко, както се препоръчва"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2346
 msgid "don't print cloning progress"
 msgstr "без извеждане на напредъка на клонирането"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2357
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=ПЪТ] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2370
 msgid "bad value for update parameter"
 msgstr "неправилен параметър към опцията „--update“"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2418
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -23514,83 +23624,83 @@
 "Клонът на подмодула „%s“ е настроен да наследява клона от обхващащия проект, "
 "но той не е на никой клон"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2541
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "не може да се получи връзка към хранилище за подмодула „%s“"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2574
 msgid "recurse into submodules"
 msgstr "рекурсивно обхождане подмодулите"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2580
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [ОПЦИЯ…] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2636
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "проверка дали писането във файла „.gitmodules“ е безопасно"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2639
 msgid "unset the config in the .gitmodules file"
 msgstr "изтриване на настройка във файла „.gitmodules“"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2644
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config ИМЕ [СТОЙНОСТ]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2645
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset ИМЕ"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2646
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2665 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "файлът „.gitmodules“ трябва да е в работното дърво"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2681
 msgid "suppress output for setting url of a submodule"
 msgstr "без извеждане на информация при задаването на адреса на подмодул"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2685
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] [ПЪТ] [НОВ_ПЪТ]"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2718
 msgid "set the default tracking branch to master"
 msgstr "задаване на стандартния следящ клон да е „master“"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2720
 msgid "set the default tracking branch"
 msgstr "задаване на стандартния следящ клон"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2724
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) ПЪТ"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2725
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-b|--branch) КЛОН ПЪТ"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2732
 msgid "--branch or --default required"
 msgstr "необходимо е една от опциите „--branch“ и „--default“"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2735
 msgid "--branch and --default are mutually exclusive"
 msgstr "опциите „--branch“ и „--default“ са несъвместими"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2792 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "„%s“ не поддържа опцията „--super-prefix“"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2798
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "„%s“ не е подкоманда на „submodule--helper“"
@@ -24238,7 +24348,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock [ПЪТ]"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "неуспешно изтриване на „%s“"
@@ -24248,25 +24358,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "Изтриване на „%s/%s“: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "докладване на окастрените работни дървета"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "обявяване на работните копия по-стари от това ВРЕМЕ за остарели"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "„%s“ вече съществува"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "целта не може да се ползва за работно дърво: „%s“"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -24276,7 +24386,7 @@
 "За изрично задаване ползвайте „%s -f -f“, а за изчистване —\n"
 "„unlock“, „prune“ или „remove“"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -24286,29 +24396,33 @@
 "За изрично задаване ползвайте „%s -f“, а за изчистване —\n"
 "„prune“ или „remove“"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "директорията „%s“ не може да бъде създадена"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "инициализация"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Приготвяне на работното дърво (нов клон „%s“)"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 "Приготвяне на работното дърво (зануляване на клона „%s“, който сочеше към "
 "„%s“)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Приготвяне на работното дърво (изтегляне на „%s“)"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Подготвяне на работно дърво (указателят „HEAD“ не свързан: %s)"
@@ -24333,86 +24447,94 @@
 msgid "keep the new working tree locked"
 msgstr "новото работно дърво да остане заключено"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "причина за заключване"
+
+#: builtin/worktree.c:495
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "задаване на режима на следене (виж git-branch(1))"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:498
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "опит за напасване на името на новия клон с това на следящ клон"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:506
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "опциите „-b“, „-B“ и „--detach“ са несъвместими една с друга"
 
-#: builtin/worktree.c:565
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "опцията „--reason“ изисква „--lock“"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "добавена с „--lock“"
+
+#: builtin/worktree.c:574
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "„--[no-]track“ може да се използва само при създаването на нов клон"
 
-#: builtin/worktree.c:682
+#: builtin/worktree.c:691
 msgid "show extended annotations and reasons, if available"
 msgstr "извеждане на подробни анотации и обяснения, ако такива са налични"
 
-#: builtin/worktree.c:684
+#: builtin/worktree.c:693
 msgid "add 'prunable' annotation to worktrees older than <time>"
 msgstr ""
 "добавяне на анотация за окастряне на работните копия по-стари от това ВРЕМЕ"
 
-#: builtin/worktree.c:693
+#: builtin/worktree.c:702
 msgid "--verbose and --porcelain are mutually exclusive"
 msgstr "опциите „--verbose“ и „--porcelain“ са несъвместими"
 
-#: builtin/worktree.c:720
-msgid "reason for locking"
-msgstr "причина за заключване"
-
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "„%s“ не е работно дърво"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Основното дърво не може да се отключи или заключи"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "„%s“ вече е заключено, защото „%s“"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "„%s“ вече е заключено"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "„%s“ не е заключено"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "не може да местите или изтривате работни дървета, в които има подмодули"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "принудително преместване, дори работното дърво да не е чисто или да е "
 "заключено"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "„%s“ е основно работно дърво"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "името на целта не може да се определи от „%s“"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -24421,7 +24543,7 @@
 "не може да преместите заключено работно дърво, причина за заключването: %s\n"
 "или го отключете, или го преместете принудително с „move -f -f“"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -24429,41 +24551,41 @@
 "не може да преместите заключено работно дърво:\n"
 "или го отключете, или го преместете принудително с „move -f -f“"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 "проверките са неуспешни, работното дърво не може да бъде преместено: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "„%s“ не може да се премести в „%s“"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "неуспешно изпълнение на „git status“ върху „%s“"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "„%s“ съдържа променени или нови файлове, за принудително изтриване е "
 "необходима опцията „--force“"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 "командата „git status“ не може да се изпълни за „%s“, код за грешка: %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "принудително изтриване, дори работното дърво да не е чисто или да е заключено"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -24472,7 +24594,7 @@
 "не може да изтриете заключено работно дърво, причина за заключването: %s\n"
 "или го отключете, или го изтрийте принудително с „remove -f -f“"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -24480,17 +24602,17 @@
 "не може да изтриете заключено работно дърво:\n"
 "или го отключете, или го изтрийте принудително с „remove -f -f“"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "проверките са неуспешни, работното дърво не може да бъде изтрито: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "поправяне: %s: „%s“"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "грешка: %s: „%s“"
@@ -24839,7 +24961,7 @@
 "Реализацията на SSL не може да се зададе да е „%s“, защото вече е зададена "
 "друга"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -24893,100 +25015,100 @@
 msgid "redirecting to %s"
 msgstr "пренасочване към „%s“"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "получен е EOF, в режим без поддръжка за това"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "отдалеченият сървър изпрати разделител без запазване на състоянието"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "отдалеченият сървър прати неочакван пакет за край на отговор"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 "данните за POST не може да се прочетат наново, пробвайте да увеличите "
 "настройката „http.postBuffer“"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: неправилeн знак за дължина на ред: %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: неочакван пакет за край на отговор"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "Неуспешно отдалечено извикване.  %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "толкова големи изтласквания не може да се изпълнят"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 "заявката не може да бъде декомпресирана, грешка от „zlib“ при "
 "декомпресиране: %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 "заявката не може да бъде декомпресирана; грешка от „zlib“ при завършване: %d<"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "получени са %d байта от заглавна част"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "очакват се още %d байта от тялото на отговора"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "опростеният транспорт по http не поддържа плитки клиенти"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "неуспешно доставяне."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "умният вариант на http не може да доставя по SHA1"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "протоколна грешка: очаква се SHA1 или указател, а бе получено: „%s“"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "транспортът по http не поддържа „%s“"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "неуспешно изпълнение на „git-http-push“"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: употреба: git remote-curl ХРАНИЛИЩЕ [АДРЕС]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: грешка при изчитането на потока команди от git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: опит за доставяне без локално хранилище"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: непозната команда „%s“ от git"
@@ -26745,42 +26867,42 @@
 msgid "invalid argument %s, expecting --"
 msgstr "указан е неправилен аргумент „%s“, а се очаква „--“."
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr ""
 "разликата между местния часови пояс и GMT съдържа дробна част от минута\n"
 "\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "разликата между местния часовия пояс и GMT е 24 часа или повече\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "ФАТАЛНА ГРЕШКА: „%s“ не завърши успешно, а с код %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr ""
 "текстовият редактор приключи работата с грешка, всичко се преустановява"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "„%s“ съдържа временна версия на подготвяното е-писмо.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "„%s.final“ съдържа подготвеното е-писмо.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "опцията „--dump-aliases“ е несъвместима с другите опции\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -26791,11 +26913,11 @@
 "забележете знака „e“.  За да изключите тази проверка, задайте\n"
 "настройката „sendemail.forbidSendmailVariables“ да е „false“ (лъжа̀).\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Командата „git format-patch“ не може да се изпълни извън хранилище\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -26803,40 +26925,40 @@
 "„batch-size“ и „relogin“ трябва да се указват заедно (или чрез командния "
 "ред, или чрез настройките)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Непознато поле за опцията „--suppress-cc“: „%s“\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Непозната стойност за „--confirm“: %s\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr ""
 "ПРЕДУПРЕЖДЕНИЕ: псевдоними за sendmail съдържащи кавички („\"“) не се "
 "поддържат: %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: „:include:“ не се поддържа: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr ""
 "ПРЕДУПРЕЖДЕНИЕ: пренасочвания „/file“ или „|pipe“ не се поддържат: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: редът за „sendmail“ не е разпознат: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -26851,12 +26973,12 @@
 "    ● укажете „./%s“ за файл;\n"
 "    ● използвате опцията „--format-patch“ за диапазон.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Директорията „%s“ не може да се отвори: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -26866,17 +26988,17 @@
 "Не са указани кръпки!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "В „%s“ липсва тема"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "„%s“ не може да се отвори за запис: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26891,27 +27013,27 @@
 "\n"
 "Изтрийте всичко, ако не искате да изпратите обобщаващо писмо.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "„%s“ не може да се отвори: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "„%s.final“ не може да се отвори: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Обобщаващото писмо е празно и се прескача\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Сигурни ли сте, че искате да ползвате „%s“ [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
@@ -26919,11 +27041,11 @@
 "Следните файлове са 8 битови, но не са с обявена заглавна част „Content-"
 "Transfer-Encoding“.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Кое 8 битово кодиране се ползва [стандартно: UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26936,22 +27058,22 @@
 "все още е с шаблонното заглавие „*** SUBJECT HERE ***“.  Ползвайте опцията\n"
 "„--force“, ако сте сигурни, че точно това искате да изпратите.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "На кой да се пратят е-писмата (незадължително поле)"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "ФАТАЛНА ГРЕШКА: „%s“ е псевдоним на себе си\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "Идентификатор на съобщение „Message-ID“, което да се използва за обявяването "
 "на отговор „In-Reply-To“ (незадължително поле)"
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "ГРЕШКА: не може да се извлече адрес от „%s“\n"
@@ -26959,18 +27081,18 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr ""
 "Какво да се направи с този адрес? „q“ (спиране), „d“ (изтриване), "
 "„e“ (редактиране): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "Пътят към сертификат „%s“ не съществува."
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26998,116 +27120,116 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 "Изпращане на е-писмото? „y“ (да), „n“ (не), „e“ (редактиране), „q“ (изход), "
 "„a“ (всичко): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Изискване на отговор към това е-писмо"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Сървърът за SMTP не е настроен правилно."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Сървърът не поддържа „STARTTLS“! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "Неуспешно изпълнение на STARTTLS! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Подсистемата за SMTP не може да се инициализира.  Проверете настройките и "
 "използвайте опцията: „--smtp-debug“."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "„%s“ не може да бъде изпратен\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Проба за изпращане на „%s“\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Изпращане на „%s“\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Успех при пробата.  От журнала:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "Успех.  От журнала:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Резултат: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Резултат: успех\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "файлът „%s“ не може да бъде отворен"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Добавяне на „до: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(не-mbox) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(тяло) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Не може да бъде се изпълни „%s“"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Добавяне на „%s: %s“ от: „%s“\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) програмният канал не може да се затвори за изпълнението на „%s“"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "съобщението не може да се изпрати чрез 7 битови знаци"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "неправилно кодиране за пренос"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -27118,12 +27240,12 @@
 "%s\n"
 "ПРЕДУПРЕЖДЕНИЕ: не са пратени никакви кръпки\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "„%s“ не може да се отвори: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -27132,13 +27254,13 @@
 "ФАТАЛНА ГРЕШКА: %s: %d е повече от 998 знака\n"
 "ПРЕДУПРЕЖДЕНИЕ: не са пратени никакви кръпки\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "„%s“ се пропуска, защото е с разширение за архивен файл: „%s“.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Наистина ли искате да изпратите „%s“? [y|N]: "
diff --git a/po/ca.po b/po/ca.po
index 4c45170..e6e77f3 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -18,13 +18,16 @@
 #   dry-run          |  fer una prova
 #   fatal            |  fatal
 #   flush            |  buidar / buidatge
+#   hint             |  consell
 #   hook             |  lligam
 #   hunk             |  tros
 #   not supported    |  no està admès
-#   repository       |  dipòsit
+#   repository       |  repositori
 #   setting          |  paràmetre
+#   shallow          |  superficial
 #   skip             |  ometre
 #   squelch          |  silenciar
+#   sparse-index     |  índex dispers
 #   token            |  testimoni
 #   unset            |  desassignar
 #   upstream         |  font
@@ -40,8 +43,9 @@
 #   Anglès           |  Català
 #   -----------------+---------------------------------
 #   blame            |  «blame»
-#   HEAD             |  HEAD (f, la branca)
+#   HEAD             |  HEAD (f, la branca) - (no s'apostrofa)
 #   cherry pick      |  «cherry pick»
+#   promisor         |  «promisor»
 #   rebase           |  «rebase»
 #   stage            |  «stage»
 #   stash            |  «stash»
@@ -799,7 +803,7 @@
 #: advice.c:161
 #, c-format
 msgid "%shint: %.*s%s\n"
-msgstr "%spista: %.*s%s\n"
+msgstr "%sconsell: %.*s%s\n"
 
 #: advice.c:252
 msgid "Cherry-picking is not possible because you have unmerged files."
@@ -929,15 +933,15 @@
 
 #: apply.c:139
 msgid "--3way outside a repository"
-msgstr "--3way fora d'un dipòsit"
+msgstr "--3way fora d'un repositori"
 
 #: apply.c:150
 msgid "--index outside a repository"
-msgstr "--index fora d'un dipòsit"
+msgstr "--index fora d'un repositori"
 
 #: apply.c:153
 msgid "--cached outside a repository"
-msgstr "--cached fora d'un dipòsit"
+msgstr "--cached fora d'un repositori"
 
 #: apply.c:800
 #, c-format
@@ -1183,15 +1187,14 @@
 msgstr "%s: no coincideix amb l'índex"
 
 #: apply.c:3571
-#, fuzzy
 msgid "repository lacks the necessary blob to perform 3-way merge."
 msgstr ""
-"al dipòsit li manca el blob necessari per a retrocedir a una fusió de 3 vies."
+"al repositori li manca el blob necessari per a fer a una fusió de 3 vies."
 
 #: apply.c:3574
-#, fuzzy, c-format
+#, c-format
 msgid "Performing three-way merge...\n"
-msgstr "S'està retrocedint a una fusió de 3 vies...\n"
+msgstr "S'està fent una fusió de 3 vies...\n"
 
 #: apply.c:3590 apply.c:3594
 #, c-format
@@ -1199,9 +1202,9 @@
 msgstr "no es poden llegir els continguts actuals de «%s»"
 
 #: apply.c:3606
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to perform three-way merge...\n"
-msgstr "S'ha produït un error en retrocedir a una fusió de 3 vies...\n"
+msgstr "S'ha produït un error en fer una fusió de tres vies...\n"
 
 #: apply.c:3620
 #, c-format
@@ -1214,9 +1217,9 @@
 msgstr "S'ha aplicat el pedaç a «%s» netament.\n"
 
 #: apply.c:3642
-#, fuzzy, c-format
+#, c-format
 msgid "Falling back to direct application...\n"
-msgstr "S'està retrocedint a una fusió de 3 vies...\n"
+msgstr "S'està usant alternativament l'aplicació directa...\n"
 
 #: apply.c:3654
 msgid "removal patch leaves file contents"
@@ -1481,9 +1484,8 @@
 msgstr "aplica el pedaç també (useu amb --stat/--summary/--check)"
 
 #: apply.c:5027
-#, fuzzy
 msgid "attempt three-way merge, fall back on normal patch if that fails"
-msgstr "intenta una fusió de tres vies si el pedaç no s'aplica"
+msgstr "intenta una fusió de tres vies, si falla intenta llavors un pedaç normal"
 
 #: apply.c:5029
 msgid "build a temporary index based on embedded index information"
@@ -1607,12 +1609,12 @@
 msgid ""
 "git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
 msgstr ""
-"git archive --remote <dipòsit> [--exec <ordre>] [<opcions>] <arbre> "
+"git archive --remote <repositori> [--exec <ordre>] [<opcions>] <arbre> "
 "[<camí>...]"
 
 #: archive.c:17
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
-msgstr "git archive --remote <dipòsit> [--exec <ordre>] --list"
+msgstr "git archive --remote <repositori> [--exec <ordre>] --list"
 
 #: archive.c:188
 #, c-format
@@ -1712,11 +1714,11 @@
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
 #: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
 msgid "repo"
-msgstr "dipòsit"
+msgstr "repositori"
 
 #: archive.c:570 builtin/archive.c:92
 msgid "retrieve the archive from remote repository <repo>"
-msgstr "recupera l'arxiu del dipòsit remot <dipòsit>"
+msgstr "recupera l'arxiu del repositori remot <repositori>"
 
 #: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
 #: builtin/notes.c:498
@@ -1866,7 +1868,7 @@
 msgstr "%s era ambdós %s i %s\n"
 
 #: bisect.c:1066
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "No testable commit found.\n"
 "Maybe you started with bad path arguments?\n"
@@ -1902,7 +1904,7 @@
 #: blame.c:2811
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
-"--reverse i --first-parent-together requereixen una última comissió "
+"--reverse i --first-parent junts requereixen una última comissió "
 "especificada"
 
 #: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
@@ -2107,11 +2109,11 @@
 
 #: bundle.c:189
 msgid "Repository lacks these prerequisite commits:"
-msgstr "Al dipòsit li manquen aquestes comissions prerequerides:"
+msgstr "Al repositori li manquen aquestes comissions prerequerides:"
 
 #: bundle.c:192
 msgid "need a repository to verify a bundle"
-msgstr "cal un dipòsit per verificar un farcell"
+msgstr "cal un repositori per verificar un farcell"
 
 #: bundle.c:243
 #, c-format
@@ -2177,27 +2179,26 @@
 msgstr "L'index-pack s'ha mort"
 
 #: chunk-format.c:113
-#, fuzzy
 msgid "terminating chunk id appears earlier than expected"
 msgstr ""
-"s'ha acabat l'identificador de fragment multi-index apareix abans del que "
+"l'identificador de fragment de finalització apareix abans del que "
 "s'esperava"
 
 #: chunk-format.c:122
-#, fuzzy, c-format
+#, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr ""
-"desplaçament incorrecte de l'objecte per a oid[%d] =%s%<PRIx64> !=%<PRIx64>"
+"desplaçament incorrecte del fragment %<PRIx64> and %<PRIx64>"
 
 #: chunk-format.c:129
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
-msgstr ""
+msgstr "S'ha trobat un ID del fragment %<PRIx32> duplicat"
 
 #: chunk-format.c:143
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
-msgstr ""
+msgstr "El fragment final té un id %<PRIx32> que no és zero"
 
 #: color.c:329
 #, c-format
@@ -2291,9 +2292,8 @@
 msgstr "S'estan esborrant les marques de comissions al graf de comissions"
 
 #: commit-graph.c:1424
-#, fuzzy
 msgid "Computing commit graph topological levels"
-msgstr "S'estan calculant els nombres de generació del graf de comissions"
+msgstr "S'estan calculant els nivells topològics del graf de comissions"
 
 #: commit-graph.c:1477
 msgid "Computing commit graph generation numbers"
@@ -2467,9 +2467,9 @@
 "comissió %s però té zero en altres llocs"
 
 #: commit-graph.c:2576
-#, fuzzy, c-format
+#, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
-msgstr "La generació del graf de comissions per la comissió %s és %u != %u"
+msgstr "generació del graf de comissions per a la comissió %s és %<PRIuMAX> < %<PRIuMAX>"
 
 #: commit-graph.c:2582
 #, c-format
@@ -2622,9 +2622,9 @@
 msgstr "format erroni a %s"
 
 #: config.c:622
-#, fuzzy, c-format
+#, c-format
 msgid "bogus count in %s"
-msgstr "format erroni a %s"
+msgstr "comptatge erroni a %s"
 
 #: config.c:626
 #, c-format
@@ -2632,14 +2632,14 @@
 msgstr "hi ha massa arguments a %s"
 
 #: config.c:636
-#, fuzzy, c-format
+#, c-format
 msgid "missing config key %s"
-msgstr "fitxer de configuració no vàlid %s"
+msgstr "falta la clau de configuració %s"
 
 #: config.c:644
-#, fuzzy, c-format
+#, c-format
 msgid "missing config value %s"
-msgstr "falta el valor per «%s»"
+msgstr "falta el valor de configuració %s"
 
 #: config.c:995
 #, c-format
@@ -2720,9 +2720,9 @@
 msgstr "valor de configuració numèric incorrecte «%s» per «%s» en %s: %s"
 
 #: config.c:1257
-#, fuzzy, c-format
+#, c-format
 msgid "bad boolean config value '%s' for '%s'"
-msgstr "valor de configuració numèric erroni «%s» per «%s»: %s"
+msgstr "valor de configuració booleà erroni «%s» per a «%s»"
 
 #: config.c:1275
 #, c-format
@@ -2908,10 +2908,10 @@
 "Please make sure you have the correct access rights\n"
 "and the repository exists."
 msgstr ""
-"No s'ha pogut llegir del dipòsit remot.\n"
+"No s'ha pogut llegir del repositori remot.\n"
 "\n"
 "Assegureu-vos que tingueu els permisos\n"
-"d'accés correctes i que el dipòsit existeixi."
+"d'accés correctes i que el repositori existeixi."
 
 #: connect.c:81
 #, c-format
@@ -2944,7 +2944,7 @@
 
 #: connect.c:308
 msgid "repository on the other end cannot be shallow"
-msgstr "el dipòsit de l'altre extrem no pot ser shallow"
+msgstr "el repositori de l'altre extrem no pot ser shallow"
 
 #: connect.c:347
 msgid "invalid packet"
@@ -3376,7 +3376,7 @@
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
 msgstr ""
-"No és un dipòsit Git. Useu --no-index per a comparar dos camins fora del "
+"No és un repositori Git. Useu --no-index per a comparar dos camins fora del "
 "directori de treball"
 
 #: diff.c:156
@@ -3407,7 +3407,7 @@
 msgstr ""
 "el mode «%s» de «color-moved-ws» és desconegut, els valor possibles són "
 "«ignore-space-change», «ignore-space-at-eol», «ignore-all-space», «allow-"
-"indentation-change»."
+"indentation-change»"
 
 #: diff.c:333
 msgid ""
@@ -3955,21 +3955,16 @@
 msgstr "controla l'ordre amb el qual els fitxers apareixen en la sortida"
 
 #: diff.c:5617 diff.c:5620
-#, fuzzy
 msgid "<path>"
-msgstr "camí"
+msgstr "<camí>"
 
 #: diff.c:5618
-#, fuzzy
 msgid "show the change in the specified path first"
-msgstr ""
-"escriu el fitxer d'índex de paquet en la versió de format d'índex "
-"especificada"
+msgstr "mostra el canvi primer al camí especificat"
 
 #: diff.c:5621
-#, fuzzy
 msgid "skip the output to the specified path"
-msgstr "Restableix la HEAD actual a l'estat especificat"
+msgstr "omet la sortida al camí especificat"
 
 #: diff.c:5623
 msgid "<object-id>"
@@ -4027,9 +4022,9 @@
 msgstr "S'està realitzant una detecció inexacta de canvis de nom"
 
 #: diffcore-rotate.c:29
-#, fuzzy, c-format
+#,  c-format
 msgid "No such path '%s' in the diff"
-msgstr "no hi ha tal camí %s en %s"
+msgstr "No existeix el camí «%s» al diff"
 
 #: dir.c:578
 #, c-format
@@ -4080,7 +4075,7 @@
 #: dir.c:3543
 #, c-format
 msgid "index file corrupt in repo %s"
-msgstr "el fitxer d'índex al dipòsit %s és malmès"
+msgstr "el fitxer d'índex al repositori %s és malmès"
 
 #: dir.c:3590 dir.c:3595
 #, c-format
@@ -4095,7 +4090,7 @@
 #: editor.c:74
 #, c-format
 msgid "hint: Waiting for your editor to close the file...%c"
-msgstr "pista: s'està esperant que el vostre editor tanqui el fitxer...%c"
+msgstr "consell: s'està esperant que el vostre editor tanqui el fitxer...%c"
 
 #: entry.c:179
 msgid "Filtering content"
@@ -4267,16 +4262,15 @@
 
 #: fetch-pack.c:1100
 msgid "Server does not support this repository's object format"
-msgstr "El servidor no és compatible amb el format d'objecte d'aquest dipòsit"
+msgstr "El servidor no és compatible amb el format d'objecte d'aquest repositori"
 
 #: fetch-pack.c:1113
 msgid "no common commits"
 msgstr "cap comissió en comú"
 
 #: fetch-pack.c:1122 fetch-pack.c:1469 builtin/clone.c:1238
-#, fuzzy
 msgid "source repository is shallow, reject to clone."
-msgstr "el dipòsit font és superficial, s'està ignorant --local"
+msgstr "el repositori font és superficial, es rebutja clonar-ho."
 
 #: fetch-pack.c:1128 fetch-pack.c:1651
 msgid "git fetch-pack: fetch failed."
@@ -4365,9 +4359,8 @@
 msgstr "el remot no ha enviat tots els objectes necessaris"
 
 #: fetch-pack.c:2056
-#, fuzzy
 msgid "unexpected 'ready' from remote"
-msgstr "final de fitxer inesperat"
+msgstr "«ready» no esperat des del remot"
 
 #: fetch-pack.c:2079
 #, c-format
@@ -4467,7 +4460,7 @@
 
 #: help.c:37
 msgid "Low-level Commands / Syncing Repositories"
-msgstr "Ordres de baix nivell / Sincronització de dipòsits"
+msgstr "Ordres de baix nivell / Sincronització de repositoris"
 
 #: help.c:38
 msgid "Low-level Commands / Internal Helpers"
@@ -4485,7 +4478,7 @@
 #: help.c:316
 msgid "These are common Git commands used in various situations:"
 msgstr ""
-"Aquestes són ordres del Git habitualment usades en diverses situacions:"
+"Aquestes són ordres habituals del Git usades en diverses situacions:"
 
 #: help.c:365 git.c:100
 #, c-format
@@ -4607,11 +4600,11 @@
 "\n"
 "Executeu\n"
 "\n"
-"  git config --global user.email \"usuari@domini.com\"\n"
-"  git config --global user.name \"El vostre nom\"\n"
+"  git config --global user.email «usuari@domini.com»\n"
+"  git config --global user.name «El vostre nom»\n"
 "\n"
 "per a establir la identitat predeterminada del vostre compte.\n"
-"Ometeu --global per a establir la identitat només en aquest dipòsit.\n"
+"Ometeu --global per a establir la identitat només en aquest repositori.\n"
 
 #: ident.c:397
 msgid "no email was given and auto-detection is disabled"
@@ -4660,9 +4653,9 @@
 msgstr "sparse: s'ha eliminat la implementació de filtres de camí sparse"
 
 #: list-objects-filter-options.c:105
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' for 'object:type=<type>' isnot a valid object type"
-msgstr "«%s» per a «%s» no és una marca de temps vàlida"
+msgstr "«%s» per a «object:type=<type>» no és un tipus d'objecte vàlid"
 
 #: list-objects-filter-options.c:124
 #, c-format
@@ -4685,7 +4678,7 @@
 #: list-objects-filter-options.c:376
 msgid "unable to upgrade repository format to support partial clone"
 msgstr ""
-"no s'ha pogut actualitzar el format del dipòsit perquè sigui compatible amb "
+"no s'ha pogut actualitzar el format del repositori perquè sigui compatible amb "
 "un clonatge parcial"
 
 #: list-objects-filter.c:532
@@ -4727,7 +4720,7 @@
 "No s'ha pogut crear «%s.lock»: %s.\n"
 "\n"
 "Sembla que un altre procés de git s'està executant en aquest\n"
-"dipòsit, per exemple, un editor obert per «git commit». \n"
+"repositori, per exemple, un editor obert per «git commit». \n"
 "Assegureu-vos que tots els processos s'hagin acabat i\n"
 "llavors proveu de nou. Si encara falla, pot ser que un procés de\n"
 "git ha tingut un error:\n"
@@ -4739,9 +4732,9 @@
 msgstr "No s'ha pogut crear «%s.lock»: %s"
 
 #: ls-refs.c:37
-#, fuzzy, c-format
+#, c-format
 msgid "invalid value '%s' for lsrefs.unborn"
-msgstr "valor no vàlid per a «blame.coloring»"
+msgstr "valor «%s» no vàlid per a «lsrefs.unborn»"
 
 #: ls-refs.c:167
 msgid "expected flush after ls-refs arguments"
@@ -4749,12 +4742,12 @@
 
 #: mailinfo.c:1050
 msgid "quoted CRLF detected"
-msgstr ""
+msgstr "CRLF citat detectat"
 
 #: mailinfo.c:1254 builtin/am.c:176 builtin/mailinfo.c:46
-#, fuzzy, c-format
+#, c-format
 msgid "bad action '%s' for '%s'"
-msgstr "no es pot copiar «%s» a «%s»"
+msgstr "acció «%s» incorrecta per a «%s»"
 
 #: merge-ort.c:1116 merge-recursive.c:1205
 #, c-format
@@ -4774,23 +4767,23 @@
 "segueixen merge-base)"
 
 #: merge-ort.c:1144 merge-ort.c:1151
-#, fuzzy, c-format
+#, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
-msgstr "Avançament ràpid al submòdul %s"
+msgstr "Nota: avançament ràpid del submòdul %s a %s"
 
 #: merge-ort.c:1172
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to merge submodule %s"
-msgstr "s'ha produït un error en cercar recursivament al submòdul «%s»"
+msgstr "s'ha produït un error en fusionar recursivament el submòdul «%s»"
 
 #: merge-ort.c:1179
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
 "%s\n"
 msgstr ""
-"S'ha produït un error en fusionar el submòdul %s (s'han trobat múltiples "
-"fusions)"
+"S'ha produït un error en fusionar el submòdul %s, però existeix una solució possible:\n"
+"%s\n"
 
 #: merge-ort.c:1183 merge-recursive.c:1273
 #, c-format
@@ -4810,13 +4803,13 @@
 "que acceptarà aquest suggeriment.\n"
 
 #: merge-ort.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
 "%s"
 msgstr ""
-"S'ha produït un error en fusionar el submòdul %s (s'han trobat múltiples "
-"fusions)"
+"S'ha produït un error en fusionar el submòdul %s, però existeixen múltiples solucions possibles:\n"
+"%s"
 
 #: merge-ort.c:1415 merge-recursive.c:1362
 msgid "Failed to execute internal merge"
@@ -4853,14 +4846,14 @@
 "aquests camins a: %s segons"
 
 #: merge-ort.c:1634
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
 "renamed to multiple other directories, with no destination getting a "
 "majority of the files."
 msgstr ""
 "CONFLICTE (divisió de canvi de nom de directori): no està clar on col·locar "
-"%s perquè el directori %s s'han canviat de nom a múltiples altres "
+"%s; s'han canviat de nom a múltiples altres "
 "directoris, sense una destinació per a la majoria dels fitxers."
 
 #: merge-ort.c:1788 merge-recursive.c:2468
@@ -4873,43 +4866,42 @@
 "mateix ja havia canviat de nom."
 
 #: merge-ort.c:1932 merge-recursive.c:3244
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
 "moving it to %s."
 msgstr ""
-"La ruta va actualitzar els percentatges afegits dins d'un directori que va "
-"ser rebatejat en percentatges; es va traslladar a percentatges."
+"Pedaç actualitzat: %s afegit a %s dins d'un directori que va canviar de nom a %s; "
+"movent-lo a %s."
 
 #: merge-ort.c:1939 merge-recursive.c:3251
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
 "%s; moving it to %s."
 msgstr ""
-"El camí va actualitzar els percentatges de canvi de nom a percentatges "
-"d'incens dins d'un directori que es va canviar de nom en percentatges, "
-"passant-lo a percentatges."
+"Pedaç actualitzat: %s canviat al nom %s a %s, dins d'un directori que va canviar de nom a %s; "
+"movent-lo a %s."
 
 #: merge-ort.c:1952 merge-recursive.c:3247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
 "in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
-"CONFLICT (ubicació de l'arxiu) els percentatges afegits dins d'un directori "
-"que va ser rebatejat en percentatges suggerint que potser hauria de ser "
-"traslladat als percentatges."
+"CONFLICTE (ubicació del fitxer): %s afegit a %s dins d'un directori "
+"que va canviar de nom a %s suggerint que potser hauria de moure's "
+"a %s."
 
 #: merge-ort.c:1960 merge-recursive.c:3254
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
 "was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
-"CONFLICT (ubicació de l'arxiu) per cents redenominats a un 1% dins d'un "
-"directori que va ser rebatejat en percentatges, suggerint que potser hauria "
-"de canviar-se a percentatges."
+"CONFLICTE (ubicació del fitxer): %s canviat al nom %s a %s, dins d'un "
+"directori que va canviar de nom a %s, suggerint que potser hauria de moure's "
+"a %s."
 
 #: merge-ort.c:2103
 #, c-format
@@ -4929,7 +4921,7 @@
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "CONFLICTE (canvi de nom/supressió): %s ara té el nom %s a %s, però s'ha suprimit "
-"a %s"
+"a %s."
 
 #: merge-ort.c:2550 merge-recursive.c:3002
 #, c-format
@@ -5023,13 +5015,13 @@
 #: merge-recursive.c:379
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "addinfo_cache ha fallat per al camí «%s»; interrompent la fusió."
+msgstr "add_cacheinfo ha fallat per al camí «%s»; interrompent la fusió."
 
 #: merge-recursive.c:388
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
-"addinfo_cache ha fallat al refrescar el camí «%s»; interrompent la fusió."
+"add_cacheinfo ha fallat al refrescar el camí «%s»; interrompent la fusió."
 
 #: merge-recursive.c:876
 #, c-format
@@ -5319,35 +5311,34 @@
 msgstr "no s'ha pogut escriure un fitxer d'índex nou"
 
 #: midx.c:74
-#, fuzzy
 msgid "multi-pack-index OID fanout is of the wrong size"
-msgstr "multi-index no reconegut"
+msgstr "l'OID de l'índex multipaquet és d'una mida incorrecta"
 
 #: midx.c:105
-#, fuzzy, c-format
+#, c-format
 msgid "multi-pack-index file %s is too small"
-msgstr "l'índex múltiple és massa petit"
+msgstr "el fitxer de l'índex multipaquet %s és massa petit"
 
 #: midx.c:121
-#, fuzzy, c-format
+#, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
-"signatura d'índex múltiple 0x%08x no coincideix amb la signatura 0x%08x"
+"la signatura de l'índex multipaquet 0x%08x no coincideix amb la signatura 0x%08x"
 
 #: midx.c:126
-#, fuzzy, c-format
+#, c-format
 msgid "multi-pack-index version %d not recognized"
-msgstr "multi-index no reconegut"
+msgstr "no es reconeix la versió %d de l'índex multipaquet"
 
 #: midx.c:131
-#, fuzzy, c-format
+#, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
-"la versió del hash del graf de comissions %X no coincideix amb la versió %X"
+"la versió del hash índex multipaquet %u no coincideix amb la versió %u"
 
 #: midx.c:148
 msgid "multi-pack-index missing required pack-name chunk"
-msgstr "Falta un fragment de nom de paquet necessari al multi-index"
+msgstr "falta un fragment de nom de paquet necessari al multi-index"
 
 #: midx.c:150
 msgid "multi-pack-index missing required OID fanout chunk"
@@ -5362,9 +5353,9 @@
 msgstr "falta un fragment necessari dels desplaçaments al multi-pack-index"
 
 #: midx.c:170
-#, fuzzy, c-format
+#, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
-msgstr "noms de paquet d'índex múltiple fora de l'ordre «%s» abans de «%s»"
+msgstr "els noms de paquet de l'índex multipaquet estan desordenats «%s» abans de «%s»"
 
 #: midx.c:214
 #, c-format
@@ -5372,10 +5363,9 @@
 msgstr "pack-int-id: %u incorrecte (%u paquets en total)"
 
 #: midx.c:264
-#, fuzzy
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
-"multi-index emmagatzema un desplaçament de 64 bits però deft és massa petit"
+"l'índex multipaquet emmagatzema un desplaçament de 64 bits, però off_t és massa petit"
 
 #: midx.c:490
 #, c-format
@@ -5397,24 +5387,23 @@
 msgstr "no es pot emmagatzemar el fitxer d'índex invers"
 
 #: midx.c:933
-#, fuzzy
 msgid "Adding packfiles to multi-pack-index"
-msgstr "Afegint fitxers de paquets a multi-index"
+msgstr "S'estan afegint fitxers empaquetats a l'índex multipaquet"
 
 #: midx.c:979
-#, fuzzy, c-format
+#, c-format
 msgid "did not see pack-file %s to drop"
-msgstr "no s'han vist caure els paquets del fitxer"
+msgstr "no s'ha vist caure el fitxer empaquetat %s"
 
 #: midx.c:1024
-#, fuzzy, c-format
+#, c-format
 msgid "unknown preferred pack: '%s'"
-msgstr "Rebase de system%s desconegut"
+msgstr "paquet preferit desconegut: «%s»"
 
 #: midx.c:1029
-#, fuzzy, c-format
+#, c-format
 msgid "preferred pack '%s' is expired"
-msgstr "el dipòsit de referència «%s» és empeltat"
+msgstr "el paquet preferit «%s» ha caducat"
 
 #: midx.c:1045
 msgid "no pack files to index."
@@ -5426,65 +5415,62 @@
 msgstr "s'ha produït un error en eliminar %s"
 
 #: midx.c:1156
-#, fuzzy, c-format
+#, c-format
 msgid "failed to clear multi-pack-index at %s"
-msgstr "no s'han pogut netejar els percentatges multi-paquet"
+msgstr "no s'ha pogut netejar l'índex multipaquet a %s"
 
 #: midx.c:1214
-#, fuzzy
 msgid "multi-pack-index file exists, but failed to parse"
-msgstr "l'índex múltiple és massa petit"
+msgstr "el fitxer de l'índex multipaquet existeix, però no s'ha pogut analitzar"
 
 #: midx.c:1222
 msgid "Looking for referenced packfiles"
 msgstr "S'estan cercant fitxers empaquetats referenciats"
 
 #: midx.c:1237
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
-"od fanout fora de l'ordre fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
+"oid fanout desordenat: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
 #: midx.c:1242
-#, fuzzy
 msgid "the midx contains no oid"
-msgstr "el midx no conté cap oide"
+msgstr "el midx no conté cap oid"
 
 #: midx.c:1251
-#, fuzzy
 msgid "Verifying OID order in multi-pack-index"
-msgstr "Verificant l'ordre OID en multi-index"
+msgstr "S'està verificant l'ordre OID a l'índex multipaquet"
 
 #: midx.c:1260
-#, fuzzy, c-format
+#, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
-msgstr "oid lookup fora d'ordre oid[%d] = per cents >= %s = oid[%d]"
+msgstr "oid lookup desordenat: oid[%d] = %s >= %s = oid[%d]"
 
 #: midx.c:1280
 msgid "Sorting objects by packfile"
-msgstr "S'estan ordenant els objectes per fitxer de paquet"
+msgstr "S'estan ordenant els objectes per fitxer empaquetats"
 
 #: midx.c:1287
 msgid "Verifying object offsets"
 msgstr "S'estan verificant els desplaçaments dels objectes"
 
 #: midx.c:1303
-#, fuzzy, c-format
+#, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr ""
-"no s'ha pogut carregar l'entrada del paquet per a oid[%d] = percentatges"
+"no s'ha pogut carregar l'entrada del paquet per a oid[%d] = %s"
 
 #: midx.c:1309
-#, fuzzy, c-format
+#, c-format
 msgid "failed to load pack-index for packfile %s"
-msgstr "no s'ha pogut carregar l'índex del paquet per al fitxer de paquet %s"
+msgstr "no s'ha pogut carregar l'índex del paquet per al fitxer empaquetat %s"
 
 #: midx.c:1318
-#, fuzzy, c-format
+#, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
-"desplaçament incorrecte de l'objecte per a oid[%d] =%s%<PRIx64> !=%<PRIx64>"
+"desplaçament incorrecte de l'objecte per a oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
 #: midx.c:1343
 msgid "Counting referenced objects"
@@ -5503,19 +5489,19 @@
 msgstr "no s'ha pogut finalitzar el pack-objects"
 
 #: name-hash.c:542
-#, fuzzy, c-format
+#, c-format
 msgid "unable to create lazy_dir thread: %s"
-msgstr "no s'ha pogut crear el fil per cent mandrós"
+msgstr "no s'ha pogut crear el fil «lazy_dir» :%s"
 
 #: name-hash.c:564
-#, fuzzy, c-format
+#, c-format
 msgid "unable to create lazy_name thread: %s"
-msgstr "no s'ha pogut crear un fil percent"
+msgstr "no s'ha pogut crear un fil «lazy_name»: %s"
 
 #: name-hash.c:570
-#, fuzzy, c-format
+#, c-format
 msgid "unable to join lazy_name thread: %s"
-msgstr "no s'ha pogut unir als fil per cents de nom mandrós"
+msgstr "no s'ha pogut unir el fil «lazy_name»: %s"
 
 #: notes-merge.c:277
 #, c-format
@@ -5568,10 +5554,10 @@
 msgstr "no s'ha pogut normalitzar el camí a l'objecte alternatiu: %s"
 
 #: object-file.c:649
-#, fuzzy, c-format
+#, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
-"percentatges ignorant botigues alternatives d'objectes imbricació massa "
+"%s: s'estan ignorant els emmagatzematges alternatius d'objectes, imbricació massa "
 "profunda"
 
 #: object-file.c:656
@@ -5580,9 +5566,8 @@
 msgstr "no s'ha pogut normalitzar el directori de l'objecte: %s"
 
 #: object-file.c:699
-#, fuzzy
 msgid "unable to fdopen alternates lockfile"
-msgstr "no s'ha pogut obrir el fitxer de bloqueig alternatiu «fdopen»"
+msgstr "no s'ha pogut fer «fdopen» al fitxer de bloqueig alternatiu"
 
 #: object-file.c:717
 msgid "unable to read alternates file"
@@ -5601,22 +5586,22 @@
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
-"encara no s'admet el dipòsit de referència «%s» com a agafament enllaçat."
+"encara no s'admet el repositori de referència «%s» com a agafament enllaçat."
 
 #: object-file.c:786
 #, c-format
 msgid "reference repository '%s' is not a local repository."
-msgstr "el dipòsit de referència «%s» no és un dipòsit local."
+msgstr "el repositori de referència «%s» no és un repositori local."
 
 #: object-file.c:792
 #, c-format
 msgid "reference repository '%s' is shallow"
-msgstr "el dipòsit de referència «%s» és superficial"
+msgstr "el repositori de referència «%s» és superficial"
 
 #: object-file.c:800
 #, c-format
 msgid "reference repository '%s' is grafted"
-msgstr "el dipòsit de referència «%s» és empeltat"
+msgstr "el repositori de referència «%s» és empeltat"
 
 #: object-file.c:860
 #, c-format
@@ -5714,7 +5699,7 @@
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
-"permisos insuficients per a afegir un objecte a la base de dades del dipòsit "
+"permisos insuficients per a afegir un objecte a la base de dades del repositori "
 "%s"
 
 #: object-file.c:1915
@@ -5819,9 +5804,9 @@
 msgstr "no s'han pogut desempaquetar els continguts de %s"
 
 #: object-name.c:486
-#, fuzzy, c-format
+#, c-format
 msgid "short object ID %s is ambiguous"
-msgstr "l'SHA1 %s curt és ambigu"
+msgstr "l'id d'objecte curt %s és ambigu"
 
 #: object-name.c:497
 msgid "The candidates are:"
@@ -5867,12 +5852,13 @@
 msgstr "el camí «%s» existeix al disc, però no a «%.*s»"
 
 #: object-name.c:1708
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
 "hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
 msgstr ""
-"path '%s' existeix però no insinuacions '%s' vol dir '%.*s%s' aka '%.*s./%s'?"
+"el camí «%s» existeix, però no «%s»\n"
+"consell: volíeu dir «%.*s:%s» conegut com a «%.*s:./%s»?"
 
 #: object-name.c:1717
 #, c-format
@@ -5880,37 +5866,37 @@
 msgstr "el camí «%s» no existeix en «%.*s»"
 
 #: object-name.c:1745
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
 "hint: Did you mean ':%d:%s'?"
 msgstr ""
-"La ruta \"%s\" està en l'índex però no en la indicació de l'etapa per cent."
+"el camí «%s» està a l'índex, però no a «stage» %d\n."
+"consell: volíeu dir «:%d:%s»?"
 
 #: object-name.c:1761
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
 "hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
-"el camí '%s' està en l'índex però no en la indicació '%s' vol dir '%ds' aka "
-"'%d./%s'?"
+"el camí «%s» està a l'índex, però no a «%s»\n."
+"consell: volíeu dir «:%d:%s» conegut com a «:%d:./%s»?"
 
 #: object-name.c:1769
-#, fuzzy, c-format
+#, c-format
 msgid "path '%s' exists on disk, but not in the index"
-msgstr "el camí «%» existeix al disc però no a l'índex"
+msgstr "el camí «%s» existeix al disc, però no a l'índex"
 
 #: object-name.c:1771
-#, fuzzy, c-format
+#,  c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "el camí «%s» no existeix (ni al disc ni a l'índex)"
 
 #: object-name.c:1784
-#, fuzzy
 msgid "relative path syntax can't be used outside working tree"
 msgstr ""
-"la sintaxi relativa del camí no es pot utilitzar fora de l'arbre de treball"
+"la sintaxi de camí relatiu no es pot utilitzar fora de l'arbre de treball"
 
 #: object-name.c:1922
 #, c-format
@@ -5987,14 +5973,14 @@
 msgstr "no s'ha pogut fer stat a: %s"
 
 #: pack-write.c:283
-#, fuzzy, c-format
+#, c-format
 msgid "failed to make %s readable"
-msgstr "s'ha produït un error en analitzar %s"
+msgstr "s'ha produït un error en fer %s llegible"
 
 #: pack-write.c:522
-#, fuzzy, c-format
+#, c-format
 msgid "could not write '%s' promisor file"
-msgstr "no s'ha pogut escriure «%s»"
+msgstr "no s'ha pogut escriure «%s» al fitxer «promisor»"
 
 #: packfile.c:625
 msgid "offset before end of packfile (broken .idx?)"
@@ -6183,7 +6169,7 @@
 #: pathspec.c:466
 #, c-format
 msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: «%s» està fora del dipòsit en «%s»"
+msgstr "%s: «%s» està fora del repositori en «%s»"
 
 #: pathspec.c:542
 #, c-format
@@ -6215,9 +6201,8 @@
 msgstr "no s'ha pogut escriure el paquet delim"
 
 #: pkt-line.c:106
-#, fuzzy
 msgid "unable to write stateless separator packet"
-msgstr "no s'ha pogut escriure el paquet de buidatge"
+msgstr "no s'ha pogut escriure el paquet de separació sense estat"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6296,9 +6281,8 @@
 msgstr "el nom remot «promisor» no pot començar amb «/»: %s"
 
 #: protocol-caps.c:103
-#, fuzzy
 msgid "object-info: expected flush after arguments"
-msgstr "s'esperava una neteja després de les capacitats"
+msgstr "object-info: s'esperava una neteja després dels arguments"
 
 #: prune-packed.c:35
 msgid "Removing duplicate objects"
@@ -6318,13 +6302,13 @@
 msgstr "no s'ha pogut analitzar la comissió «%s»"
 
 #: range-diff.c:115
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "could not parse first line of `log` output: did not start with 'commit ': "
 "'%s'"
 msgstr ""
-"no s'ha pogut analitzar la primera línia de la sortida `log` no s'ha iniciat "
-"amb 'commit '%s'"
+"no s'ha pogut analitzar la primera línia de la sortida «log»: no començava "
+"amb «commit»: «%s»"
 
 #: range-diff.c:140
 #, c-format
@@ -6336,9 +6320,9 @@
 msgstr "s'ha produït un error en generar el diff"
 
 #: range-diff.c:558
-#, fuzzy
+#
 msgid "--left-only and --right-only are mutually exclusive"
-msgstr "-p i --overlay són mútuament excloents"
+msgstr "--left-only i --right-only són mútuament excloents"
 
 #: range-diff.c:561 range-diff.c:563
 #, c-format
@@ -6361,9 +6345,9 @@
 "%s: només pot afegir fitxers normals, enllaços simbòlics o directoris git"
 
 #: read-cache.c:751
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' does not have a commit checked out"
-msgstr "\"%s\" no té una comissió comprovada"
+msgstr "«%s» no té una comissió comprovada"
 
 #: read-cache.c:803
 #, c-format
@@ -6442,19 +6426,18 @@
 msgstr "camp del nom mal formatat l'índex, camí a prop «%s»"
 
 #: read-cache.c:1924
-#, fuzzy
 msgid "unordered stage entries in index"
-msgstr "entrades d'escenari no ordenades en l'índex"
+msgstr "entrades «stage» no ordenades en l'índex"
 
 #: read-cache.c:1927
-#, fuzzy, c-format
+#, c-format
 msgid "multiple stage entries for merged file '%s'"
-msgstr "múltiples entrades d'etapa per al fitxer fusionat «%s»"
+msgstr "múltiples entrades «stage» per al fitxer fusionat «%s»"
 
 #: read-cache.c:1930
-#, fuzzy, c-format
+#, c-format
 msgid "unordered stage entries for '%s'"
-msgstr "entrades d'etapa no ordenades per «%s»"
+msgstr "entrades «stage» no ordenades per a «%s»"
 
 #: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
 #: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
@@ -6496,7 +6479,7 @@
 msgstr "%s: no es pot mapar el fitxer d'índex"
 
 #: read-cache.c:2280
-#,c-format
+#, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "no s'ha pogut crear un fil «load_index_extensions»: %s"
 
@@ -6521,9 +6504,8 @@
 msgstr "no s'ha pogut tancar «%s»"
 
 #: read-cache.c:3138
-#, fuzzy
 msgid "failed to convert to a sparse-index"
-msgstr "s'ha produït un error en netejar l'índex"
+msgstr "s'ha produït un error en convertir a un índex dispers"
 
 #: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
 #, c-format
@@ -6546,9 +6528,9 @@
 msgstr "no s'han pogut corregir els bits de permisos en «%s»"
 
 #: read-cache.c:3412
-#, fuzzy, c-format
+#, c-format
 msgid "%s: cannot drop to stage #0"
-msgstr "els percentatges no poden descendir a l'escenari #0"
+msgstr "%s: no es pot baixar fins al «stage» #0"
 
 #: rebase-interactive.c:11
 msgid ""
@@ -6620,11 +6602,11 @@
 "Es pot canviar l'ordre d'aquestes línies; s'executen de dalt a baix.\n"
 
 #: rebase-interactive.c:66
-#, fuzzy, c-format
+#, c-format
 msgid "Rebase %s onto %s (%d command)"
 msgid_plural "Rebase %s onto %s (%d commands)"
-msgstr[0] "Rebase %s en un 1% (ordre<unk>d)"
-msgstr[1] "Rebase de percentatges sobre els percentatges (ordres<unk>d)"
+msgstr[0] "Fes «rebase» de %s a %s (%d ordre)"
+msgstr[1] "Fes «rebase» de %s a %s (%d ordres)"
 
 #: rebase-interactive.c:75 git-rebase--preserve-merges.sh:218
 msgid ""
@@ -6862,7 +6844,7 @@
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
-"no és un dipòsit, git però el camp «%.*s» requereix accés a les dades de "
+"no és un repositori, git però el camp «%.*s» requereix accés a les dades de "
 "l'objecte"
 
 #: ref-filter.c:743
@@ -7010,19 +6992,19 @@
 msgstr "nom de branca no vàlida: %s = %s"
 
 #: refs.c:674
-#, fuzzy, c-format
+#, c-format
 msgid "ignoring dangling symref %s"
-msgstr "ignorant symref per sota"
+msgstr "s'està ignorant symref penjant %s"
 
 #: refs.c:922
-#, fuzzy, c-format
+#, c-format
 msgid "log for ref %s has gap after %s"
-msgstr "registre per a ref %s have gap després de percentatges"
+msgstr "registre per a ref %s té un buit després de %s"
 
 #: refs.c:929
-#, fuzzy, c-format
+#, , c-format
 msgid "log for ref %s unexpectedly ended on %s"
-msgstr "registre per als ref%s inesperadament ha acabat en percentatges"
+msgstr "registre per als ref %s ha acabat inesperadament a %s"
 
 #: refs.c:994
 #, c-format
@@ -7035,9 +7017,9 @@
 msgstr "s'està refusant la referència amb nom malmès «%s»"
 
 #: refs.c:1157
-#, fuzzy, c-format
+#, c-format
 msgid "update_ref failed for ref '%s': %s"
-msgstr "ha fallat updateref per al ref '%s'%s"
+msgstr "ha fallat update_ref per a la ref «%s»: %s"
 
 #: refs.c:2051
 #, c-format
@@ -7049,9 +7031,8 @@
 msgstr "no està permès actualitzar les referències en un entorn de quarantena"
 
 #: refs.c:2142
-#, fuzzy
 msgid "ref updates aborted by hook"
-msgstr "les actualitzacions de referències s'han avortat per ganxo"
+msgstr "les actualitzacions de referències s'han avortat per un lligam"
 
 #: refs.c:2242 refs.c:2272
 #, c-format
@@ -7087,7 +7068,7 @@
 #: remote.c:351
 #, fuzzy, c-format
 msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "config remote abreviation no pot començar amb «/» per cents"
+msgstr "config remote abreviation no pot començar amb «/»: %s"
 
 #: remote.c:399
 msgid "more than one receivepack given, using the first"
@@ -7125,12 +7106,12 @@
 #: remote.c:1083
 #, c-format
 msgid "src refspec %s does not match any"
-msgstr "l'especificació de referència src %s no coincideix amb cap"
+msgstr "l'especificació de referència src %s no coincideix amb cap referència"
 
 #: remote.c:1088
 #, c-format
 msgid "src refspec %s matches more than one"
-msgstr "l'especificació de referència de src %s coincideix amb més d'un"
+msgstr "l'especificació de referència de src %s coincideix amb més d'una referència"
 
 #. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
@@ -7156,44 +7137,46 @@
 "així afegirem un refs/{headstags que no ha funcionat completament."
 
 #: remote.c:1123
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The <src> part of the refspec is a commit object.\n"
 "Did you mean to create a new branch by pushing to\n"
 "'%s:refs/heads/%s'?"
 msgstr ""
-"La part <src> de l'especificació de referència és un objecte de comissió. "
-"Voleu crear una branca nova empenyent a '%srefs/heads/%s'?"
+"La part <src> de l'especificació de la referència és un objecte de comissió.\n"
+"Voleu crear una branca nova empenyent a\n"
+"«%s:refs/heads/%s»?"
 
 #: remote.c:1128
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The <src> part of the refspec is a tag object.\n"
 "Did you mean to create a new tag by pushing to\n"
 "'%s:refs/tags/%s'?"
 msgstr ""
-"La part <src> de l'especificació de referència és un objecte d'etiqueta. "
-"Voleu crear una etiqueta nova empenyent a '%srefs/tags/%s'?"
+"La part <src> de l'especificació de la referència és un objecte d'etiqueta.\n"
+"Voleu crear una etiqueta pujant-la a «%srefs/tags/%s»?"
 
 #: remote.c:1133
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The <src> part of the refspec is a tree object.\n"
 "Did you mean to tag a new tree by pushing to\n"
 "'%s:refs/tags/%s'?"
 msgstr ""
-"La part <src> de l'especificació de referència és un objecte d'arbre. Voleu "
-"marcar un nou arbre empenyent a '%srefs/tags/%s'?"
+"La part <src> de l'especificació de la referència és un objecte d'arbre.\n"
+"Voleu crear una etiqueta pujant-la a «%srefs/tags/%s»?"
 
 #: remote.c:1138
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The <src> part of the refspec is a blob object.\n"
 "Did you mean to tag a new blob by pushing to\n"
 "'%s:refs/tags/%s'?"
 msgstr ""
-"La part <src> de l'especificació de referència és un objecte blob. Voleu "
-"marcar un nou blob empenyent a '%srefs/tags/%s'?"
+"La part <src> de l'especificació de la referència és un objecte blob.\n"
+"Voleu posar una etiqueta al blob nou mitjançant la pujada a\n?"
+"«%s:refs/tags/%s»?"
 
 #: remote.c:1174
 #, c-format
@@ -7206,14 +7189,14 @@
 msgstr "no s'ha pogut suprimir «%s»: la referència remota no existeix"
 
 #: remote.c:1197
-#, fuzzy, c-format
+#, c-format
 msgid "dst refspec %s matches more than one"
-msgstr "dst les especificacions de rendiment coincideixen més d'un"
+msgstr "l'especificació de la referència dst %s coincideixen amb més d'una referència"
 
 #: remote.c:1204
-#, fuzzy, c-format
+#, c-format
 msgid "dst ref %s receives from more than one src"
-msgstr "dst ref%s rep de més d'un src"
+msgstr "l'especificació de la referència dst %s rep més d'una referència src"
 
 #: remote.c:1724 remote.c:1825
 msgid "HEAD does not point to a branch"
@@ -7392,9 +7375,9 @@
 msgstr "s'ha produït un error en escriure «%s»"
 
 #: rerere.c:698
-#, fuzzy, c-format
+#, c-format
 msgid "Staged '%s' using previous resolution."
-msgstr "Fased '%s' utilitzant resolució anterior."
+msgstr "«Staged» «%s» utilitzant una resolució anterior."
 
 #: rerere.c:737
 #, c-format
@@ -7407,9 +7390,9 @@
 msgstr "S'ha resolt «%s» usant una resolució anterior."
 
 #: rerere.c:787
-#, fuzzy, c-format
+#, c-format
 msgid "cannot unlink stray '%s'"
-msgstr "no es pot desenllaçar «%s» extraviats"
+msgstr "no es pot desenllaçar «%s» (extraviat)"
 
 #: rerere.c:791
 #, c-format
@@ -7487,13 +7470,13 @@
 msgstr "no s'ha pogut crear fil «async»: %s"
 
 #: run-command.c:1345
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
-"El ganxo «%s» s'ha ignorat perquè no s'ha establert com a executable. Podeu "
-"desactivar aquest avís amb `git config aconsell.ignoredHook false`."
+"El lligam «%s» s'ha ignorat perquè no s'ha establert com a executable.\n"
+"Podeu desactivar aquest avís amb «git config advice.ignoredHook false»." 
 
 #: send-pack.c:150
 msgid "unexpected flush packet while reading remote unpack status"
@@ -7516,18 +7499,16 @@
 msgstr "s'ha produït un error en signar el certificat de pujada"
 
 #: send-pack.c:433
-#, fuzzy
 msgid "send-pack: unable to fork off fetch subprocess"
-msgstr "promisor-remote no es pot bifurcar obtenint el subprocés"
+msgstr "send-pack: no es pot bifurcar obtenint un subprocés"
 
 #: send-pack.c:455
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr ""
 
-#: send-pack.c:520
-#, fuzzy
+#: send-pack.c:52
 msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "el destí receptor no admet opcions de pujada"
+msgstr "el receptor de destí no admet l'algorisme d'hash del repositori"
 
 #: send-pack.c:529
 msgid "the receiving end does not support --signed push"
@@ -7662,9 +7643,9 @@
 msgstr "no hi ha una clau a «%.*s»"
 
 #: sequencer.c:790
-#, fuzzy, c-format
+#, c-format
 msgid "unable to dequote value of '%s'"
-msgstr "no s'ha pogut delinear el valor de cometes de «%s»"
+msgstr "no s'han pogut treure les cometes del valor de «%s»"
 
 #: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
 #: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
@@ -7878,9 +7859,8 @@
 msgstr "Aquest és el missatge de comissió #%d:"
 
 #: sequencer.c:1738
-#, fuzzy
 msgid "The 1st commit message will be skipped:"
-msgstr "El missatge de comissió núm. #%d s'ometrà:"
+msgstr "El primer missatge de comissió s'ometrà:"
 
 #: sequencer.c:1739
 #, c-format
@@ -8337,7 +8317,7 @@
 msgstr "Aturat a %s\n"
 
 #: sequencer.c:4259
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Could not execute the todo command\n"
 "\n"
@@ -8348,14 +8328,19 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 msgstr ""
-"No s'ha pogut executar l'ordre de tasques pendents.*s S'ha reprogramat; Per "
-"editar l'ordre abans de continuar editeu primer la llista de tasques "
-"pendents git rebase --edit-todo git rebase --continue"
+"No s'ha pogut executar l'ordre «todo»\n"
+"\n"
+"    %.*s\n"
+"S'ha reprogramat; per editar l'ordre abans de continuar, editeu primer\n"
+"la llista de tasques pendents:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
 
 #: sequencer.c:4305
-#, fuzzy, c-format
+#, c-format
 msgid "Rebasing (%d/%d)%s"
-msgstr "S'estan reubicant (%d/%d)%s"
+msgstr "S'està fent «rebase» (%d/%d)%s"
 
 #: sequencer.c:4351
 #, c-format
@@ -8461,9 +8446,9 @@
 msgstr "l'script ja estava endreçat."
 
 #: setup.c:133
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is outside repository at '%s'"
-msgstr "'%s' està fora del dipòsit a '%s'"
+msgstr "«%s» està fora del repositori a «%s»"
 
 #: setup.c:185
 #, c-format
@@ -8516,16 +8501,15 @@
 #: setup.c:661
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
-msgstr "S'esperava una versió de dipòsit de git <= %d, s'ha trobat %d"
+msgstr "S'esperava una versió de repositori de git <= %d, s'ha trobat %d"
 
 #: setup.c:669
 msgid "unknown repository extensions found:"
-msgstr "s'han trobat extensions de dipòsit desconegudes:"
+msgstr "s'han trobat extensions de repositori desconegudes:"
 
 #: setup.c:681
-#, fuzzy
 msgid "repo version is 0, but v1-only extensions found:"
-msgstr "s'han trobat extensions de dipòsit desconegudes:"
+msgstr "el repositori és versió 0, però només s'han trobat extensions v1:"
 
 #: setup.c:700
 #, c-format
@@ -8555,7 +8539,7 @@
 #: setup.c:710
 #, c-format
 msgid "not a git repository: %s"
-msgstr "no és un dipòsit de git: %s"
+msgstr "no és un repositori de git: %s"
 
 #: setup.c:812
 #, c-format
@@ -8565,7 +8549,7 @@
 #: setup.c:826
 #, c-format
 msgid "not a git repository: '%s'"
-msgstr "no és un dipòsit de git: «%s»"
+msgstr "no és un repositori de git: «%s»"
 
 #: setup.c:855 setup.c:857 setup.c:888
 #, c-format
@@ -8593,7 +8577,7 @@
 #: setup.c:1245
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
-msgstr "no és un dipòsit de git (ni cap dels directoris pares): %s"
+msgstr "no és un repositori de git (ni cap dels directoris pares): %s"
 
 #: setup.c:1251
 #, c-format
@@ -8601,7 +8585,7 @@
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"no és un dipòsit de git (ni cap pare fins al punt de muntatge %s)\n"
+"no és un repositori de git (ni cap pare fins al punt de muntatge %s)\n"
 "S'atura a la frontera de sistema de fitxers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
 "no està establert)."
 
@@ -8715,11 +8699,10 @@
 msgstr "no es permeten els valors negatius a submodule.fetchjobs"
 
 #: submodule-config.c:402
-#, fuzzy, c-format
+#, c-format
 msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
 msgstr ""
-"ignorant \"%s\" que poden interpretar-se com una opció de línia d'ordres per "
-"cent"
+"s'està ignorant «%s» que pot interpretar-se com a una opció de línia d'ordres: %s"
 
 #: submodule-config.c:499
 #, c-format
@@ -8767,13 +8750,13 @@
 msgstr "argument incorrecte --ignore-submodules: %s"
 
 #: submodule.c:818
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr ""
-"El submòdul en «commit%s» al camí «%s» col·lideix amb un submòdul anomenat "
-"el mateix. Ometent-lo."
+"El submòdul en la comissió %s al camí: «%s» col·lideix amb un submòdul amb "
+"el mateix nom. Ometent-lo."
 
 #: submodule.c:921
 #, c-format
@@ -8799,14 +8782,14 @@
 msgstr "S'ha produït un error en resoldre HEAD com a referència vàlida."
 
 #: submodule.c:1169
-#, fuzzy, c-format
+#, c-format
 msgid "Pushing submodule '%s'\n"
-msgstr "Subjecting submodule '%s'"
+msgstr "S'està pujant el submòdul «%s»\n"
 
 #: submodule.c:1172
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to push submodule '%s'\n"
-msgstr "No s'ha pogut prémer el submòdul «%s»"
+msgstr "No s'ha pogut pujar el submòdul «%s»\n"
 
 #: submodule.c:1464
 #, c-format
@@ -8830,7 +8813,7 @@
 #: submodule.c:1678
 #, c-format
 msgid "'%s' not recognized as a git repository"
-msgstr "«%s» no reconegut com un dipòsit git"
+msgstr "«%s» no reconegut com un repositori git"
 
 #: submodule.c:1695
 #, c-format
@@ -8853,14 +8836,14 @@
 msgstr "no s'ha pogut executar «git status» al submòdul «%s»"
 
 #: submodule.c:1839
-#, fuzzy, c-format
+#, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
-msgstr "No s'ha pogut desassignar el paràmetre core.worktree al submòdul «%s»"
+msgstr "No s'ha pogut desassignar el paràmetre «core.worktree» al submòdul «%s»"
 
 #: submodule.c:1866 submodule.c:2176
 #, c-format
 msgid "could not recurse into submodule '%s'"
-msgstr "s'ha produït un error en cercar recursivament al camí de submòdul «%s»"
+msgstr "s'ha produït un error en cercar recursivament al camí del submòdul «%s»"
 
 #: submodule.c:1887
 msgid "could not reset submodule index"
@@ -8920,9 +8903,9 @@
 msgstr "ls-tree ha retornat un codi de retorn %d no esperat"
 
 #: symlinks.c:244
-#, fuzzy, c-format
+#, c-format
 msgid "failed to lstat '%s'"
-msgstr "s'ha produït un error en fer stat a «%s»"
+msgstr "s'ha produït un error en fer lstat a «%s»"
 
 #: trailer.c:244
 #, c-format
@@ -8989,28 +8972,26 @@
 msgstr "no s'ha pogut trobar l'ajudant remot per a «%s»"
 
 #: transport-helper.c:161 transport-helper.c:575
-#, fuzzy
 msgid "can't dup helper output fd"
 msgstr "no es pot duplicar la sortida de l'ajudant «fd»"
 
 #: transport-helper.c:214
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
 "version of Git"
 msgstr ""
-"capacitat obligatòria desconeguda; aquest ajudant remot probablement "
+"funcionalitat obligatòria %s desconeguda; aquest ajudant remot probablement "
 "necessita una versió més nova del Git"
 
 #: transport-helper.c:220
-#, fuzzy
 msgid "this remote helper should implement refspec capability"
-msgstr "aquest ajudant remot ha d'implementar la capacitat de refspec"
+msgstr "aquest ajudant remot ha d'implementar la funcionalitat de refspec"
 
 #: transport-helper.c:287 transport-helper.c:429
-#, fuzzy, c-format
+#, c-format
 msgid "%s unexpectedly said: '%s'"
-msgstr "deien inesperadament \"%s\""
+msgstr "%s ha dit inesperadament «%s»"
 
 #: transport-helper.c:417
 #, c-format
@@ -9022,7 +9003,6 @@
 msgstr "no s'ha pogut executar «fast-import»"
 
 #: transport-helper.c:520
-#, fuzzy
 msgid "error while running fast-import"
 msgstr "error en executar la importació ràpida"
 
@@ -9032,17 +9012,15 @@
 msgstr "no s'ha pogut llegir la referència %s"
 
 #: transport-helper.c:594
-#, fuzzy, c-format
+#, c-format
 msgid "unknown response to connect: %s"
-msgstr "resposta desconeguda per connectar els percentatges"
+msgstr "resposta desconeguda en connectar: %s"
 
 #: transport-helper.c:616
-#, fuzzy
 msgid "setting remote service path not supported by protocol"
 msgstr "el protocol no permet establir el camí del servei remot"
 
 #: transport-helper.c:618
-#, fuzzy
 msgid "invalid remote service path"
 msgstr "el camí del servei remot no és vàlid"
 
@@ -9152,12 +9130,12 @@
 #: transport-helper.c:1412
 #, fuzzy, c-format
 msgid "write(%s) failed"
-msgstr "ha fallat write(%)"
+msgstr "ha fallat l(%)"
 
 #: transport-helper.c:1461
-#, fuzzy, c-format
+#, c-format
 msgid "%s thread failed"
-msgstr "ha fallat el fil per cents"
+msgstr "%s ha fallat el fil"
 
 #: transport-helper.c:1465
 #, fuzzy, c-format
@@ -9234,9 +9212,8 @@
 msgstr "no es permet el transport «%s»"
 
 #: transport.c:1079
-#, fuzzy
 msgid "git-over-rsync is no longer supported"
-msgstr "git-over-rsync ja no és compatible"
+msgstr "git-over-rsync ja no s'admet"
 
 #: transport.c:1181
 #, c-format
@@ -9611,12 +9588,12 @@
 msgstr "s'ha produït un error en llegir «%s»"
 
 #: worktree.c:304
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' at main working tree is not the repository directory"
-msgstr "'%s' a l'arbre de treball principal no és el directori del repositori"
+msgstr "«%s» a l'arbre de treball principal no és al directori del repositori"
 
 #: worktree.c:315
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "El fitxer «%s» no conté el camí absolut a la ubicació de l'arbre de treball"
@@ -9653,22 +9630,20 @@
 msgstr "fitxer .git malmès"
 
 #: worktree.c:727
-#, fuzzy
 msgid "not a valid path"
 msgstr "no és un camí vàlid"
 
 #: worktree.c:733
 msgid "unable to locate repository; .git is not a file"
-msgstr "no s'ha pogut trobar el dipòsit; .git no és un fitxer"
+msgstr "no s'ha pogut trobar el repositori; .git no és un fitxer"
 
 #: worktree.c:737
-#, fuzzy
 msgid "unable to locate repository; .git file does not reference a repository"
-msgstr "no s'ha pogut trobar el dipòsit; .git no és un fitxer"
+msgstr "no s'ha pogut trobar el repositori; el fitxer .git no fa referència a un repositori"
 
 #: worktree.c:741
 msgid "unable to locate repository; .git file broken"
-msgstr "no s'ha pogut trobar el dipòsit; el fitxer .git està malmès"
+msgstr "no s'ha pogut trobar el repositori; el fitxer .git està malmès"
 
 #: worktree.c:747
 msgid "gitdir unreadable"
@@ -9679,38 +9654,30 @@
 msgstr "gitdir incorrecte"
 
 #: worktree.c:776
-#, fuzzy
 msgid "not a valid directory"
-msgstr "no és en un directori git"
+msgstr "no és en un directori vàlid"
 
 #: worktree.c:782
-#, fuzzy
 msgid "gitdir file does not exist"
-msgstr "Eliminació de worktrees/%s: el fitxer gitdir no existeix"
+msgstr "el fitxer gitdir no existeix"
 
 #: worktree.c:787 worktree.c:796
-#, fuzzy, c-format
+#, c-format
 msgid "unable to read gitdir file (%s)"
-msgstr "no s'ha pogut llegir l'arbre (%s)"
+msgstr "no s'ha pogut llegir el fitxer gitdir (%s)"
 
 #: worktree.c:806
-#, fuzzy, c-format
+#, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr ""
-"S'estan eliminant els arbres de treball/%s: lectura curta (s'esperaven "
-"%<PRIuMAX> bytes, se n'han llegit %<PRIuMAX>)"
+msgstr "lectura curta (s'esperaven %<PRIuMAX> bytes, llegits %<PRIuMAX>)"
 
 #: worktree.c:814
-#, fuzzy
 msgid "invalid gitdir file"
-msgstr "fitxer de configuració no vàlid %s"
+msgstr "fitxer gitdir no vàlid"
 
 #: worktree.c:822
-#, fuzzy
 msgid "gitdir file points to non-existent location"
-msgstr ""
-"Eliminació de worktrees/%s: el fitxer gitdir es refereix a una ubicació no "
-"existent"
+msgstr "el fitxer gitdir indica una ubicació no existent"
 
 #: wrapper.c:197 wrapper.c:367
 #, c-format
@@ -9731,14 +9698,13 @@
 msgstr "Camins sense fusionar:"
 
 #: wt-status.c:187 wt-status.c:219
-#, fuzzy
 msgid "  (use \"git restore --staged <file>...\" to unstage)"
-msgstr "(useu \"git restitution --staged <file>\" per a unstage)"
+msgstr "  (useu «git restore --staged <fitxer>...» per a fer «unstage»)"
 
 #: wt-status.c:190 wt-status.c:222
-#, fuzzy, c-format
+#, c-format
 msgid "  (use \"git restore --source=%s --staged <file>...\" to unstage)"
-msgstr "(useu \"git restitution --source=%s --staged <file>\" per a unstage)"
+msgstr "  (useu «git restore --source=%s --staged <fitxer>...» per a fer «unstage»)"
 
 #: wt-status.c:193 wt-status.c:225
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
@@ -9775,12 +9741,10 @@
 msgstr "  (useu «git add/rm <fitxer>...» per a actualitzar què es cometrà)"
 
 #: wt-status.c:241
-#, fuzzy
 msgid ""
 "  (use \"git restore <file>...\" to discard changes in working directory)"
 msgstr ""
-"(useu \"git restore <file>\" per descartar els canvis en el directori de "
-"treball)"
+"  (useu «git restore <file>...» per a descartar els canvis en el directori de treball)"
 
 #: wt-status.c:243
 msgid "  (commit or discard the untracked or modified content in submodules)"
@@ -9888,14 +9852,15 @@
 "Tot el que hi ha a sota s'ignorarà."
 
 #: wt-status.c:1115
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "It took %.2f seconds to compute the branch ahead/behind values.\n"
 "You can use '--no-ahead-behind' to avoid this.\n"
 msgstr ""
-"S'ha trigat un 2%f segons a calcular la branca endavant/darrere dels valors. "
-"Podeu utilitzar «--no-perhead-behind» per evitar-ho."
+"\n"
+"S'ha trigat un %.2f segons a calcular els valors de la branca d'endavant i darrere.\n"
+"Podeu utilitzar «--no-ahead-behind» per a evitar-ho.\n"
 
 #: wt-status.c:1145
 msgid "You have unmerged paths."
@@ -10416,7 +10381,7 @@
 
 #: builtin/add.c:384
 msgid "warn when adding an embedded repository"
-msgstr "avisa'm quan s'afegeixi un dipòsit incrustat"
+msgstr "avisa'm quan s'afegeixi un repositori incrustat"
 
 #: builtin/add.c:386
 #, fuzzy
@@ -10440,9 +10405,9 @@
 "\n"
 "See \"git help submodule\" for more information."
 msgstr ""
-"Heu afegit un altre dipòsit git dins del dipòsit actual.\n"
-"Els clons de dipòsits externs no contindran els continguts\n"
-"del dipòsit incrustat i no sabran com obtenir-ho.\n"
+"Heu afegit un altre repositori git dins del repositori actual.\n"
+"Els clons de repositoris externs no contindran els continguts\n"
+"del repositori incrustat i no sabran com obtenir-ho.\n"
 "Si volíeu afegir un submòdul, useu:\n"
 "\n"
 "\tgit submodule add <url> %s\n"
@@ -10457,7 +10422,7 @@
 #: builtin/add.c:432
 #, c-format
 msgid "adding embedded git repository: %s"
-msgstr "s'està afegint un dipòsit incrustat: %s"
+msgstr "s'està afegint un repositori incrustat: %s"
 
 #: builtin/add.c:451
 msgid ""
@@ -10620,7 +10585,7 @@
 #: builtin/am.c:1537
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
-"Al dipòsit li manquen els blobs necessaris per a retrocedir a una fusió de 3 "
+"Al repositori li manquen els blobs necessaris per a retrocedir a una fusió de 3 "
 "vies."
 
 #: builtin/am.c:1539
@@ -11944,7 +11909,7 @@
 #: builtin/bugreport.c:80
 #, fuzzy
 msgid "not run from a git repository - no hooks to show\n"
-msgstr "no és un dipòsit de git: %s"
+msgstr "no és un repositori de git: %s"
 
 #: builtin/bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
@@ -12058,7 +12023,7 @@
 
 #: builtin/bundle.c:96
 msgid "Need a repository to create a bundle."
-msgstr "Cal un dipòsit per a fer un farcell."
+msgstr "Cal un repositori per a fer un farcell."
 
 #: builtin/bundle.c:107
 #, fuzzy
@@ -12072,7 +12037,7 @@
 
 #: builtin/bundle.c:163
 msgid "Need a repository to unbundle."
-msgstr "Cal un dipòsit per a desfer un farcell."
+msgstr "Cal un repositori per a desfer un farcell."
 
 #: builtin/bundle.c:171 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
@@ -12875,12 +12840,12 @@
 #: builtin/clean.c:35
 #, c-format
 msgid "Skipping repository %s\n"
-msgstr "S'està ometent el dipòsit %s\n"
+msgstr "S'està ometent el repositori %s\n"
 
 #: builtin/clean.c:36
 #, c-format
 msgid "Would skip repository %s\n"
-msgstr "Ometria el dipòsit %s\n"
+msgstr "Ometria el repositori %s\n"
 
 #: builtin/clean.c:38
 #, c-format
@@ -13032,12 +12997,12 @@
 
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
-msgstr "git clone [<opcions>] [--] <dipòsit> [<directori>]"
+msgstr "git clone [<opcions>] [--] <repositori> [<directori>]"
 
 #: builtin/clone.c:96
 #, fuzzy
 msgid "don't clone shallow repository"
-msgstr "per a clonar des d'un dipòsit local"
+msgstr "per a clonar des d'un repositori local"
 
 #: builtin/clone.c:98
 msgid "don't create a checkout"
@@ -13045,15 +13010,15 @@
 
 #: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
 msgid "create a bare repository"
-msgstr "crea un dipòsit nu"
+msgstr "crea un repositori nu"
 
 #: builtin/clone.c:103
 msgid "create a mirror repository (implies bare)"
-msgstr "crea un dipòsit mirall (implica bare)"
+msgstr "crea un repositori mirall (implica bare)"
 
 #: builtin/clone.c:105
 msgid "to clone from a local repository"
-msgstr "per a clonar des d'un dipòsit local"
+msgstr "per a clonar des d'un repositori local"
 
 #: builtin/clone.c:107
 msgid "don't use local hardlinks, always copy"
@@ -13061,7 +13026,7 @@
 
 #: builtin/clone.c:109
 msgid "setup as shared repository"
-msgstr "configura com a dipòsit compartit"
+msgstr "configura com a repositori compartit"
 
 #: builtin/clone.c:111
 msgid "pathspec"
@@ -13086,7 +13051,7 @@
 #: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
 #: builtin/submodule--helper.c:2337
 msgid "reference repository"
-msgstr "dipòsit de referència"
+msgstr "repositori de referència"
 
 #: builtin/clone.c:123 builtin/submodule--helper.c:1834
 #: builtin/submodule--helper.c:2339
@@ -13166,7 +13131,7 @@
 
 #: builtin/clone.c:145
 msgid "set config inside the new repository"
-msgstr "estableix la configuració dins del dipòsit nou"
+msgstr "estableix la configuració dins del repositori nou"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
 #: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
@@ -13294,7 +13259,7 @@
 
 #: builtin/clone.c:1005
 msgid "You must specify a repository to clone."
-msgstr "Heu d'especificar un dipòsit per a clonar."
+msgstr "Heu d'especificar un repositori per a clonar."
 
 #: builtin/clone.c:1018
 #, c-format
@@ -13308,7 +13273,7 @@
 #: builtin/clone.c:1035
 #, c-format
 msgid "repository '%s' does not exist"
-msgstr "el dipòsit «%s» no existeix"
+msgstr "el repositori «%s» no existeix"
 
 #: builtin/clone.c:1039 builtin/fetch.c:2011
 #, c-format
@@ -13344,7 +13309,7 @@
 #: builtin/clone.c:1109
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
-msgstr "S'està clonant al dipòsit nu «%s»...\n"
+msgstr "S'està clonant al repositori nu «%s»...\n"
 
 #: builtin/clone.c:1111
 #, c-format
@@ -13384,7 +13349,7 @@
 
 #: builtin/clone.c:1240
 msgid "source repository is shallow, ignoring --local"
-msgstr "el dipòsit font és superficial, s'està ignorant --local"
+msgstr "el repositori font és superficial, s'està ignorant --local"
 
 #: builtin/clone.c:1245
 msgid "--local is ignored"
@@ -13397,7 +13362,7 @@
 
 #: builtin/clone.c:1348
 msgid "You appear to have cloned an empty repository."
-msgstr "Sembla que heu clonat un dipòsit buit."
+msgstr "Sembla que heu clonat un repositori buit."
 
 #: builtin/column.c:10
 msgid "git column [<options>]"
@@ -14253,11 +14218,11 @@
 
 #: builtin/config.c:133
 msgid "use repository config file"
-msgstr "usa el fitxer de configuració del dipòsit"
+msgstr "usa el fitxer de configuració del repositori"
 
 #: builtin/config.c:134
 msgid "use per-worktree config file"
-msgstr "usa un fitxer de configuració per dipòsit"
+msgstr "usa un fitxer de configuració per repositori"
 
 #: builtin/config.c:135
 msgid "use given config file"
@@ -14472,16 +14437,16 @@
 
 #: builtin/config.c:658
 msgid "--local can only be used inside a git repository"
-msgstr "--local només es pot usar dins d'un dipòsit git"
+msgstr "--local només es pot usar dins d'un repositori git"
 
 #: builtin/config.c:660
 msgid "--blob can only be used inside a git repository"
-msgstr "--blob només es pot usar dins d'un dipòsit git"
+msgstr "--blob només es pot usar dins d'un repositori git"
 
 #: builtin/config.c:662
 #, fuzzy
 msgid "--worktree can only be used inside a git repository"
-msgstr "--blob només es pot usar dins d'un dipòsit git"
+msgstr "--blob només es pot usar dins d'un repositori git"
 
 #: builtin/config.c:684
 msgid "$HOME not set"
@@ -14798,7 +14763,7 @@
 
 #: builtin/diff.c:486
 msgid "Not a git repository"
-msgstr "No és un dipòsit de git"
+msgstr "No és un repositori de git"
 
 #: builtin/diff.c:532 builtin/grep.c:684
 #, c-format
@@ -15125,7 +15090,7 @@
 
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
-msgstr "git fetch [<opcions>] [<dipòsit> [<especificació-de-referència>...]]"
+msgstr "git fetch [<opcions>] [<repositori> [<especificació-de-referència>...]]"
 
 #: builtin/fetch.c:36
 msgid "git fetch [<options>] <group>"
@@ -15133,7 +15098,7 @@
 
 #: builtin/fetch.c:37
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
-msgstr "git fetch --multiple [<opcions>] [(<dipòsit> | <grup>)...]"
+msgstr "git fetch --multiple [<opcions>] [(<repositori> | <grup>)...]"
 
 #: builtin/fetch.c:38
 msgid "git fetch --all [<options>]"
@@ -15141,7 +15106,7 @@
 
 #: builtin/fetch.c:122
 msgid "fetch.parallel cannot be negative"
-msgstr "fetch.paral·lelisme no pot ser negatiu"
+msgstr "fetch.parallel no pot ser negatiu"
 
 #: builtin/fetch.c:145 builtin/pull.c:185
 msgid "fetch from all remotes"
@@ -15232,7 +15197,7 @@
 
 #: builtin/fetch.c:189 builtin/pull.c:221
 msgid "convert to a complete repository"
-msgstr "converteix en un dipòsit complet"
+msgstr "converteix en un repositori complet"
 
 #: builtin/fetch.c:192
 msgid "prepend this to submodule path output"
@@ -15417,7 +15382,7 @@
 #: builtin/fetch.c:1384
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
-msgstr "S'està refusant obtenir en la branca actual %s d'un dipòsit no nu"
+msgstr "S'està refusant obtenir en la branca actual %s d'un repositori no nu"
 
 #: builtin/fetch.c:1403
 #, c-format
@@ -15474,7 +15439,7 @@
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
 msgstr ""
-"Cap dipòsit remot especificat. Especifiqueu un URL o\n"
+"Cap repositori remot especificat. Especifiqueu un URL o\n"
 "un nom remot del qual es deuen obtenir les revisions noves."
 
 #: builtin/fetch.c:1930
@@ -15495,11 +15460,11 @@
 
 #: builtin/fetch.c:2004
 msgid "--unshallow on a complete repository does not make sense"
-msgstr "--unshallow en un dipòsit complet no té sentit"
+msgstr "--unshallow en un repositori complet no té sentit"
 
 #: builtin/fetch.c:2021
 msgid "fetch --all does not take a repository argument"
-msgstr "fetch --all no accepta un argument de dipòsit"
+msgstr "fetch --all no accepta un argument de repositori"
 
 #: builtin/fetch.c:2023
 msgid "fetch --all does not make sense with refspecs"
@@ -15963,14 +15928,14 @@
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
-"S'està empaquetant el dipòsit automàticament en el rerefons per a un "
+"S'està empaquetant el repositori automàticament en el rerefons per a un "
 "rendiment òptim.\n"
 
 #: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr ""
-"S'està empaquetant automàticament el dipòsit per a un rendiment òptim.\n"
+"S'està empaquetant automàticament el repositori per a un rendiment òptim.\n"
 
 #: builtin/gc.c:610
 #, c-format
@@ -16072,7 +16037,7 @@
 #: builtin/gc.c:1415
 #, fuzzy
 msgid "run tasks based on the state of the repository"
-msgstr "executa les tasques basades en l'estat del dipòsit"
+msgstr "executa les tasques basades en l'estat del repositori"
 
 #: builtin/gc.c:1416
 msgid "frequency"
@@ -16889,7 +16854,7 @@
 
 #: builtin/index-pack.c:1854
 msgid "--stdin requires a git repository"
-msgstr "--stdin requereix un dipòsit git"
+msgstr "--stdin requereix un repositori git"
 
 #: builtin/index-pack.c:1856
 msgid "--object-format cannot be used with --stdin"
@@ -16961,7 +16926,7 @@
 #: builtin/init-db.c:372
 #, fuzzy
 msgid "attempt to reinitialize repository with different hash"
-msgstr "s'ha intentat reinicialitzar el dipòsit amb un hash diferent"
+msgstr "s'ha intentat reinicialitzar el repositori amb un hash diferent"
 
 #: builtin/init-db.c:396 builtin/init-db.c:399
 #, c-format
@@ -16976,22 +16941,22 @@
 #: builtin/init-db.c:462
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
-msgstr "S'ha reinicialitzat el dipòsit compartit existent del Git en %s%s\n"
+msgstr "S'ha reinicialitzat el repositori compartit existent del Git en %s%s\n"
 
 #: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
-msgstr "S'ha reinicialitzat el dipòsit existent del Git en %s%s\n"
+msgstr "S'ha reinicialitzat el repositori existent del Git en %s%s\n"
 
 #: builtin/init-db.c:467
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
-msgstr "S'ha inicialitzat un dipòsit compartit buit del Git en %s%s\n"
+msgstr "S'ha inicialitzat un repositori compartit buit del Git en %s%s\n"
 
 #: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
-msgstr "S'ha inicialitzat un dipòsit buit del Git en %s%s\n"
+msgstr "S'ha inicialitzat un repositori buit del Git en %s%s\n"
 
 #: builtin/init-db.c:517
 msgid ""
@@ -17007,7 +16972,7 @@
 
 #: builtin/init-db.c:544
 msgid "specify that the git repository is to be shared amongst several users"
-msgstr "especifica que el dipòsit de git es compartirà entre diversos usuaris"
+msgstr "especifica que el repositori de git es compartirà entre diversos usuaris"
 
 #: builtin/init-db.c:550
 #, fuzzy
@@ -17073,7 +17038,7 @@
 
 #: builtin/interpret-trailers.c:99
 msgid "where to place the new trailer"
-msgstr "on ubica"
+msgstr "on ubicar el «trailer» nou"
 
 #: builtin/interpret-trailers.c:101
 msgid "action if trailer already exists"
@@ -17322,30 +17287,25 @@
 msgstr "marca la sèrie com a l'enèsima llançada"
 
 #: builtin/log.c:1765
-#, fuzzy
 msgid "max length of output filename"
-msgstr "mida màxima de cada fitxer empaquetat de sortida"
+msgstr "mida màxima del nom del fitxer de sortida"
 
 #: builtin/log.c:1767
-#, fuzzy
 msgid "use [RFC PATCH] instead of [PATCH]"
-msgstr "Usa [RFC PATCH] en lloc de [PATCH]"
+msgstr "useu [RFC PATCH] en comptes de [PATCH]"
 
 #: builtin/log.c:1770
-#, fuzzy
 msgid "cover-from-description-mode"
-msgstr "preferences-from-description-mode"
+msgstr "cover-from-description-mode"
 
 #: builtin/log.c:1771
-#, fuzzy
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
-"genera parts d'una lletra de portada basant-se en la descripció d'una branca"
+"genera parts d'una carta de presentació basant-se en la descripció d'una branca"
 
 #: builtin/log.c:1773
-#, fuzzy
 msgid "use [<prefix>] instead of [PATCH]"
-msgstr "Usa [<prefix>] en lloc de [PATCH]"
+msgstr "useu [<prefix>] en comptes de [PATCH]"
 
 #: builtin/log.c:1776
 msgid "store resulting files in <dir>"
@@ -17458,10 +17418,9 @@
 msgstr "mostra el progrés durant la generació de pedaços"
 
 #: builtin/log.c:1821
-#, fuzzy
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
-"mostra els canvis contra <rev> a la lletra de la portada o a un sol pedaç"
+"mostra els canvis contra <rev> a la carta de presentació o a un sol pedaç"
 
 #: builtin/log.c:1824
 #, fuzzy
@@ -17470,7 +17429,6 @@
 "mostra els canvis contra <refspec> a la lletra de la portada o a un sol pedaç"
 
 #: builtin/log.c:1826 builtin/range-diff.c:28
-#, fuzzy
 msgid "percentage by which creation is weighted"
 msgstr "percentatge pel qual la creació és ponderada"
 
@@ -17668,9 +17626,8 @@
 msgstr "mostra les dades de depuració"
 
 #: builtin/ls-files.c:674
-#, fuzzy
 msgid "suppress duplicate entries"
-msgstr "omet anomenar cadenes"
+msgstr "suprimeix les entrades duplicades"
 
 #: builtin/ls-remote.c:9
 msgid ""
@@ -17681,7 +17638,7 @@
 "git ls-remote [--heads] [--tags] [--refs]\n"
 "                     [--upload-pack=<executable>] [-q | --quiet]\n"
 "                     [--exit-code] [--get-url] [--symref]\n"
-"                     [<dipòsit> [<referències>...]]"
+"                     [<repositori> [<referències>...]]"
 
 #: builtin/ls-remote.c:60
 msgid "do not print remote URL"
@@ -19093,16 +19050,14 @@
 msgstr "paquet subòptim - sense memòria"
 
 #: builtin/pack-objects.c:2691
-#, fuzzy, c-format
+#, c-format
 msgid "Delta compression using up to %d threads"
-msgstr "Compressió delta usant fils de fins a un 1%"
+msgstr "Compressió de diferències usant fins a %d fils"
 
 #: builtin/pack-objects.c:2830
-#, fuzzy, c-format
+#, c-format
 msgid "unable to pack objects reachable from tag %s"
-msgstr ""
-"no s'han pogut empaquetar els objectes abastables des de les etiquetes per "
-"cent"
+msgstr "no s'han pogut empaquetar els objectes abastables des de l'etiqueta %s"
 
 #: builtin/pack-objects.c:2916
 msgid "Compressing objects"
@@ -19427,13 +19382,13 @@
 msgstr "S'estan enumerant els objectes"
 
 #: builtin/pack-objects.c:4052
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 msgstr ""
-"Total%<PRIu32> (delta %<PRIu32>) reutilitzat%<PRIu32> (delta %<PRIu32>) pack-"
-"reutilitzat%<PRIu32>"
+"Total %<PRIu32> (%<PRIu32> diferències), reusats %<PRIu32> (%<PRIu32> diferències), paquets "
+"reusats %<PRIu32>"
 
 #: builtin/pack-redundant.c:601
 msgid ""
@@ -19479,7 +19434,7 @@
 
 #: builtin/prune.c:152
 msgid "cannot prune in a precious-objects repo"
-msgstr "no es pot podar en un dipòsit d'objectes preciosos"
+msgstr "no es pot podar en un repositori d'objectes preciosos"
 
 #: builtin/pull.c:45 builtin/pull.c:47
 #, c-format
@@ -19488,7 +19443,7 @@
 
 #: builtin/pull.c:67
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
-msgstr "git pull [<opcions>] [<dipòsit> [<especificació-de-referència>...]]"
+msgstr "git pull [<opcions>] [<repositori> [<especificació-de-referència>...]]"
 
 #: builtin/pull.c:123
 msgid "control for recursive fetching of submodules"
@@ -19640,7 +19595,7 @@
 "  git config pull.ff only       # només fast-forward\n"
 "\n"
 "Podeu reemplaçar «git config» per «git config --global» per a establir una\n"
-"preferència per defecte per a tots els dipòsits. Podeu també usar --rebase,\n"
+"preferència per defecte per a tots els repositoris. Podeu també usar --rebase,\n"
 "--no-rebase o --ff-only en la línia d'ordres per sobreescriure el valor\n"
 "per defecte configuració en aquesta execució.\n"
 
@@ -19702,7 +19657,7 @@
 
 #: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
-msgstr "git push [<opcions>] [<dipòsit> [<especificació-de-referència>...]]"
+msgstr "git push [<opcions>] [<repositori> [<especificació-de-referència>...]]"
 
 #: builtin/push.c:111
 msgid "tag shorthand without <tag>"
@@ -19834,7 +19789,7 @@
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 "S'han rebutjat les actualitzacions perquè el remot conté canvis\n"
-"que no teniu localment. Això acostuma a ser causat per un altre dipòsit\n"
+"que no teniu localment. Això acostuma a ser causat per un altre repositori\n"
 "que ha pujat a la mateixa referència. Pot ser que primer vulgueu\n"
 "integrar els canvis remots (per exemple, «git pull ...») abans de\n"
 "pujar de nou.\n"
@@ -19883,7 +19838,7 @@
 
 #: builtin/push.c:553
 msgid "repository"
-msgstr "dipòsit"
+msgstr "repositori"
 
 #: builtin/push.c:554 builtin/send-pack.c:189
 msgid "push all refs"
@@ -19914,7 +19869,6 @@
 msgstr "requereix que el valor antic de la referència sigui d'aquest valor"
 
 #: builtin/push.c:566 builtin/send-pack.c:208
-#, fuzzy
 msgid "require remote updates to be integrated locally"
 msgstr "requereix que les actualitzacions remotes s'integrin localment"
 
@@ -19966,7 +19920,7 @@
 #: builtin/push.c:623
 #, c-format
 msgid "bad repository '%s'"
-msgstr "dipòsit incorrecte «%s»"
+msgstr "repositori incorrecte «%s»"
 
 #: builtin/push.c:624
 msgid ""
@@ -19981,7 +19935,7 @@
 "    git push <name>\n"
 msgstr ""
 "No hi ha cap destí de pujada configurat.\n"
-"Especifiqueu l'URL des de la línia d'ordres o bé configureu un dipòsit remot "
+"Especifiqueu l'URL des de la línia d'ordres o bé configureu un repositori remot "
 "fent servir\n"
 "\n"
 "    git remote add <nom> <url>\n"
@@ -20022,12 +19976,10 @@
 "tip>."
 
 #: builtin/range-diff.c:10
-#, fuzzy
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
-msgstr "git range-diff [<opcions>] <old-tip><new-tip>"
+msgstr "git range-diff [<opcions>] <old-tip>...<new-tip>"
 
 #: builtin/range-diff.c:11
-#, fuzzy
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git range-diff [<opcions>] <base> <old-tip> <new-tip>"
 
@@ -20148,7 +20100,6 @@
 msgstr "suprimeix els missatges de retroacció"
 
 #: builtin/read-tree.c:188
-#, fuzzy
 msgid "You need to resolve your current index first"
 msgstr "Primer heu de resoldre l'índex actual"
 
@@ -20227,9 +20178,8 @@
 msgstr "signa les comissions"
 
 #: builtin/rebase.c:507 builtin/rebase.c:1328
-#, fuzzy
 msgid "display a diffstat of what changed upstream"
-msgstr "mostra un «diffstat» de la font que ha canviat"
+msgstr "mostra un «diffstat» del que ha canviat a la font"
 
 #: builtin/rebase.c:509
 msgid "continue rebase"
@@ -20392,7 +20342,7 @@
 "Resoleu tots els conflictes manualment, marqueu-los com a resolts amb\n"
 "«git add/rm <fitxers_amb_conflicte>», llavors executeu «git rebase --"
 "continue».\n"
-"Podeu en comptes ometre aquesta comissió: executeu «git rebase --skip».\n"
+"Alternativament podeu ometre aquesta comissió: executeu «git rebase --skip».\n"
 "Per a avortar i tornar a l'estat anterior abans de l'ordre «git rebase», "
 "executeu «git rebase --abort»."
 
@@ -20501,7 +20451,7 @@
 
 #: builtin/rebase.c:1343 builtin/rebase.c:1347
 msgid "passed to 'git apply'"
-msgstr "passa-ho a «git-apply»"
+msgstr "passa-ho a «git apply»"
 
 #: builtin/rebase.c:1345
 msgid "ignore changes in whitespace"
@@ -20625,7 +20575,7 @@
 #: builtin/rebase.c:1494
 #, fuzzy
 msgid "cannot combine '--root' with '--fork-point'"
-msgstr "no es pot combinar «--keep-base» amb «--root»"
+msgstr "no es pot combinar «--root» amb «--root»"
 
 #: builtin/rebase.c:1497
 msgid "No rebase in progress?"
@@ -20829,13 +20779,13 @@
 "To squelch this message and still keep the default behaviour, set\n"
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
-"Per defecte, es denega actualitzar la branca actual en un dipòsit no\n"
+"Per defecte, es denega actualitzar la branca actual en un repositori no\n"
 "nu, perquè faria l'índex i l'arbre de treball inconsistents amb allò\n"
 "que hàgiu pujat, i requeriria «git reset --hard» per a fer que\n"
 "l'arbre de treball coincidís amb HEAD.\n"
 "\n"
 "Podeu establir la variable de configuració\n"
-"«receive.denyCurrentBranch» a «ignore» o «warn» en el dipòsit remot\n"
+"«receive.denyCurrentBranch» a «ignore» o «warn» en el repositori remot\n"
 "per a permetre pujar a la seva branca actual; això no obstant, no es\n"
 "recomana a menys que hàgiu decidit actualitzar el seu arbre de treball\n"
 "per a coincidir amb allò que hàgiu pujat d'alguna altra manera.\n"
@@ -20860,7 +20810,7 @@
 "confusió.\n"
 "\n"
 "Podeu establir la variable de configuració\n"
-"«receive.denyDeleteCurrent» a «warn» o «ignore» en el dipòsit remot\n"
+"«receive.denyDeleteCurrent» a «warn» o «ignore» en el repositori remot\n"
 "per a permetre suprimir la branca actual, amb un missatge\n"
 "d'advertència o sense.\n"
 "\n"
@@ -21588,7 +21538,7 @@
 
 #: builtin/repack.c:508
 msgid "cannot delete packs in a precious-objects repo"
-msgstr "no es poden suprimir paquets en un dipòsit d'objectes preciosos"
+msgstr "no es poden suprimir paquets en un repositori d'objectes preciosos"
 
 #: builtin/repack.c:512
 msgid "--keep-unreachable and -A are incompatible"
@@ -22008,7 +21958,7 @@
 #: builtin/reset.c:388
 #, c-format
 msgid "%s reset is not allowed in a bare repository"
-msgstr "el restabliment de %s no es permet en un dipòsit nu"
+msgstr "el restabliment de %s no es permet en un repositori nu"
 
 #: builtin/reset.c:392
 msgid "-N can only be used with --mixed"
@@ -22353,7 +22303,7 @@
 
 #: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
-msgstr "hi ha massa arguments donats fora del dipòsit"
+msgstr "hi ha massa arguments donats fora del repositori"
 
 #: builtin/show-branch.c:13
 msgid ""
@@ -22544,7 +22494,7 @@
 
 #: builtin/show-ref.c:179
 msgid "show refs from stdin that aren't in local repository"
-msgstr "mostra les referències de stdin que no siguin en el dipòsit local"
+msgstr "mostra les referències de stdin que no siguin en el repositori local"
 
 #: builtin/sparse-checkout.c:22
 #, fuzzy
@@ -22572,7 +22522,7 @@
 #, fuzzy
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
-"no s'ha pogut actualitzar el format del dipòsit per habilitar worktreeConfig"
+"no s'ha pogut actualitzar el format del repositori per habilitar worktreeConfig"
 
 #: builtin/sparse-checkout.c:270
 #, fuzzy
@@ -23003,8 +22953,8 @@
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr ""
-"no s'ha pogut trobar la configuració «%s». S'assumeix que aquest dipòsit és "
-"el seu dipòsit font autoritzat."
+"no s'ha pogut trobar la configuració «%s». S'assumeix que aquest repositori és "
+"el seu repositori font autoritzat."
 
 #: builtin/submodule--helper.c:667
 #, c-format
@@ -23402,7 +23352,7 @@
 #: builtin/submodule--helper.c:2542
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
-msgstr "no s'ha pogut obtenir el gestor del dipòsit pel submòdul «%s»"
+msgstr "no s'ha pogut obtenir el gestor del repositori pel submòdul «%s»"
 
 #: builtin/submodule--helper.c:2575
 msgid "recurse into submodules"
@@ -24422,10 +24372,10 @@
 "to read about a specific subcommand or concept.\n"
 "See 'git help git' for an overview of the system."
 msgstr ""
-"«git help -a» i «git help -g» llisten subordres disponibles i\n"
+"«git help -a» i «git help -g» llisten les subordres disponibles i\n"
 "algunes guies de concepte. Vegeu «git help <ordre>» o\n"
-"«git help <concepte>» per a llegir sobre una subordre o concepte específic.\n"
-"Vegeu «git help git» per a una visió general del sistema."
+"«git help <concepte>» per a llegir sobre una subordre o concepte\n"
+"específic. Vegeu «git help git» per a una visió general del sistema."
 
 #: git.c:188
 #, c-format
@@ -24540,7 +24490,7 @@
 #: http-fetch.c:128
 #, fuzzy
 msgid "not a git repository"
-msgstr "No és un dipòsit de git"
+msgstr "No és un repositori de git"
 
 #: http-fetch.c:134
 #, fuzzy
@@ -24764,7 +24714,7 @@
 #: remote-curl.c:499
 #, c-format
 msgid "repository '%s' not found"
-msgstr "no s'ha trobat el dipòsit «%s»"
+msgstr "no s'ha trobat el repositori «%s»"
 
 #: remote-curl.c:503
 #, c-format
@@ -24880,7 +24830,7 @@
 #: remote-curl.c:1518
 #, fuzzy
 msgid "remote-curl: fetch attempted without a local repo"
-msgstr "s'ha intentat recuperar el valor remot sense un dipòsit local"
+msgstr "s'ha intentat recuperar el valor remot sense un repositori local"
 
 #: remote-curl.c:1559
 #, fuzzy, c-format
@@ -24974,7 +24924,7 @@
 
 #: command-list.h:54
 msgid "Import a GNU Arch repository into Git"
-msgstr "Importa un dipòsit GNU Arch a Git"
+msgstr "Importa un repositori GNU Arch a Git"
 
 #: command-list.h:55
 msgid "Create an archive of files from a named tree"
@@ -25007,7 +24957,7 @@
 #: command-list.h:61
 msgid "Provide content or type and size information for repository objects"
 msgstr ""
-"Proveeix contingut o informació del tipus i mida per als objectes del dipòsit"
+"Proveeix contingut o informació del tipus i mida per als objectes del repositori"
 
 #: command-list.h:62
 msgid "Display gitattributes information"
@@ -25052,7 +25002,7 @@
 
 #: command-list.h:72
 msgid "Clone a repository into a new directory"
-msgstr "Clona un dipòsit a un directori nou"
+msgstr "Clona un repositori a un directori nou"
 
 #: command-list.h:73
 msgid "Display data in columns"
@@ -25060,7 +25010,7 @@
 
 #: command-list.h:74
 msgid "Record changes to the repository"
-msgstr "Registra els canvis al dipòsit"
+msgstr "Registra els canvis al repositori"
 
 #: command-list.h:75
 msgid "Write and verify Git commit-graph files"
@@ -25072,7 +25022,7 @@
 
 #: command-list.h:77
 msgid "Get and set repository or global options"
-msgstr "Obté o estableix opcions de dipòsit o globals"
+msgstr "Obté o estableix opcions de repositori o globals"
 
 #: command-list.h:78
 #, fuzzy
@@ -25109,7 +25059,7 @@
 
 #: command-list.h:85
 msgid "A really simple server for Git repositories"
-msgstr "Un servidor realment senzill per a dipòsits Git"
+msgstr "Un servidor realment senzill per a repositoris Git"
 
 #: command-list.h:86
 msgid "Give an object a human readable name based on an available ref"
@@ -25150,11 +25100,11 @@
 
 #: command-list.h:94
 msgid "Download objects and refs from another repository"
-msgstr "Baixa objectes i referències d'un altre dipòsit"
+msgstr "Baixa objectes i referències d'un altre repositori"
 
 #: command-list.h:95
 msgid "Receive missing objects from another repository"
-msgstr "Rep els objectes que manquen des d'un altre dipòsit"
+msgstr "Rep els objectes que manquen des d'un altre repositori"
 
 #: command-list.h:96
 msgid "Rewrite branches"
@@ -25171,11 +25121,11 @@
 #: command-list.h:99
 #, fuzzy
 msgid "Run a Git command on a list of repositories"
-msgstr "executa les tasques basades en l'estat del dipòsit"
+msgstr "executa les tasques basades en l'estat del repositori"
 
 #: command-list.h:100
 msgid "Prepare patches for e-mail submission"
-msgstr "Prepara pedaços per enviar-los per correu electrònic"
+msgstr "Prepara pedaços per a enviar-los per correu electrònic"
 
 #: command-list.h:101
 msgid "Verifies the connectivity and validity of the objects in the database"
@@ -25183,7 +25133,7 @@
 
 #: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
-msgstr "Neteja els fitxers innecessaris i optimitza el dipòsit local"
+msgstr "Neteja els fitxers innecessaris i optimitza el repositori local"
 
 #: command-list.h:103
 #, fuzzy
@@ -25196,7 +25146,7 @@
 
 #: command-list.h:105
 msgid "A portable graphical interface to Git"
-msgstr "Una interfície gràfic portable per al Git"
+msgstr "Una interfície gràfica portable per al Git"
 
 #: command-list.h:106
 msgid "Compute object ID and optionally creates a blob from a file"
@@ -25212,12 +25162,12 @@
 
 #: command-list.h:109
 msgid "Download from a remote Git repository via HTTP"
-msgstr "Baixa des d'un dipòsit Git remot via HTTP"
+msgstr "Baixa des d'un repositori Git remot via HTTP"
 
 #: command-list.h:110
 #, fuzzy
 msgid "Push objects over HTTP/DAV to another repository"
-msgstr "Empeny objectes sobre HTTP/DAV a un altre dipòsit"
+msgstr "Empeny objectes sobre HTTP/DAV a un altre repositori"
 
 #: command-list.h:111
 #, fuzzy
@@ -25233,12 +25183,12 @@
 
 #: command-list.h:113
 msgid "Create an empty Git repository or reinitialize an existing one"
-msgstr "Crea un dipòsit de Git buit o reinicialitza un existent"
+msgstr "Crea un repositori de Git buit o reinicialitza un existent"
 
 #: command-list.h:114
 #, fuzzy
 msgid "Instantly browse your working repository in gitweb"
-msgstr "Navegueu instantàniament pel vostre dipòsit de treball a gitweb"
+msgstr "Navegueu instantàniament pel vostre repositori de treball a gitweb"
 
 #: command-list.h:115
 #, fuzzy
@@ -25247,7 +25197,7 @@
 
 #: command-list.h:116
 msgid "The Git repository browser"
-msgstr "El navegador de dipòsits Git"
+msgstr "El navegador de repositoris Git"
 
 #: command-list.h:117
 msgid "Show commit logs"
@@ -25259,7 +25209,7 @@
 
 #: command-list.h:119
 msgid "List references in a remote repository"
-msgstr "Mostra les referències d'un dipòsit remot"
+msgstr "Mostra les referències d'un repositori remot"
 
 #: command-list.h:120
 msgid "List the contents of a tree object"
@@ -25278,7 +25228,7 @@
 #: command-list.h:123
 #, fuzzy
 msgid "Run tasks to optimize Git repository data"
-msgstr "Executa les tasques per optimitzar les dades del dipòsit Git"
+msgstr "Executa les tasques per optimitzar les dades del repositori Git"
 
 #: command-list.h:124
 msgid "Join two or more development histories together"
@@ -25344,7 +25294,7 @@
 
 #: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
-msgstr "Importa des de i envia a dipòsits Perforce"
+msgstr "Importa des de i envia a repositoris Perforce"
 
 #: command-list.h:138
 msgid "Create a packed archive of objects"
@@ -25374,7 +25324,7 @@
 
 #: command-list.h:144
 msgid "Fetch from and integrate with another repository or a local branch"
-msgstr "Obtén i integra amb un altre dipòsit o una branca local"
+msgstr "Obtén i integra amb un altre repositori o una branca local"
 
 #: command-list.h:145
 msgid "Update remote refs along with associated objects"
@@ -25387,10 +25337,9 @@
 msgstr "Aplica un conjunt de pedaços cobert a la branca actual"
 
 #: command-list.h:147
-#, fuzzy
 msgid "Compare two commit ranges (e.g. two versions of a branch)"
 msgstr ""
-"Compara dos intervals de comissions (p. ex. dues versions d'una branca)"
+"Compara dos rangs de comissions (p. ex. dues versions d'una branca)"
 
 #: command-list.h:148
 msgid "Reads tree information into the index"
@@ -25401,7 +25350,6 @@
 msgstr "Torna a aplicar les comissions sobre un altre punt de basament"
 
 #: command-list.h:150
-#, fuzzy
 msgid "Receive what is pushed into the repository"
 msgstr "Rep el que s'envia al repositori"
 
@@ -25411,11 +25359,11 @@
 
 #: command-list.h:152
 msgid "Manage set of tracked repositories"
-msgstr "Gestiona el conjunt de dipòsits seguits"
+msgstr "Gestiona el conjunt de repositoris seguits"
 
 #: command-list.h:153
 msgid "Pack unpacked objects in a repository"
-msgstr "Empaqueta els objectes desempaquetats en un dipòsit"
+msgstr "Empaqueta els objectes desempaquetats en un repositori"
 
 #: command-list.h:154
 #, fuzzy
@@ -25460,7 +25408,7 @@
 
 #: command-list.h:164
 msgid "Push objects over Git protocol to another repository"
-msgstr "Puja objectes sobre el protocol Git a un altre dipòsit"
+msgstr "Puja objectes sobre el protocol Git a un altre repositori"
 
 #: command-list.h:165
 msgid "Restricted login shell for Git-only SSH access"
@@ -25484,7 +25432,7 @@
 
 #: command-list.h:170
 msgid "List references in a local repository"
-msgstr "Llista les referències en un dipòsit local"
+msgstr "Llista les referències en un repositori local"
 
 #: command-list.h:171
 msgid "Git's i18n setup code for shell scripts"
@@ -25496,14 +25444,12 @@
 msgstr "Codi de scripts de configuració comuns pel Git shell"
 
 #: command-list.h:173
-#, fuzzy
 msgid "Initialize and modify the sparse-checkout"
-msgstr "Inicialitza i modifica la comprovació «sparse»"
+msgstr "Inicialitza i modifica el «sparse-checkout»"
 
 #: command-list.h:174
-#, fuzzy
 msgid "Stash the changes in a dirty working directory away"
-msgstr "Desa els canvis en un directori de treball brut"
+msgstr "Fes «stash» dels canvis en un directori de treball brut"
 
 #: command-list.h:175
 msgid "Add file contents to the staging area"
@@ -25523,11 +25469,11 @@
 
 #: command-list.h:179
 msgid "Bidirectional operation between a Subversion repository and Git"
-msgstr "Operació bidireccional entre un dipòsit a Subversion i Git"
+msgstr "Operació bidireccional entre un repositori a Subversion i Git"
 
 #: command-list.h:180
 msgid "Switch branches"
-msgstr "Commuta branques"
+msgstr "Commuta entre branques"
 
 #: command-list.h:181
 msgid "Read, modify and delete symbolic refs"
@@ -25586,7 +25532,7 @@
 
 #: command-list.h:194
 msgid "Git web interface (web frontend to Git repositories)"
-msgstr "Interfície web del Git (interfície web pels dipòsits Git)"
+msgstr "Interfície web del Git (interfície web pels repositoris Git)"
 
 #: command-list.h:195
 msgid "Show logs with difference each commit introduces"
@@ -25658,11 +25604,11 @@
 
 #: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
-msgstr "Programes d'ajuda per a interactuar amb dipòsits remots"
+msgstr "Programes d'ajuda per a interactuar amb repositoris remots"
 
 #: command-list.h:213
 msgid "Git Repository Layout"
-msgstr "Disposició del dipòsit del Git"
+msgstr "Disposició del repositori del Git"
 
 #: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
@@ -25670,7 +25616,7 @@
 
 #: command-list.h:215
 msgid "Mounting one repository inside another"
-msgstr "Muntant un dipòsit dins un altre"
+msgstr "Muntant un repositori dins un altre"
 
 #: command-list.h:216
 msgid "A tutorial introduction to Git: part two"
@@ -25769,7 +25715,7 @@
 #: git-submodule.sh:189
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
-msgstr "URL de dipòsit: «$repo» ha de ser absolut o començar amb ./|../"
+msgstr "URL de repositori: «$repo» ha de ser absolut o començar amb ./|../"
 
 #: git-submodule.sh:208
 #, sh-format
@@ -25789,12 +25735,12 @@
 #: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "S'està afegint el dipòsit existent a «$sm_path» a l'índex"
+msgstr "S'està afegint el repositori existent a «$sm_path» a l'índex"
 
 #: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "«$sm_path» ja existeix i no és un dipòsit de git vàlid"
+msgstr "«$sm_path» ja existeix i no és un repositori de git vàlid"
 
 #: git-submodule.sh:259
 #, sh-format
@@ -25814,7 +25760,7 @@
 msgstr ""
 "Si voleu reusar aquest directori de git local en lloc de clonar de nou de\n"
 "  $realrepo\n"
-"useu l'opció «--force». Si el directori de git local no és el dipòsit "
+"useu l'opció «--force». Si el directori de git local no és el repositori "
 "correcte\n"
 "o no esteu segur de què vol dir això, trieu un altre nom amb l'opció «--"
 "name»."
@@ -26697,7 +26643,7 @@
 
 #: git-send-email.perl:498 git-send-email.perl:700
 msgid "Cannot run git format-patch from outside a repository\n"
-msgstr "No es pot executar git format-patch des de fora del dipòsit\n"
+msgstr "No es pot executar git format-patch des de fora del repositori\n"
 
 #: git-send-email.perl:501
 #, fuzzy
diff --git a/po/de.po b/po/de.po
index 20d720b..cad96a0 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
 "PO-Revision-Date: 2021-05-23 18:32+0200\n"
 "Last-Translator: Matthias Rüster <matthias.ruester@gmail.com>\n"
 "Language-Team: Matthias Rüster <matthias.ruester@gmail.com>\n"
@@ -24,8 +24,8 @@
 msgid "Huh (%s)?"
 msgstr "Wie bitte (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "Index konnte nicht gelesen werden"
@@ -54,7 +54,7 @@
 msgid "could not stage '%s'"
 msgstr "Konnte '%s' nicht zum Commit vormerken."
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "konnte Index nicht schreiben"
 
@@ -112,12 +112,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "Ignoriere nicht zusammengeführte Datei: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Nur Binärdateien geändert.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Keine Änderungen.\n"
@@ -194,11 +194,11 @@
 msgid "(empty) select nothing"
 msgstr "(leer) nichts auswählen"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Befehle ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Was nun"
 
@@ -210,12 +210,13 @@
 msgid "unstaged"
 msgstr "aus Staging-Area entfernt"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "Pfad"
@@ -224,7 +225,7 @@
 msgid "could not refresh index"
 msgstr "Index konnte nicht aktualisiert werden"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Tschüss.\n"
@@ -543,34 +544,34 @@
 "a - diesen und alle weiteren Patch-Blöcke in der Datei anwenden\n"
 "d - diesen und alle weiteren Patch-Blöcke in der Datei nicht anwenden\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "Konnte Block-Header '%.*s' nicht parsen."
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "Konnte farbigen Block-Header '%.*s' nicht parsen."
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "Konnte Differenz nicht parsen."
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "Konnte farbige Differenz nicht parsen."
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "'%s' konnte nicht ausgeführt werden"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "nicht übereinstimmende Ausgabe von interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -578,7 +579,7 @@
 "Der Filter muss eine Eins-zu-Eins-Beziehung\n"
 "zwischen den Ein- und Ausgabe-Zeilen einhalten."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -587,7 +588,7 @@
 "Erwartete Kontextzeile #%d in\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -600,13 +601,13 @@
 "\tendet nicht mit:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr ""
 "Manueller Editiermodus für Patch-Blöcke -- siehe nach unten für eine\n"
 "Kurzanleitung.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -620,7 +621,7 @@
 "Zeilen, die mit %c beginnen, werden entfernt.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -631,11 +632,11 @@
 "werden,\n"
 "wird die Bearbeitung abgebrochen und der Patch-Block bleibt unverändert.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "Konnte Block-Header nicht parsen."
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' schlug fehl."
 
@@ -651,27 +652,27 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Ihr bearbeiteter Patch-Block kann nicht angewendet werden.\n"
 "Erneut bearbeiten? (\"n\" verwirft Bearbeitung!) [y/n]?"
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr ""
 "Die ausgewählten Patch-Blöcke können nicht auf den Index angewendet werden!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Trotzdem auf Arbeitsverzeichnis anwenden? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Nichts angewendet.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -695,69 +696,69 @@
 "e - aktuellen Patch-Block manuell editieren\n"
 "? - Hilfe anzeigen\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Kein vorheriger Patch-Block"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Kein folgender Patch-Block"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Keine anderen Patch-Blöcke verbleibend"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "zu welchem Patch-Block springen (<Enter> für mehr Informationen)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "zu welchem Patch-Block springen? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Ungültige Nummer: '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Entschuldigung, nur %d Patch-Block verfügbar."
 msgstr[1] "Entschuldigung, nur %d Patch-Blöcke verfügbar."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Keine anderen Patch-Blöcke zum Durchsuchen"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "Suche nach regulärem Ausdruck? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Fehlerhafter regulärer Ausdruck für Suche %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Kein Patch-Block entspricht dem angegebenen Muster"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht aufteilen"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "In %d Patch-Block aufgeteilt."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht bearbeiten"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' schlug fehl"
 
@@ -819,7 +820,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Beende wegen unaufgelöstem Konflikt."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert)."
 
@@ -1219,8 +1220,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s ist vom Typ %o, erwartete %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "Ungültiger Pfad '%s'"
@@ -1310,7 +1311,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "Fehler beim Schreiben nach '%s'"
@@ -1400,7 +1401,7 @@
 msgstr[0] "%d Zeile nach Behebung von Whitespace-Fehlern angewendet."
 msgstr[1] "%d Zeilen nach Behebung von Whitespace-Fehlern angewendet."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Konnte neue Index-Datei nicht schreiben."
 
@@ -1412,7 +1413,7 @@
 msgid "apply changes matching the given path"
 msgstr "Änderungen nur im angegebenen Pfad anwenden"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "Anzahl"
 
@@ -1488,9 +1489,9 @@
 msgstr ""
 "sicher stellen, dass mindestens <n> Zeilen des Kontextes übereinstimmen"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "Aktion"
@@ -1521,8 +1522,8 @@
 msgstr "sich überlappende Patch-Blöcke erlauben"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "erweiterte Ausgaben"
 
@@ -1534,7 +1535,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "den Zeilennummern im Kopf des Patch-Blocks nicht vertrauen"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "Wurzelverzeichnis"
 
@@ -1576,7 +1577,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "Pfad zu lang (%d Zeichen, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "Fehler beim Komprimieren (%d)"
@@ -1611,13 +1612,13 @@
 msgstr "Kann %s nicht lesen."
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein"
@@ -1659,7 +1660,7 @@
 msgid "archive format"
 msgstr "Archivformat"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "Präfix"
 
@@ -1670,7 +1671,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1701,7 +1702,8 @@
 msgstr "unterstützte Archivformate auflisten"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "Repository"
 
@@ -1709,7 +1711,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "Archiv vom Remote-Repository <Repository> abrufen"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "Programm"
@@ -1899,11 +1901,11 @@
 "endgültigen\n"
 "Commits"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen"
 
@@ -2066,118 +2068,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD des Arbeitsverzeichnisses %s ist nicht aktualisiert."
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "unbekannter Paket-Hash-Algorithmus: %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "unbekannte Fähigkeit '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' sieht nicht wie eine v2 oder v3 Paketdatei aus"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "nicht erkannter Kopfbereich: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "Konnte '%s' nicht öffnen"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Dem Repository fehlen folgende vorausgesetzte Commits:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "Um ein Paket zu überprüfen wird ein Repository benötigt."
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Das Paket enthält diese Referenz:"
 msgstr[1] "Das Paket enthält diese %d Referenzen:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Das Paket speichert eine komplette Historie."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Das Paket benötigt diese Referenz:"
 msgstr[1] "Das Paket benötigt diese %d Referenzen:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "Konnte dup für Descriptor des Pakets nicht ausführen."
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Konnte Paketobjekte nicht erstellen"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "Erstellung der Paketobjekte abgebrochen"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "Referenz '%s' wird durch \"rev-list\" Optionen ausgeschlossen"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "nicht unterstützte Paket-Version %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "kann Paket-Version %d nicht mit Algorithmus %s schreiben"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "nicht erkanntes Argument: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Erstellung eines leeren Pakets zurückgewiesen."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kann '%s' nicht erstellen"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "Erstellung der Paketindexdatei abgebrochen"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "abschließende Chunk-ID erscheint eher als erwartet"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "unzulässige(r) Chunk-Offset(s) %<PRIx64> und %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "doppelte Chunk-ID %<PRIx32> gefunden"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "letzter Chunk hat nicht-Null ID %<PRIx32>"
@@ -2245,12 +2247,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "Commit-Graph erfordert Überlaufgenerierungsdaten, aber hat keine"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "Konnte Commit '%s' nicht parsen."
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "Konnte Art von Objekt '%s' nicht bestimmen."
@@ -2312,7 +2314,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "Fehler beim Schreiben der korrekten Anzahl von Basis-Graph-IDs."
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
@@ -2363,59 +2365,59 @@
 msgid "too many commits to write graph"
 msgstr "zu viele Commits zum Schreiben des Graphen"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "die Commit-Graph-Datei hat eine falsche Prüfsumme und ist wahrscheinlich "
 "beschädigt"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "Commit-Graph hat fehlerhafte OID-Reihenfolge: %s dann %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "Commit-Graph hat fehlerhaften Fanout-Wert: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "konnte Commit %s von Commit-Graph nicht parsen"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Commit in Commit-Graph überprüfen"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "Fehler beim Parsen des Commits %s von Objekt-Datenbank für Commit-Graph"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "OID des Wurzelverzeichnisses für Commit %s in Commit-Graph ist %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "Commit-Graph Vorgänger-Liste für Commit %s ist zu lang"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "Commit-Graph-Vorgänger für %s ist %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "Commit-Graph Vorgänger-Liste für Commit %s endet zu früh"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2423,7 +2425,7 @@
 "Commit-Graph hat Generationsnummer null für Commit %s, aber sonst ungleich "
 "null"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2431,19 +2433,19 @@
 "Commit-Graph hat Generationsnummer ungleich null für Commit %s, aber sonst "
 "null"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr "Commit-Graph Erstellung für Commit %s ist %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "Commit-Datum für Commit %s in Commit-Graph ist %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "konnte %s nicht parsen"
@@ -2741,7 +2743,7 @@
 msgstr ""
 "Muss einer von diesen sein: nothing, matching, simple, upstream, current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "ungültiger Komprimierungsgrad (%d) für Paketierung"
@@ -2761,116 +2763,116 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "Konnte Blob '%s' für Konfiguration nicht auflösen."
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "Fehler beim Parsen von %s."
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr ""
 "Konnte die über die Befehlszeile angegebene Konfiguration nicht parsen."
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "Es trat ein unbekannter Fehler beim Lesen der Konfigurationsdateien auf."
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Ungültiger %s: '%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "Der Wert '%d' von splitIndex.maxPercentChange sollte zwischen 0 und 100 "
 "liegen."
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 "Konnte Wert '%s' aus der über die Befehlszeile angegebenen Konfiguration\n"
 "nicht parsen."
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "ungültige Konfigurationsvariable '%s' in Datei '%s' bei Zeile %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "Ungültiger Sektionsname '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s hat mehrere Werte"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "Konnte neue Konfigurationsdatei '%s' nicht schreiben."
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "Konnte Konfigurationsdatei '%s' nicht sperren."
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "Öffne %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "Ungültiges Muster: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "Ungültige Konfigurationsdatei %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat auf %s fehlgeschlagen"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "mmap für '%s' fehlgeschlagen"
+msgid "unable to mmap '%s'%s"
+msgstr "mmap für '%s'(%s) fehlgeschlagen"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod auf %s fehlgeschlagen"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "Konnte Konfigurationsdatei %s nicht schreiben."
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "Konnte '%s' nicht zu '%s' setzen."
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "Konnte '%s' nicht aufheben."
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "Ungültiger Sektionsname: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "Fehlender Wert für '%s'"
@@ -3050,7 +3052,7 @@
 msgid "unable to fork"
 msgstr "kann Prozess nicht starten"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Prüfe Konnektivität"
 
@@ -3173,7 +3175,7 @@
 msgid "path name too long for external filter"
 msgstr "Pfadname zu lang für externen Filter"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3182,16 +3184,16 @@
 "externer Filter '%s' nicht mehr verfügbar, obwohl nicht alle Pfade gefiltert "
 "wurden"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false sind keine gültigen Codierungen im Arbeitsverzeichnis"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: clean-Filter '%s' fehlgeschlagen"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: smudge-Filter '%s' fehlgeschlagen"
@@ -3319,36 +3321,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "%d Delta-Islands markiert, fertig.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "unbekannter Wert für --diff-merges: %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base funktioniert nicht mit Bereichen"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base funktioniert nur mit Commits"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "konnte HEAD nicht bekommen"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "keine Merge-Basis gefunden"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "mehrere Merge-Basen gefunden"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<Optionen>] <Pfad> <Pfad>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3373,7 +3375,7 @@
 "'dimmed-zebra', 'plain'"
 msgstr ""
 "\"color moved\"-Einstellung muss eines von diesen sein: 'no', 'default', "
-"'blocks', 'zebra', 'dimmed_zebra', 'plain'"
+"'blocks', 'zebra', 'dimmed-zebra', 'plain'"
 
 #: diff.c:325
 #, c-format
@@ -3395,7 +3397,7 @@
 #: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
-msgstr "Unbekannter Wert in Konfigurationsvariable 'diff.dirstat': '%s'"
+msgstr "Unbekannter Wert in Konfigurationsvariable 'diff.submodule': '%s'"
 
 #: diff.c:470
 #, c-format
@@ -3406,36 +3408,51 @@
 "Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "externes Diff-Programm unerwartet beendet, angehalten bei %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "--name-only, --name-status, --check und -s schließen sich gegenseitig aus"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S und --find-object schließen sich gegenseitig aus"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G und --pickaxe-regex schließen sich gegenseitig aus. Benutzen Sie\n"
+"--pickaxe-regex mit -S."
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all und --find-object schließen sich gegenseitig aus. Benutzen\n"
+"Sie --pickaxe-all mit -G und -S."
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow erfordert genau eine Pfadspezifikation"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "Ungültiger --stat Wert: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s erwartet einen numerischen Wert."
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3444,42 +3461,42 @@
 "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "unbekannte Änderungsklasse '%c' in --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "unbekannter Wert nach ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "konnte '%s' nicht auflösen"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s erwartet die Form <n>/<m>"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s erwartet ein Zeichen, '%s' bekommen"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "ungültiges --color-moved Argument: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "ungültiger Modus '%s' in --color-moved-ws"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3487,157 +3504,157 @@
 "Option diff-algorithm akzeptiert: \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "ungültiges Argument für %s"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "ungültiger regulärer Ausdruck für -I gegeben: '%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "ungültiges --word-diff Argument: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Diff-Optionen zu Ausgabeformaten"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "Patch erzeugen"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "Ausgabe der Unterschiede unterdrücken"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "Unterschiede mit <n> Zeilen des Kontextes erstellen"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "Unterschiede im Rohformat erstellen"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "Synonym für '-p --raw'"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "Synonym für '-p --stat'"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "maschinenlesbare Ausgabe von --stat"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "nur die letzte Zeile von --stat ausgeben"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<Parameter1,Parameter2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "die Verteilung des relativen Umfangs der Änderungen für jedes "
 "Unterverzeichnis ausgeben"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "Synonym für --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "Synonym für --dirstat=files,Parameter1,Parameter2..."
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "warnen, wenn Änderungen Konfliktmarker oder Whitespace-Fehler einbringen"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "gekürzte Zusammenfassung, wie z.B. Erstellungen, Umbenennungen und "
 "Änderungen der Datei-Rechte"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "nur Dateinamen der geänderten Dateien anzeigen"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "nur Dateinamen und Status der geänderten Dateien anzeigen"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<Breite>[,<Namens-Breite>[,<Anzahl>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "Zusammenfassung der Unterschiede erzeugen"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<Breite>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Breite erzeugen"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Namens-Breite erzeugen"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "Zusammenfassung der Unterschiede mit gegebener Graph-Breite erzeugen"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<Anzahl>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "Zusammenfassung der Unterschiede mit begrenzten Zeilen erzeugen"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "kompakte Zusammenstellung in Zusammenfassung der Unterschiede erzeugen"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "eine binäre Differenz ausgeben, dass angewendet werden kann"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "vollständige Objekt-Namen in den \"index\"-Zeilen anzeigen"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "farbige Unterschiede anzeigen"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<Art>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3645,7 +3662,7 @@
 "Whitespace-Fehler in den Zeilen 'context', 'old' oder 'new' bei den "
 "Unterschieden hervorheben"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3653,91 +3670,91 @@
 "die Pfadnamen nicht verschleiern und NUL-Zeichen als Schlusszeichen in "
 "Ausgabefeldern bei --raw oder --numstat nutzen"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<Präfix>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "den gegebenen Quell-Präfix statt \"a/\" anzeigen"
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "den gegebenen Ziel-Präfix statt \"b/\" anzeigen"
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "einen zusätzlichen Präfix bei jeder Ausgabezeile voranstellen"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "keine Quell- oder Ziel-Präfixe anzeigen"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "Kontext zwischen Unterschied-Blöcken bis zur angegebenen Anzahl von Zeilen "
 "anzeigen"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<Zeichen>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "das Zeichen festlegen, das eine neue Zeile kennzeichnet (statt '+')"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "das Zeichen festlegen, das eine alte Zeile kennzeichnet (statt '-')"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "das Zeichen festlegen, das den Kontext kennzeichnet (statt ' ')"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Diff-Optionen zur Umbenennung"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "teile komplette Rewrite-Änderungen in Änderungen mit \"löschen\" und "
 "\"erstellen\""
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "Umbenennungen erkennen"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "Preimage für Löschungen weglassen"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "Kopien erkennen"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "ungeänderte Dateien als Quelle zum Finden von Kopien nutzen"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "Erkennung von Umbenennungen deaktivieren"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "leere Blobs als Quelle von Umbenennungen nutzen"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "Auflistung der Historie einer Datei nach Umbenennung fortführen"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3745,164 +3762,164 @@
 "Erkennung von Umbenennungen und Kopien verhindern, wenn die Anzahl der Ziele "
 "für Umbenennungen und Kopien das gegebene Limit überschreitet"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Diff Algorithmus-Optionen"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "die kleinstmöglichen Änderungen erzeugen"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "Whitespace-Änderungen beim Vergleich von Zeilen ignorieren"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "Änderungen bei der Anzahl von Whitespace ignorieren"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "Whitespace-Änderungen am Zeilenende ignorieren"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "den Zeilenumbruch am Ende der Zeile ignorieren"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "Änderungen in leeren Zeilen ignorieren"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<Regex>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr ""
 "Änderungen ignorieren, bei denen alle Zeilen mit <Regex> übereinstimmen"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "Heuristik, um Grenzen der Änderungsblöcke für bessere Lesbarkeit zu "
 "verschieben"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Patience Diff\" erzeugen"
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Histogram Diff\" erzeugen"
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<Algorithmus>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "einen Algorithmus für Änderungen wählen"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<Text>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "Änderungen durch Nutzung des Algorithmus \"Anchored Diff\" erzeugen"
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<Modus>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "Wort-Änderungen zeigen, nutze <Modus>, um Wörter abzugrenzen"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "<Regex> nutzen, um zu entscheiden, was ein Wort ist"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "entsprechend wie --word-diff=color --word-diff-regex=<Regex>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "verschobene Codezeilen sind andersfarbig"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "wie Whitespaces in --color-moved ignoriert werden"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Andere Diff-Optionen"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "wenn vom Unterverzeichnis aufgerufen, schließe Änderungen außerhalb aus und "
 "zeige relative Pfade an"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "alle Dateien als Text behandeln"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "die beiden Eingaben vertauschen und die Änderungen umkehren"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 "mit Exit-Status 1 beenden, wenn Änderungen vorhanden sind, andernfalls mit 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "alle Ausgaben vom Programm deaktivieren"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "erlaube die Ausführung eines externes Programms für Änderungen"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "Führe externe Text-Konvertierungsfilter aus, wenn binäre Dateien vergleicht "
 "werden"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<wann>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "Änderungen in Submodulen während der Erstellung der Unterschiede ignorieren"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<Format>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "angeben, wie Unterschiede in Submodulen gezeigt werden"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "'git add -N' Einträge vom Index verstecken"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "'git add -N' Einträge im Index als echt behandeln"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<Zeichenkette>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3910,7 +3927,7 @@
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens der angegebenen "
 "Zeichenkette verändern"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3918,37 +3935,37 @@
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens des angegebenen "
 "regulären Ausdrucks verändern"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "alle Änderungen im Changeset mit -S oder -G anzeigen"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "<Zeichenkette> bei -S als erweiterten POSIX regulären Ausdruck behandeln"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr ""
 "die Reihenfolge kontrollieren, in der die Dateien in der Ausgabe erscheinen"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<Pfad>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "die Änderung des angegebenen Pfades zuerst anzeigen"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "überspringe die Ausgabe bis zum angegebenen Pfad"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<Objekt-ID>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3956,33 +3973,33 @@
 "nach Unterschieden suchen, welche die Anzahl des Vorkommens des angegebenen "
 "Objektes verändern"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "Dateien anhand der Art der Änderung wählen"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<Datei>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Ausgabe zu einer bestimmten Datei"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"ungenaue Erkennung für Umbenennungen wurde aufgrund zu vieler Dateien\n"
+"genaue Erkennung für Umbenennungen wurde aufgrund zu vieler Dateien\n"
 "übersprungen."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr "nur Kopien von geänderten Pfaden, aufgrund zu vieler Dateien, gefunden"
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3995,7 +4012,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "Fehler beim Lesen der Reihenfolgedatei '%s'"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Führe Erkennung für ungenaue Umbenennung aus"
 
@@ -4004,63 +4021,63 @@
 msgid "No such path '%s' in the diff"
 msgstr "Pfad '%s' nicht im Diff gefunden"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
-msgstr "Pfadspezifikation '%s' stimmt mit keinen git-bekannten Dateien überein"
+msgstr "Pfadspezifikation '%s' stimmt mit keinen Git bekannten Dateien überein"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "unbekanntes Muster: '%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "unbekanntes verneinendes Muster: '%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "Ihre Datei für den partiellen Checkout hat eventuell Probleme:\n"
 "Muster '%s' wiederholt sich."
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "deaktiviere Cone-Muster-Übereinstimmung"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "kann %s nicht als exclude-Filter benutzen"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "konnte Verzeichnis '%s' nicht öffnen"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "Fehler beim Sammeln von Namen und Informationen zum Kernel"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 "Cache für unversionierte Dateien ist auf diesem System oder\n"
 "für dieses Verzeichnis deaktiviert"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "Index-Datei in Repository %s beschädigt"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "Konnte Verzeichnisse für '%s' nicht erstellen"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "Konnte Git-Verzeichnis nicht von '%s' nach '%s' migrieren"
@@ -4070,11 +4087,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "Hinweis: Warte auf das Schließen der Datei durch Ihren Editor...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Filtere Inhalt"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "konnte Datei '%s' nicht lesen"
@@ -4084,7 +4101,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "ungültiger Git-Namespace-Pfad \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "konnte GIT_DIR nicht zu '%s' setzen"
@@ -4251,7 +4268,7 @@
 "Quelle ist ein Repository mit unvollständiger Historie (shallow), Klonen "
 "zurückgewiesen."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: Abholen fehlgeschlagen."
 
@@ -4273,7 +4290,7 @@
 msgid "Server supports filter"
 msgstr "Server unterstützt Filter"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "konnte Anfrage nicht zum Remote schreiben"
 
@@ -4329,24 +4346,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: Antwort-Endpaket erwartet"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "kein übereinstimmender Remote-Branch"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "unerwartetes 'ready' von Remote-Repository"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "Remote-Referenz %s nicht gefunden"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Der Server lehnt Anfrage nach nicht angebotenem Objekt %s ab."
@@ -4366,8 +4383,8 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
-msgstr "Ignoriere ungültige Farbe '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "ungültige Farbe '%.*s' in log.graphColors ignoriert"
 
 #: grep.c:531
 msgid ""
@@ -4377,18 +4394,18 @@
 "Angegebenes Muster enthält NULL Byte (über -f <Datei>). Das wird nur mit -"
 "Punter PCRE v2 unterstützt."
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': konnte %s nicht lesen"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': read() zu kurz"
@@ -4629,7 +4646,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "'%s' für 'object:type=<Typ>' ist kein gültiger Objekttyp"
 
 #: list-objects-filter-options.c:124
@@ -4677,7 +4694,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "Eintrag '%s' im Tree-Objekt %s hat Blob-Modus, aber ist kein Blob"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "Konnte Root-Tree-Objekt für Commit %s nicht laden."
@@ -4725,32 +4742,32 @@
 msgid "bad action '%s' for '%s'"
 msgstr "ungültige Aktion '%s' für '%s'"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Fehler beim Merge von Submodul %s (nicht ausgecheckt)."
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Fehler beim Merge von Submodul %s (Commits nicht vorhanden)."
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "Fehler beim Merge von Submodul %s (Commits folgen keiner Merge-Basis)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Hinweis: Spule Submodul %s vor zu %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "Fehler beim Zusammenführen von Submodul %s"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4760,7 +4777,7 @@
 "Auflösung des Merges vorhanden:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4777,7 +4794,7 @@
 "\n"
 "hinzu, um diesen Vorschlag zu akzeptieren.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4787,21 +4804,21 @@
 "sind vorhanden:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Fehler bei Ausführung des internen Merges"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Konnte %s nicht zur Datenbank hinzufügen"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "automatischer Merge von %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4812,7 +4829,7 @@
 "Weg von impliziter Verzeichnisumbenennung, die versucht, einen oder mehrere\n"
 "Pfade dahin zu setzen: %s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4823,7 +4840,7 @@
 "%s mappen; implizite Verzeichnisumbenennungen versuchten diese Pfade dahin\n"
 "zu setzen: %s"
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4834,7 +4851,7 @@
 "ist; es wurde zu mehreren anderen Verzeichnissen umbenannt, ohne dass ein "
 "Ziel die Mehrheit der Dateien erhält."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4843,7 +4860,7 @@
 "WARNUNG: Vermeide Umbenennung %s -> %s von %s, weil %s selbst umbenannt "
 "wurde."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4852,7 +4869,7 @@
 "Pfad aktualisiert: %s hinzugefügt in %s innerhalb eines Verzeichnisses, das "
 "umbenannt wurde in %s; Verschiebe es nach %s."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4861,7 +4878,7 @@
 "Pfad aktualisiert: %s umbenannt nach %s in %s, innerhalb eines "
 "Verzeichnisses, das umbenannt wurde in %s; Verschiebe es nach %s."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4870,7 +4887,7 @@
 "KONFLIKT (Speicherort): %s hinzugefügt in %s innerhalb eines Verzeichnisses, "
 "das umbenannt wurde in %s, es sollte vielleicht nach %s verschoben werden."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4880,13 +4897,13 @@
 "Verzeichnisses, das umbenannt wurde in %s, es sollte vielleicht nach %s "
 "verschoben werden."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "KONFLIKT (umbenennen/umbenennen): %s zu %s in %s umbenannt und zu %s in %s."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4897,23 +4914,23 @@
 "Inhaltskonflikte UND kollidiert mit einem anderen Pfad; dies kann zu "
 "verschachtelten Konfliktmarkierungen führen."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "KONFLIKT (umbenennen/löschen): %s zu %s in %s umbenannt, aber in %s gelöscht."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "kann Objekt %s nicht lesen"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "Objekt %s ist kein Blob"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -4922,7 +4939,7 @@
 "KONFLIKT (Datei/Verzeichnis): Verzeichnis im Weg von %s aus %s; stattdessen "
 "nach %s verschieben."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -4932,7 +4949,7 @@
 "Seite; beide wurden umbenannt, damit jeder irgendwo aufgezeichnet werden "
 "kann."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -4942,24 +4959,24 @@
 "Seite; eines der beiden wurde umbenannt, damit jeder irgendwo aufgezeichnet "
 "werden kann."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "Inhalt"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "hinzufügen/hinzufügen"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "Submodul"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "KONFLIKT (%s): Merge-Konflikt in %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4968,7 +4985,7 @@
 "KONFLIKT (ändern/löschen): %s gelöscht in %s und geändert in %s. Stand %s "
 "von %s wurde im Arbeitsbereich gelassen."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4980,13 +4997,13 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr ""
 "Sammeln von Merge-Informationen für die Referenzen %s, %s, %s fehlgeschlagen"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4996,109 +5013,109 @@
 "überschrieben werden:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Bereits aktuell."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(ungültiger Commit)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr "add_cacheinfo für Pfad '%s' fehlgeschlagen; Merge wird abgebrochen."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 "add_cacheinfo zur Aktualisierung für Pfad '%s' fehlgeschlagen;\n"
 "Merge wird abgebrochen."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "Fehler beim Erstellen des Pfades '%s'%s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Entferne %s, um Platz für Unterverzeichnis zu schaffen\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "verweigere, da unversionierte Dateien in '%s' verloren gehen würden"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "kann Objekt %s '%s' nicht lesen"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "Blob erwartet für %s '%s'"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "Fehler beim Öffnen von '%s': %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "Fehler beim Erstellen einer symbolischen Verknüpfung für '%s': %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "weiß nicht was mit %06o %s '%s' zu machen ist"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Spule Submodul %s zu dem folgenden Commit vor:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Spule Submodul %s vor"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "Fehler beim Merge von Submodule %s (dem Merge nachfolgende Commits nicht "
 "gefunden)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Fehler beim Merge von Submodul %s (kein Vorspulen)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Mögliche Auflösung des Merges für Submodul gefunden:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "Fehler beim Merge von Submodul %s (mehrere Merges gefunden)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 "Fehler: Verweigere unversionierte Datei bei %s zu verlieren;\n"
 "schreibe stattdessen nach %s."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5107,7 +5124,7 @@
 "KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
 "im Arbeitsbereich gelassen."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5116,7 +5133,7 @@
 "KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
 "%s wurde im Arbeitsbereich gelassen."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5125,7 +5142,7 @@
 "KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
 "im Arbeitsbereich bei %s gelassen."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5134,46 +5151,46 @@
 "KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
 "%s wurde im Arbeitsbereich bei %s gelassen."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "umbenennen"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "umbenannt"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Verweigere geänderte Datei bei %s zu verlieren."
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 "Verweigere unversionierte Datei bei %s zu verlieren, auch wenn diese im Weg "
 "ist."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "KONFLIKT (umbenennen/hinzufügen): Benenne um %s->%s in %s. %s hinzugefügt in "
 "%s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s ist ein Verzeichnis in %s, füge es stattdessen als %s hinzu"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 "Verweigere unversionierte Datei bei %s zu verlieren; füge stattdessen %s "
 "hinzu"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5182,18 +5199,18 @@
 "KONFLIKT (umbenennen/umbenennen): Benenne um \"%s\"->\"%s\" in Branch \"%s\" "
 "und \"%s\"->\"%s\" in Branch \"%s\"%s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (bleibt unaufgelöst)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "KONFLIKT (umbenennen/umbenennen): Benenne um %s->%s in %s. Benenne um %s->%s "
 "in %s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5206,7 +5223,7 @@
 "wobei\n"
 "keines dieser Ziele die Mehrheit der Dateien erhielt."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5215,80 +5232,80 @@
 "KONFLIKT (umbenennen/umbenennen): Benenne Verzeichnis um %s->%s in %s.\n"
 "Benenne Verzeichnis um %s->%s in %s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "ändern"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "geändert"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Füge stattdessen als %s hinzu"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "Entferne %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "Datei/Verzeichnis"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "Verzeichnis/Datei"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "KONFLIKT (%s): Es existiert bereits ein Verzeichnis %s in %s. Füge %s als %s "
 "hinzu."
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "Füge %s hinzu"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "KONFLIKT (hinzufügen/hinzufügen): Merge-Konflikt in %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "Zusammenführen der \"Tree\"-Objekte %s und %s fehlgeschlagen"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Merge:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u gemeinsamen Vorgänger-Commit gefunden"
 msgstr[1] "%u gemeinsame Vorgänger-Commits gefunden"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "Merge hat keinen Commit zurückgegeben"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Konnte Index nicht schreiben."
@@ -5297,8 +5314,8 @@
 msgid "failed to read the cache"
 msgstr "Lesen des Zwischenspeichers fehlgeschlagen"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "Konnte neue Index-Datei nicht schreiben."
@@ -5374,52 +5391,61 @@
 msgid "failed to locate object %d in packfile"
 msgstr "Fehler beim Lokalisieren von Objekt %d in Packdatei"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "kann Reverse-Index-Datei nicht speichern"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+"ignoriere existierenden multi-pack-index; Prüfsumme stimmt nicht überein"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Packdateien zum multi-pack-index hinzufügen"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "Pack-Datei %s zum Weglassen nicht gefunden"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "unbekanntes bevorzugtes Paket: '%s'"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "bevorzugtes Paket '%s' ist abgelaufen"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "keine Packdateien zum Indizieren."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "Fehler beim Löschen von %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "Fehler beim Löschen des multi-pack-index bei %s"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-index-Datei existiert, aber das Parsen schlug fehl"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "Prüfsumme nicht korrekt"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Suche nach referenzierten Pack-Dateien"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
@@ -5427,55 +5453,55 @@
 "Ungültige oid fanout Reihenfolge: fanout[%d] = %<PRIx32> > %<PRIx32> = "
 "fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "das midx enthält keine oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Verifiziere OID-Reihenfolge im multi-pack-index"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "Ungültige oid lookup Reihenfolge: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Sortiere Objekte nach Pack-Datei"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Überprüfe Objekt-Offsets"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "Fehler beim Laden des Pack-Eintrags für oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "Fehler beim Laden des Pack-Index für Packdatei %s"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "Falscher Objekt-Offset für oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Referenzierte Objekte zählen"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Suchen und Löschen von unreferenzierten Pack-Dateien"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "Konnte 'pack-objects' nicht ausführen"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "Konnte 'pack-objects' nicht beenden"
 
@@ -5545,272 +5571,273 @@
 msgstr ""
 "Objektverzeichnis %s existiert nicht; prüfe .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "Konnte alternativen Objektpfad '%s' nicht normalisieren."
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s: ignoriere alternative Objektspeicher - Verschachtelung zu tief"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "Konnte Objektverzeichnis '%s' nicht normalisieren."
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "Konnte fdopen nicht auf Lock-Datei für \"alternates\" aufrufen."
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "Konnte \"alternates\"-Datei nicht lesen."
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "Konnte neue \"alternates\"-Datei nicht übernehmen."
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "Pfad '%s' existiert nicht"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "Referenziertes Repository '%s' wird noch nicht als verknüpftes\n"
 "Arbeitsverzeichnis unterstützt."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr ""
 "Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)."
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr ""
 "Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") "
 "eingehängt."
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "Ungültige Zeile beim Parsen alternativer Referenzen: %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "Versuche mmap %<PRIuMAX> über Limit %<PRIuMAX>."
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap fehlgeschlagen"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap fehlgeschlagen%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "Objektdatei %s ist leer."
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "Fehlerhaftes loses Objekt '%s'."
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "Nutzlose Daten am Ende von losem Objekt '%s'."
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "ungültiger Objekt-Typ"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "Konnte %s Kopfbereich nicht mit --allow-unknown-type entpacken."
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "Konnte %s Kopfbereich nicht entpacken."
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "Konnte %s Kopfbereich mit --allow-unknown-type nicht parsen."
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "Konnte %s Kopfbereich nicht parsen."
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "Konnte Objekt %s nicht lesen."
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "Ersetzung %s für %s nicht gefunden."
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "Loses Objekt %s (gespeichert in %s) ist beschädigt."
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "Gepacktes Objekt %s (gespeichert in %s) ist beschädigt."
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "Konnte Datei %s nicht schreiben."
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "Fehler beim Schreiben einer Datei."
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "Fehler beim Schließen der Datei für lose Objekte."
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 "Unzureichende Berechtigung zum Hinzufügen eines Objektes zur Repository-"
 "Datenbank %s"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "Konnte temporäre Datei nicht erstellen."
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "Fehler beim Schreiben der Datei für lose Objekte."
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "Konnte neues Objekt %s (%d) nicht komprimieren."
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "deflateEnd auf Objekt %s fehlgeschlagen (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "Fehler wegen instabilen Objektquelldaten für %s"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "Fehler beim Aufruf von utime() auf '%s'."
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "Kann Objekt für %s nicht lesen."
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "fehlerhafter Commit"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "fehlerhaftes Tag"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "Lesefehler beim Indizieren von '%s'."
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "read() zu kurz beim Indizieren von '%s'."
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s: Fehler beim Einfügen in die Datenbank"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s: nicht unterstützte Dateiart"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s ist kein gültiges Objekt"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s ist kein gültiges '%s' Objekt"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "kann %s nicht öffnen"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "Hash für %s stimmt nicht überein (%s erwartet)."
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "Konnte mmap nicht auf %s ausführen."
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "Konnte Kopfbereich von %s nicht entpacken."
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "Konnte Kopfbereich von %s nicht parsen."
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "Konnte Inhalt von %s nicht entpacken."
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "kurze Objekt-ID %s ist mehrdeutig"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Die Kandidaten sind:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5835,22 +5862,22 @@
 "indem Sie \"git config advice.objectNameWarning false\"\n"
 "ausführen."
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "Log für '%.*s' geht nur bis %s zurück"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "Log für '%.*s' hat nur %d Einträge"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "Pfad '%s' befindet sich im Dateisystem, aber nicht in '%.*s'"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5859,12 +5886,12 @@
 "Pfad '%s' existiert, aber nicht '%s'\n"
 "Hinweis: Meinten Sie '%.*s:%s' auch bekannt als '%.*s:./%s'?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "Pfad '%s' existiert nicht in '%.*s'"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5873,7 +5900,7 @@
 "Pfad '%s' ist im Index, aber nicht in Stufe %d\n"
 "Hinweis: Meinten Sie ':%d:%s'?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5882,23 +5909,23 @@
 "Pfad '%s' ist im Index, aber nicht '%s'\n"
 "Hinweis: Meinten Sie ':%d:%s' auch bekannt als ':%d:./%s'?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "Pfad '%s' existiert im Dateisystem, aber nicht im Index"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "Pfad '%s' existiert nicht (weder im Dateisystem noch im Index)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr ""
 "Die Syntax für relative Pfade kann nicht außerhalb des Arbeitsverzeichnisses "
 "benutzt werden."
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "ungültiger Objektname '%.*s'."
@@ -5913,27 +5940,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "Objekt %s ist ein %s, kein %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "Objekt %s hat eine unbekannte Typ-Identifikation %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "Hash stimmt nicht mit %s überein."
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "Konnte Größe von %s nicht bestimmen."
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "konnte Festplattennutzung von %s nicht bekommen"
@@ -5987,12 +6014,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "Offset vor Ende der Packdatei (fehlerhafte Indexdatei?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "Packdatei %s kann nicht gemappt werden%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "Offset vor Beginn des Pack-Index für %s (beschädigter Index?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "Offset hinter Ende des Pack-Index für %s (abgeschnittener Index?)"
@@ -6200,8 +6232,8 @@
 msgstr "konnte Delim-Paket nicht schreiben"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "konnte zustandsloses Separator-Paket nicht schreiben"
+msgid "unable to write response end packet"
+msgstr "konnte Antwort-Endpaket nicht schreiben"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6261,21 +6293,21 @@
 msgid "unable to parse --pretty format"
 msgstr "Konnte --pretty Format nicht parsen."
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "Promisor-Remote: konnte Fetch-Subprozess nicht abspalten"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "Promisor-Remote: konnte nicht zum Fetch-Subprozess schreiben"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 "Promisor-Remote: konnte Standard-Eingabe des Fetch-Subprozesses nicht "
 "schließen"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "Promisor-Remote-Name kann nicht mit '/' beginnen: %s"
@@ -6296,7 +6328,7 @@
 msgid "could not read `log` output"
 msgstr "Konnte Ausgabe von `log` nicht lesen."
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "Konnte Commit '%s' nicht parsen."
@@ -6315,66 +6347,66 @@
 msgid "could not parse git header '%.*s'"
 msgstr "Konnte Git-Header '%.*s' nicht parsen."
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "Fehler beim Generieren des Diffs."
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only und --right-only schließen sich gegenseitig aus"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "Konnte Log für '%s' nicht parsen."
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 "Dateialias '%s' wird nicht hinzugefügt ('%s' existiert bereits im Index)."
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "Kann keinen leeren Blob in die Objektdatenbank schreiben."
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 "%s: Kann nur reguläre Dateien, symbolische Links oder Git-Verzeichnisse "
 "hinzufügen."
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' hat keinen Commit ausgecheckt"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "Konnte Datei '%s' nicht indizieren."
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "Konnte '%s' nicht dem Index hinzufügen."
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "konnte '%s' nicht lesen"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' scheint eine Datei und ein Verzeichnis zu sein"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Aktualisiere Index"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6383,7 +6415,7 @@
 "index.version gesetzt, aber Wert ungültig.\n"
 "Verwende Version %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6392,143 +6424,143 @@
 "GIT_INDEX_VERSION gesetzt, aber Wert ungültig.\n"
 "Verwende Version %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "Ungültige Signatur 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "Ungültige Index-Version %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "Ungültige SHA1-Signatur der Index-Datei."
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "Index verwendet Erweiterung %.4s, welche wir nicht unterstützen."
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "Ignoriere Erweiterung %.4s"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "Unbekanntes Format für Index-Eintrag 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "Ungültiges Namensfeld im Index, in der Nähe von Pfad '%s'."
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "Ungeordnete Stage-Einträge im Index."
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "Mehrere Stage-Einträge für zusammengeführte Datei '%s'."
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "Ungeordnete Stage-Einträge für '%s'."
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "Index-Datei beschädigt"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "Kann Thread für load_cache_entries nicht erzeugen: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: Öffnen der Index-Datei fehlgeschlagen."
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: Kann geöffneten Index nicht lesen."
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: Index-Datei ist kleiner als erwartet."
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: Konnte Index-Datei nicht einlesen."
+msgid "%s: unable to map index file%s"
+msgstr "%s: Konnte Index-Datei nicht mappen%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "Kann Thread für load_index_extensions nicht erzeugen: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "Kann Thread für load_index_extensions nicht beitreten: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "Konnte geteilten Index '%s' nicht aktualisieren."
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "Fehlerhafter Index. Erwartete %s in %s, erhielt %s."
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "Konnte '%s' nicht schließen."
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "Konvertierung zu einem Sparse-Index fehlgeschlagen"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "Konnte '%s' nicht lesen."
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "konnte Git-Verzeichnis nicht öffnen: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "Konnte '%s' nicht entfernen."
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "Konnte Zugriffsberechtigung auf '%s' nicht setzen."
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: Kann nicht auf Stufe #0 wechseln."
@@ -6650,8 +6682,8 @@
 "Wenn Sie jedoch alles löschen, wird der Rebase abgebrochen.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "Konnte '%s' nicht schreiben."
@@ -6695,7 +6727,7 @@
 msgid "could not read '%s'."
 msgstr "Konnte '%s' nicht lesen."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "entfernt"
 
@@ -6714,248 +6746,248 @@
 msgid "ahead %d, behind %d"
 msgstr "%d voraus, %d hinterher"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "Erwartetes Format: %%(color:<Farbe>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "nicht erkannte Farbe: %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Positiver Wert erwartet refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Positiver Wert erwartet refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "nicht erkanntes %%(%s) Argument: %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) akzeptiert keine Argumente"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "nicht erkanntes %%(objectsize) Argument: %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) akzeptiert keine Argumente"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) akzeptiert keine Argumente"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "nicht erkanntes %%(subject) Argument: %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "%%(trailers:key=<Wert>) erwartet"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "unbekanntes %%(trailers) Argument: %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "Positiver Wert erwartet contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "nicht erkanntes %%(contents) Argument: %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "positiver Wert erwartet '%s' in %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "nicht erkanntes Argument '%s' in %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "nicht erkannte E-Mail Option: %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "erwartetes Format: %%(align:<Breite>,<Position>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "nicht erkannte Position:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "nicht erkannte Breite:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "nicht erkanntes %%(align) Argument: %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "Positive Breitenangabe für %%(align) erwartet"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "nicht erkanntes %%(if) Argument: %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "Fehlerhafter Feldname: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "Unbekannter Feldname: %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 "Kein Git-Repository, aber das Feld '%.*s' erfordert Zugriff auf Objektdaten."
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "format: %%(if) Atom ohne ein %%(then) Atom verwendet"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "format: %%(then) Atom ohne ein %%(if) Atom verwendet"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "format: %%(then) Atom mehr als einmal verwendet"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "format: %%(then) Atom nach %%(else) verwendet"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "format: %%(else) Atom ohne ein %%(if) Atom verwendet"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "Format: %%(else) Atom ohne ein %%(then) Atom verwendet"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "Format: %%(end) Atom mehr als einmal verwendet"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "Format: %%(end) Atom ohne zugehöriges Atom verwendet"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "Fehlerhafter Formatierungsstring %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(kein Branch, Rebase von %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(kein Branch, Rebase von losgelöstem HEAD %s)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(kein Branch, binäre Suche begonnen bei %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD losgelöst bei %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD losgelöst von %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(kein Branch)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "Objekt %s fehlt für %s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer bei %s für %s fehlgeschlagen"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "fehlerhaftes Objekt bei '%s'"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "Ignoriere Referenz mit fehlerhaftem Namen %s"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "Ignoriere fehlerhafte Referenz %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "Format: %%(end) Atom fehlt"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "missgebildeter Objektname %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "die Option `%s' muss auf einen Commit zeigen"
@@ -7427,8 +7459,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "Preimage für '%s' aufgezeichnet."
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht erstellen."
@@ -7466,38 +7498,38 @@
 msgid "could not determine HEAD revision"
 msgstr "Konnte HEAD-Commit nicht bestimmen."
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "Fehler beim Finden des \"Tree\"-Objektes von %s."
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<Pack-Datei> wird nicht länger unterstützt"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "Ihr aktueller Branch scheint fehlerhaft zu sein."
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "Ihr aktueller Branch '%s' hat noch keine Commits."
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L unterstützt noch keine anderen Diff-Formate außer -p und -s"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "Öffnen von /dev/null fehlgeschlagen"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "Konnte Thread für async nicht erzeugen: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7533,17 +7565,17 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "Push-Verhandlung fehlgeschlagen; fahre trotzdem mit dem Push fort"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr ""
 "die Gegenseite unterstützt nicht den Hash-Algorithmus dieses Repositories"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr ""
 "die Gegenseite unterstützt keinen signierten Versand (\"--signed push\")"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -7551,11 +7583,11 @@
 "kein Versand des \"push\"-Zertifikates, da die Gegenseite keinen signierten\n"
 "Versand (\"--signed push\") unterstützt"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "die Gegenseite unterstützt keinen atomaren Versand (\"--atomic push\")"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "die Gegenseite unterstützt keine Push-Optionen"
 
@@ -7615,7 +7647,7 @@
 msgstr "Konnte '%s' nicht sperren"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "Konnte nicht nach '%s' schreiben."
@@ -7626,7 +7658,7 @@
 msgstr "Konnte EOL nicht nach '%s' schreiben."
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "Fehler beim Fertigstellen von '%s'."
@@ -7677,8 +7709,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "Konnte Anführungszeichen von '%s' nicht entfernen."
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "Konnte '%s' nicht zum Lesen öffnen."
@@ -7830,7 +7862,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s ist kein Commit!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "Konnte Commit von HEAD nicht analysieren."
 
@@ -7838,7 +7870,7 @@
 msgid "unable to parse commit author"
 msgstr "Konnte Commit-Autor nicht parsen."
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "\"git write-tree\" schlug beim Schreiben eines \"Tree\"-Objektes fehl"
 
@@ -7856,12 +7888,13 @@
 msgid "corrupt author: missing date information"
 msgstr "unbrauchbarer Autor: Datumsinformationen fehlen"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "Fehler beim Schreiben des Commit-Objektes."
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "Konnte %s nicht aktualisieren."
@@ -7913,7 +7946,7 @@
 msgid "need a HEAD to fixup"
 msgstr "benötige HEAD für fixup"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "Konnte HEAD nicht lesen"
 
@@ -8055,7 +8088,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "fehlerhaftes Optionsblatt: '%s'"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "leere Menge von Commits übergeben"
 
@@ -8086,7 +8119,7 @@
 msgid "could not lock HEAD"
 msgstr "konnte HEAD nicht sperren"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "kein \"cherry-pick\" oder \"revert\" im Gange"
 
@@ -8098,7 +8131,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "kann nicht abbrechen: bin auf einem Branch, der noch nicht geboren ist"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "kann '%s' nicht öffnen"
@@ -8147,7 +8180,7 @@
 "Haben Sie bereits committet?\n"
 "Versuchen Sie \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "kann HEAD nicht lesen"
 
@@ -8233,91 +8266,91 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "unerlaubter Beschriftungsname: '%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "unechten Root-Commit schreiben"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "squash-onto schreiben"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "konnte '%s' nicht auflösen"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "kann nicht ohne einen aktuellen Commit mergen"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "konnte '%.*s' nicht parsen"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "nichts zum Zusammenführen: '%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 "Oktopus-Merge kann nicht auf Basis von [neuem Root-Commit] ausgeführt werden"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "konnte keine Commit-Beschreibung von '%s' bekommen"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "konnte nicht einmal versuchen '%.*s' zu mergen"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "merge: Konnte neue Index-Datei nicht schreiben."
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Kann automatischen Stash nicht erzeugen"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Unerwartete 'stash'-Antwort: '%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Konnte Verzeichnis für '%s' nicht erstellen"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Automatischen Stash erzeugt: %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "konnte 'reset --hard' nicht ausführen"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Automatischen Stash angewendet.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "kann %s nicht speichern"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8328,29 +8361,29 @@
 "Ihre Änderungen sind im Stash sicher.\n"
 "Sie können jederzeit \"git stash pop\" oder \"git stash drop\" ausführen.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "Beim Anwenden des automatischen Stash traten Konflikte auf."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Automatischer Stash existiert; ein neuer Stash-Eintrag wird erstellt."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "konnte HEAD nicht loslösen"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Angehalten bei HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Angehalten bei %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8372,60 +8405,60 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Rebase (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Angehalten bei %s... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "Unbekannter Befehl %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "Konnte orig-head nicht lesen."
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "Konnte 'onto' nicht lesen."
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "Konnte HEAD nicht auf %s aktualisieren."
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Erfolgreich Rebase ausgeführt und %s aktualisiert.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr ""
 "Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit\n"
 "vorgemerkt sind."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "Kann nicht existierenden Commit nicht nachbessern."
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "Ungültige Datei: '%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "Ungültige Inhalte: '%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8436,50 +8469,50 @@
 "committen Sie diese zuerst und führen Sie dann 'git rebase --continue'\n"
 "erneut aus."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "Konnte Datei nicht schreiben: '%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "Konnte CHERRY_PICK_HEAD nicht löschen."
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "Konnte Änderungen aus der Staging-Area nicht committen."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: %s kann nicht in \"cherry-pick\" benutzt werden"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: ungültiger Commit"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "Kann nicht als allerersten Commit einen Revert ausführen."
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: unbehandelte Optionen"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script: Fehler beim Vorbereiten der Commits"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "Nichts zu tun."
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "Konnte unnötige \"pick\"-Befehle nicht auslassen."
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "Das Script wurde bereits umgeordnet."
 
@@ -8532,92 +8565,96 @@
 msgstr ""
 "Konnte Arbeitsverzeichnis mit ungültiger Konfiguration nicht einrichten."
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "Diese Operation muss in einem Arbeitsverzeichnis ausgeführt werden."
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Erwartete Git-Repository-Version <= %d, %d gefunden"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "Unbekannte Repository-Erweiterungen gefunden:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "Unbekannte Repository-Erweiterung gefunden:"
+msgstr[1] "Unbekannte Repository-Erweiterungen gefunden:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "Repository-Version ist 0, aber Erweiterungen nur für v1 gefunden:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "Repository-Version ist 0, aber Erweiterung nur für v1 gefunden:"
+msgstr[1] "Repository-Version ist 0, aber Erweiterungen nur für v1 gefunden:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "Fehler beim Öffnen von '%s'."
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "Zu groß, um eine .git-Datei zu sein: '%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "Fehler beim Lesen von '%s'."
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "Ungültiges gitfile-Format: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "Kein Pfad in gitfile: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "Kein Git-Repository: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' zu groß"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "Kein Git-Repository: '%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "Kann nicht in Verzeichnis '%s' wechseln."
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "Kann nicht zum aktuellen Arbeitsverzeichnis zurückwechseln."
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "Konnte '%*s%s%s' nicht lesen."
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Konnte aktuelles Arbeitsverzeichnis nicht lesen."
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "Kann nicht nach '%s' wechseln."
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "Kein Git-Repository (oder irgendeines der Elternverzeichnisse): %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8627,7 +8664,7 @@
 "%s)\n"
 "Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8636,27 +8673,27 @@
 "Problem mit Wert für Dateimodus (0%.3o) von core.sharedRepository.\n"
 "Der Besitzer der Dateien muss immer Lese- und Schreibrechte haben."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "Öffnen von /dev/null oder dup fehlgeschlagen."
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "fork fehlgeschlagen"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "setsid fehlgeschlagen"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "versuche partiellen Index ohne Cone-Modus zu benutzen"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "konnte Cache-Verzeichnis nicht aktualisieren, bleibt voll"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "Index-Eintrag ist ein Verzeichnis, aber nicht partiell (%08x)"
@@ -8713,7 +8750,7 @@
 msgstr[0] "%u Byte/s"
 msgstr[1] "%u Bytes/s"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8785,7 +8822,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "ungültiges --ignore-submodules Argument: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8794,12 +8831,12 @@
 "Submodul in Commit %s beim Pfad: '%s' hat den gleichen Namen wie ein "
 "Submodul. Wird übersprungen."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "Submodul-Eintrag '%s' (%s) ist ein %s, kein Commit."
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8808,36 +8845,36 @@
 "Konnte 'git rev-list <Commits> --not --remotes -n 1' nicht in Submodul '%s' "
 "ausführen."
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "Prozess für Submodul '%s' fehlgeschlagen"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Konnte HEAD nicht als gültige Referenz auflösen."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Pushe Submodul '%s'\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Kann Push für Submodul '%s' nicht ausführen\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Anfordern des Submoduls %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Konnte nicht auf Submodul '%s' zugreifen\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8846,62 +8883,62 @@
 "Fehler während des Anforderns der Submodule:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' nicht als Git-Repository erkannt"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Konnte 'git status --porcelain=2' nicht in Submodul %s ausführen"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --porcelain=2' ist in Submodul %s fehlgeschlagen"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "Konnte 'git status' in Submodul '%s' nicht starten."
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "Konnte 'git status' in Submodul '%s' nicht ausführen."
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Konnte core.worktree Einstellung in Submodul '%s' nicht aufheben."
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "Fehler bei Rekursion in Submodul-Pfad '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "konnte Index des Submoduls nicht zurücksetzen"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "Submodul '%s' hat einen geänderten Index."
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Submodule '%s' konnte nicht aktualisiert werden."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 "Git-Verzeichnis des Submoduls '%s' ist im Git-Verzeichnis '%.*s' enthalten."
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8909,17 +8946,17 @@
 "relocate_gitdir für Submodul '%s' mit mehr als einem Arbeitsverzeichnis\n"
 "wird nicht unterstützt"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "Konnte Name für Submodul '%s' nicht nachschlagen."
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "Verschieben von '%s' in ein existierendes Git-Verzeichnis verweigert."
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8930,11 +8967,11 @@
 "'%s' nach\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "Konnte 'ls-files' nicht in .. starten"
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree mit unerwartetem Rückgabewert %d beendet"
@@ -8971,7 +9008,7 @@
 msgid "could not read input file '%s'"
 msgstr "Konnte Eingabe-Datei '%s' nicht lesen"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "konnte nicht von der Standard-Eingabe lesen"
 
@@ -9064,7 +9101,7 @@
 msgid "invalid remote service path"
 msgstr "ungültiger Remote-Service Pfad."
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "die Operation wird von dem Protokoll nicht unterstützt"
 
@@ -9073,7 +9110,7 @@
 msgid "can't connect to subservice %s"
 msgstr "kann keine Verbindung zu Subservice %s herstellen"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only benötigt Protokoll v2"
 
@@ -9206,46 +9243,46 @@
 msgid "could not read bundle '%s'"
 msgstr "Konnte Paket '%s' nicht lesen."
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
-msgstr "transport: ungültige --depth Option '%s'"
+msgstr "transport: ungültige depth Option '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "Siehe protocol.version in 'git help config' für weitere Informationen"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "Server-Optionen benötigen Protokoll-Version 2 oder höher"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "Server unterstützt nicht 'wait-for-done'"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "Konnte transport.color.* Konfiguration nicht parsen."
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "Unterstützung für Protokoll v2 noch nicht implementiert."
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "Unbekannter Wert für Konfiguration '%s': %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "Übertragungsart '%s' nicht erlaubt."
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync wird nicht länger unterstützt."
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9254,7 +9291,7 @@
 "Die folgenden Submodul-Pfade enthalten Änderungen, die in keinem\n"
 "Remote-Repository gefunden wurden:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9281,11 +9318,11 @@
 "zum Versenden zu einem Remote-Repository.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Abbruch."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "Fehler beim Versand aller erforderlichen Submodule."
 
@@ -9575,11 +9612,11 @@
 "auf einem case-insensitiven Dateisystem) und nur einer von der\n"
 "selben Kollissionsgruppe ist im Arbeitsverzeichnis:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "Aktualisiere Index-Markierungen"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -9622,100 +9659,100 @@
 msgid "Fetching objects"
 msgstr "Anfordern der Objekte"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "Fehler beim Lesen von '%s'"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "'%s' im Hauptarbeitsverzeichnis ist nicht das Repository-Verzeichnis."
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "'%s' Datei enthält nicht den absoluten Pfad zum Arbeitsverzeichnis."
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' existiert nicht."
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' ist keine .git-Datei, Fehlercode %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' zeigt nicht zurück auf '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "kein Verzeichnis"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git ist keine Datei"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ".git-Datei kaputt"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ".git-Datei fehlerhaft"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "kein gültiger Pfad"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "Konnte Repository nicht finden; .git ist keine Datei"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr ""
 "konnte Repository nicht finden; .git-Datei referenziert kein Repository"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "Konnte Repository nicht finden; .git-Datei ist kaputt"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir nicht lesbar"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir fehlerhaft"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "kein gültiges Verzeichnis"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "gitdir-Datei existiert nicht"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "konnte gitdir-Datei nicht lesen (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "read() zu kurz (%<PRIuMAX> Bytes erwartet, %<PRIuMAX> gelesen)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "ungültige gitdir-Datei"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "gitdir-Datei verweist auf nicht existierenden Ort"
 
@@ -9772,11 +9809,11 @@
 msgstr ""
 "  (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Zum Commit vorgemerkte Änderungen:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Änderungen, die nicht zum Commit vorgemerkt sind:"
 
@@ -9884,22 +9921,22 @@
 msgid "untracked content, "
 msgstr "unversionierter Inhalt, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Ihr Stash hat gerade %d Eintrag"
 msgstr[1] "Ihr Stash hat gerade %d Einträge"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Submodule geändert, aber nicht aktualisiert:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Änderungen in Submodul zum Committen:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9907,7 +9944,7 @@
 "Ändern oder entfernen Sie nicht die obige Zeile.\n"
 "Alles unterhalb von ihr wird ignoriert."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9919,114 +9956,114 @@
 "berechnen.\n"
 "Sie können '--no-ahead-behind' benutzen, um das zu verhindern.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Sie haben nicht zusammengeführte Pfade."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (beheben Sie die Konflikte und führen Sie \"git commit\" aus)"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (benutzen Sie \"git merge --abort\", um den Merge abzubrechen)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Alle Konflikte sind behoben, aber Sie sind immer noch beim Merge."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (benutzen Sie \"git commit\", um den Merge abzuschließen)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Eine \"am\"-Sitzung ist im Gange."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Der aktuelle Patch ist leer."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git am --continue\" aus)"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git am --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 "  (benutzen Sie \"git am --abort\", um den ursprünglichen Branch "
 "wiederherzustellen)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo fehlt."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Keine Befehle ausgeführt."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Zuletzt ausgeführter Befehl (%d Befehl ausgeführt):"
 msgstr[1] "Zuletzt ausgeführte Befehle (%d Befehle ausgeführt):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (mehr Informationen in Datei %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Keine Befehle verbleibend."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Nächster auszuführender Befehl (%d Befehle verbleibend):"
 msgstr[1] "Nächste auszuführende Befehle (%d Befehle verbleibend):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (benutzen Sie \"git rebase --edit-todo\" zum Ansehen und Bearbeiten)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Sie sind gerade beim Rebase von Branch '%s' auf '%s'."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Sie sind gerade beim Rebase."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git rebase --continue\" "
 "aus)"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git rebase --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (benutzen Sie \"git rebase --abort\", um den ursprünglichen Branch "
 "auszuchecken)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -10034,170 +10071,174 @@
 "Sie teilen gerade einen Commit auf, während ein Rebase von Branch '%s' auf "
 "'%s' im Gange ist."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Sie teilen gerade einen Commit während eines Rebase auf."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Sobald Ihr Arbeitsverzeichnis unverändert ist, führen Sie \"git rebase --"
 "continue\" aus)"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Sie editieren gerade einen Commit während eines Rebase von Branch '%s' auf "
 "'%s'."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Sie editieren gerade einen Commit während eines Rebase."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (benutzen Sie \"git commit --amend\", um den aktuellen Commit "
 "nachzubessern)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (benutzen Sie \"git rebase --continue\" sobald Ihre Änderungen "
 "abgeschlossen sind)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick zurzeit im Gange."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Sie führen gerade \"cherry-pick\" von Commit %s aus."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git cherry-pick --continue"
 "\" aus)"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (Führen Sie \"git cherry-pick --continue\" aus, um weiterzumachen)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (alle Konflikte behoben: führen Sie \"git cherry-pick --continue\" aus)"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr ""
 "  (benutzen Sie \"git cherry-pick --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (benutzen Sie \"git cherry-pick --abort\", um die Cherry-Pick-Operation "
 "abzubrechen)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Revert zurzeit im Gange."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Sie sind gerade beim Revert von Commit '%s'."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr ""
 "  (beheben Sie die Konflikte und führen Sie dann \"git revert --continue\" "
 "aus)"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (Führen Sie \"git revert --continue\", um weiterzumachen)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alle Konflikte behoben: führen Sie \"git revert --continue\" aus)"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (benutzen Sie \"git revert --skip\", um diesen Patch auszulassen)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (benutzen Sie \"git revert --abort\", um die Revert-Operation abzubrechen)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Sie sind gerade bei einer binären Suche, gestartet von Branch '%s'."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Sie sind gerade bei einer binären Suche."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (benutzen Sie \"git bisect reset\", um zum ursprünglichen Branch "
 "zurückzukehren)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Sie befinden sich in einem partiellen Checkout."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Sie sind in einem partiellen Checkout mit %d%% vorhandenen versionierten "
 "Dateien."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "Auf Branch "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "interaktives Rebase im Gange; auf "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "Rebase im Gange; auf "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD losgelöst bei "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD losgelöst von "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Im Moment auf keinem Branch."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Initialer Commit"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Noch keine Commits"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Unversionierte Dateien"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Ignorierte Dateien"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10208,32 +10249,32 @@
 "'status -uno' könnte das beschleunigen, aber Sie müssen darauf achten,\n"
 "neue Dateien selbstständig hinzuzufügen (siehe 'git help status')."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Unversionierte Dateien nicht aufgelistet%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (benutzen Sie die Option -u, um unversionierte Dateien anzuzeigen)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Keine Änderungen"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "keine Änderungen zum Commit vorgemerkt (benutzen Sie \"git add\" und/oder "
 "\"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "keine Änderungen zum Commit vorgemerkt\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10242,86 +10283,86 @@
 "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n"
 "(benutzen Sie \"git add\" zum Versionieren)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "nichts zu committen (erstellen/kopieren Sie Dateien und benutzen\n"
 "Sie \"git add\" zum Versionieren)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nichts zu committen\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "nichts zu committen (benutzen Sie die Option -u, um unversionierte Dateien "
 "anzuzeigen)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nichts zu committen, Arbeitsverzeichnis unverändert\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Noch keine Commits in "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (kein Branch)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "unterschiedlich"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "hinterher "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "voraus "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 "%s nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt sind."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Zusätzlich enthält die Staging-Area nicht committete Änderungen."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
 "%s nicht möglich: Die Staging-Area enthält nicht committete Änderungen."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "konnte IPC-Befehl nicht senden"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "konnte IPC-Antwort nicht lesen"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "konnte accept_thread nicht für '%s' starten"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "konnte worker[0] nicht für '%s' starten"
@@ -10359,7 +10400,7 @@
 msgstr ""
 "Nicht zum Commit vorgemerkte Änderungen nach Aktualisierung der Staging-Area:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Konnte den Index nicht lesen"
 
@@ -10396,8 +10437,8 @@
 "Die folgenden Pfade werden durch eine Ihrer \".gitignore\" Dateien "
 "ignoriert:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "Probelauf"
@@ -10406,7 +10447,7 @@
 msgid "interactive picking"
 msgstr "interaktives Auswählen"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "Blöcke interaktiv auswählen"
 
@@ -10546,13 +10587,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod Parameter '%s' muss entweder -x oder +x sein"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file ist inkompatibel mit Pfadspezifikation-Argumenten"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul benötigt --pathspec-from-file"
 
@@ -10571,116 +10612,116 @@
 "Um diese Meldung abzuschalten, führen Sie folgenden Befehl aus:\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "konnte Autor-Skript nicht parsen"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' wurde durch den applypatch-msg Hook entfernt"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Fehlerhafte Eingabezeile: '%s'."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Fehler beim Kopieren der Notizen von '%s' nach '%s'"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "\"fseek\" fehlgeschlagen"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "konnte Patch '%s' nicht parsen"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Es kann nur eine StGIT Patch-Serie auf einmal angewendet werden."
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "ungültiger Zeitstempel"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "Ungültige \"Date\"-Zeile"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "Ungültiger Offset in der Zeitzone"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Patch-Formaterkennung fehlgeschlagen."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "Fehler beim Erstellen von Verzeichnis '%s'"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Fehler beim Aufteilen der Patches."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr ""
 "Wenn Sie das Problem aufgelöst haben, führen Sie \"%s --continue\" aus."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr ""
 "Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen \"%s --skip"
 "\" aus."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 "Um den ursprünglichen Branch wiederherzustellen und die Anwendung der "
 "Patches abzubrechen, führen Sie \"%s --abort\" aus."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 "Patch mit format=flowed versendet; Leerzeichen am Ende von Zeilen könnte "
 "verloren gehen."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Patch ist leer."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "Autor-Zeile fehlt in Commit %s"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "Ungültige Identifikationszeile: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "Dem Repository fehlen notwendige Blobs um auf einen 3-Wege-Merge "
 "zurückzufallen."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr ""
 "Verwende Informationen aus der Staging-Area, um ein Basisverzeichnis "
 "nachzustellen ..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10688,24 +10729,24 @@
 "Haben Sie den Patch per Hand editiert?\n"
 "Er kann nicht auf die Blobs in seiner 'index' Zeile angewendet werden."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Falle zurück zum Patchen der Basis und zum 3-Wege-Merge ..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Merge der Änderungen fehlgeschlagen."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "auf leere Historie anwenden"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "Kann nicht fortsetzen: %s existiert nicht"
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Commit-Beschreibung ist:"
 
@@ -10713,41 +10754,41 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Anwenden? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "Konnte Index-Datei nicht schreiben."
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Geänderter Index: kann Patches nicht anwenden (geändert: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Wende an: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Keine Änderungen -- Patches bereits angewendet."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Anwendung des Patches fehlgeschlagen bei %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 "Benutzen Sie 'git am --show-current-patch=diff', um den\n"
 "fehlgeschlagenen Patch zu sehen"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10758,7 +10799,7 @@
 "diese bereits anderweitig eingefügt worden sein; Sie könnten diesen Patch\n"
 "auslassen."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10771,17 +10812,17 @@
 "Sie können 'git rm' auf Dateien ausführen, um \"von denen gelöscht\" für\n"
 "diese zu akzeptieren."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "Fehler beim Bereinigen des Index"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10789,90 +10830,90 @@
 "Sie scheinen seit dem letzten gescheiterten 'am' HEAD geändert zu haben.\n"
 "Keine Zurücksetzung zu ORIG_HEAD."
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Ungültiger Wert für --patch-format: %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Ungültiger Wert für --show-current-patch: %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s ist inkombatibel mit --show-current-patch=%s"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<Optionen>] [(<mbox> | <E-Mail-Verzeichnis>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<Optionen>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "interaktiv ausführen"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "historische Option -- kein Effekt"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "erlaube, falls notwendig, das Zurückfallen auf einen 3-Wege-Merge"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "weniger Ausgaben"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "eine Signed-off-by Zeile der Commit-Beschreibung hinzufügen"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "nach UTF-8 umkodieren (Standard)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "-k an git-mailinfo übergeben"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "-b an git-mailinfo übergeben"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "-m an git-mailinfo übergeben"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "--keep-cr an git-mailsplit für mbox-Format übergeben"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr "kein --keep-cr an git-mailsplit übergeben, unabhängig von am.keepcr"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "alles vor einer Scheren-Zeile entfernen"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "an git-mailinfo weitergeben"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "an git-apply übergeben"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10881,68 +10922,68 @@
 msgid "n"
 msgstr "Anzahl"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "Format"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "Patch-Format"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "Meldung bei fehlerhafter Patch-Anwendung überschreiben"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "Anwendung der Patches nach Auflösung eines Konfliktes fortsetzen"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "Synonyme für --continue"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "den aktuellen Patch auslassen"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr ""
 "ursprünglichen Branch wiederherstellen und Anwendung der Patches abbrechen"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "Patch-Operation abbrechen, aber HEAD an aktueller Stelle belassen"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "den Patch, der gerade angewendet wird, anzeigen"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "Autor-Datum als Commit-Datum verwenden"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "aktuellen Zeitstempel als Autor-Datum verwenden"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "GPG-Schlüsselkennung"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "Commits mit GPG signieren"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(intern für git-rebase verwendet)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10950,16 +10991,16 @@
 "Die -b/--binary Option hat seit Langem keinen Effekt und wird\n"
 "entfernt. Bitte verwenden Sie diese nicht mehr."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "Fehler beim Lesen des Index"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "Vorheriges Rebase-Verzeichnis %s existiert noch, aber mbox gegeben."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10968,11 +11009,11 @@
 "Stray %s Verzeichnis gefunden.\n"
 "Benutzen Sie \"git am --abort\", um es zu entfernen."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Es ist keine Auflösung im Gange, es wird nicht fortgesetzt."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "Interaktiver Modus benötigt Patches über die Kommandozeile"
 
@@ -11068,36 +11109,36 @@
 msgid "could not write to file '%s'"
 msgstr "konnte nicht in Datei '%s' schreiben"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' ist kein gültiger Begriff"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "kann den eingebauten Befehl '%s' nicht als Begriff verwenden"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "kann die Bedeutung von dem Begriff '%s' nicht ändern"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "bitte verwenden Sie zwei verschiedene Begriffe"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Keine binäre Suche im Gange.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' ist kein gültiger Commit"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -11105,27 +11146,27 @@
 "Konnte den ursprünglichen HEAD '%s' nicht auschecken.\n"
 "Versuchen Sie 'git bisect reset <Commit>'."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Ungültiges \"bisect_write\" Argument: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "konnte die OID der Revision '%s' nicht erhalten"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "konnte die Datei '%s' nicht öffnen"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Ungültiger Befehl: Sie sind gerade innerhalb einer binären %s/%s Suche"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -11134,7 +11175,7 @@
 "Sie müssen mindestens einen \"%s\" und einen \"%s\" Commit angeben.\n"
 "Sie können dafür \"git bisect %s\" und \"git bisect %s\" benutzen."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -11145,7 +11186,7 @@
 "Danach müssen Sie mindestens einen \"%s\" und einen \"%s\" Commit angeben.\n"
 "Sie können dafür \"git bisect %s\" und \"git bisect %s\" benutzen."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "binäre Suche nur mit einem %s Commit"
@@ -11154,15 +11195,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Sind Sie sicher [Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "keine Begriffe definiert"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -11171,7 +11212,7 @@
 "Ihre aktuellen Begriffe sind %s für den alten Zustand\n"
 "und %s für den neuen Zustand.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -11180,55 +11221,55 @@
 "Ungültiges Argument %s für 'git bisect terms'.\n"
 "Unterstützte Optionen sind: --term-good|--term-old und --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "konnte '%s' nicht zum Anhängen öffnen"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' ist kein gültiger Begriff"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "nicht erkannte Option: '%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' scheint kein gültiger Commit zu sein"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "ungültiger HEAD - HEAD wird benötigt"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Auschecken von '%s' fehlgeschlagen. Versuchen Sie 'git bisect start "
 "<gültiger-Branch>'."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 "binäre Suche auf einem durch 'cg-seek' geändertem Verzeichnis nicht möglich"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "ungültiger HEAD - merkwürdige symbolische Referenz"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ungültige Referenz: '%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Sie müssen mit \"git bisect start\" beginnen\n"
 
@@ -11236,104 +11277,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Wollen Sie, dass ich es für Sie mache [Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Bitte führen Sie `--bisect-state` mit mindestens einem Argument aus"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' kann nur ein Argument entgegennehmen."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Ungültige Referenz-Eingabe: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Ungültige Referenz-Eingabe (kein Commit): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "Keine binäre Suche im Gange."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "'%s'?? Was reden Sie da?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "kann Datei '%s' nicht für die Wiederholung lesen"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "den Zustand der binären Suche zurücksetzen"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "prüfen, ob Begriffe für gute und schlechte Commits existieren"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "die Begriffe für die binäre Suche ausgeben"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "Sitzung für binäre Suche starten"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "nächsten Commit für die binäre Suche finden"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "den Status der Referenz(en) markieren"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "die bisherigen Schritte der binären Suche auflisten"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "binäre Suche aus der angegebenen Datei wiederholen"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "einige Commits für das Auschecken überspringen"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "kein Log für BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset benötigt entweder kein Argument oder ein Commit"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check benötigt 2 oder 3 Argumente"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms benötigt 0 oder 1 Argument"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next benötigt 0 Argumente"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log benötigt 0 Argumente"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "keine Log-Datei angegeben"
 
@@ -11384,10 +11425,10 @@
 msgid "show work cost statistics"
 msgstr "Statistiken zum Arbeitsaufwand anzeigen"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "Fortschrittsanzeige erzwingen"
 
@@ -11438,7 +11479,7 @@
 msgid "ignore whitespace differences"
 msgstr "Whitespace-Unterschiede ignorieren"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "Commit"
 
@@ -12045,19 +12086,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <Datei> [<Referenzname>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "keine Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "Forschrittsanzeige während des Schreibens von Objekten anzeigen"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ähnlich zu --all-progress wenn Fortschrittsanzeige darstellt wird"
 
@@ -12069,29 +12110,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "Um ein Paket zu erstellen wird ein Repository benötigt."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "Keine Bundle-Details anzeigen"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s ist in Ordnung\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Zum Entpacken wird ein Repository benötigt."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "erweiterte Ausgaben; muss vor einem Unterbefehl angegeben werden"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Unbekannter Unterbefehl: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -12099,7 +12140,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <Art> | --textconv | --filters) [--path=<Pfad>] <Objekt>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -12107,76 +12148,76 @@
 "git cat-file (--batch[=<Format>] | --batch-check[=<Format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "Nur eine Batch-Option erlaubt."
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<Art> kann sein: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "Objektart anzeigen"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "Objektgröße anzeigen"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "mit Rückgabewert 0 beenden, wenn kein Fehler aufgetreten ist"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "ansprechende Anzeige des Objektinhaltes"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "eine Textkonvertierung auf den Inhalt von Blob-Objekten ausführen"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "für Blob-Objekte, Filter auf Objekt-Inhalte ausführen"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "Blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "einen bestimmten Pfad für --textconv/--filters verwenden"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "-s und -t mit beschädigten Objekten erlauben"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "Ausgabe von --batch puffern"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "Anzeige von Informationen und Inhalt von Objekten, gelesen von der Standard-"
 "Eingabe"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr ""
 "Anzeige von Informationen über Objekte, gelesen von der Standard-Eingabe"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "symbolischen Verknüpfungen innerhalb des Repositories folgen (verwendet mit "
 "--batch oder --batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "alle Objekte mit --batch oder --batch-check anzeigen"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "Ausgabe von --batch-all-objects nicht ordnen"
 
@@ -12204,8 +12245,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "Einträge von Ein- und Ausgabe mit NUL-Zeichen abschließen"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "Fortschrittsanzeige unterdrücken"
 
@@ -12263,9 +12304,11 @@
 msgstr "git checkout--worker [<Optionen>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "Zeichenkette"
 
@@ -12280,7 +12323,7 @@
 
 #: builtin/checkout-index.c:169
 msgid "stage should be between 1 and 3 or all"
-msgstr "--stage sollte zwischen 1 und 3 oder 'all' sein"
+msgstr "stage sollte zwischen 1 und 3 oder 'all' sein"
 
 #: builtin/checkout-index.c:187
 msgid "check out all files in the index"
@@ -12362,69 +12405,69 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Konnte Merge-Ergebnis von '%s' nicht hinzufügen."
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "%d Merge-Konflikt wieder erstellt"
 msgstr[1] "%d Merge-Konflikte wieder erstellt"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "%d Pfad von %s aktualisiert"
 msgstr[1] "%d Pfade von %s aktualisiert"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "%d Pfad vom Index aktualisiert"
 msgstr[1] "%d Pfade vom Index aktualisiert"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' kann nicht mit der Aktualisierung von Pfaden verwendet werden"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' kann nicht mit '%s' verwendet werden"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr ""
 "Kann nicht gleichzeitig Pfade aktualisieren und zu Branch '%s' wechseln"
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "Weder '%s' noch '%s' ist angegeben"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s' kann nur genutzt werden, wenn '%s' nicht verwendet wird"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' oder '%s' kann nicht mit %s verwendet werden"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "Pfad '%s' ist nicht zusammengeführt."
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "Sie müssen zuerst die Konflikte in Ihrem aktuellen Index auflösen."
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12433,50 +12476,50 @@
 "Kann nicht mit vorgemerkten Änderungen in folgenden Dateien fortsetzen:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kann \"reflog\" für '%s' nicht durchführen: %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD ist jetzt bei"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "Konnte HEAD nicht aktualisieren."
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Setze Branch '%s' neu\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Bereits auf '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Zu umgesetztem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Zu neuem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Zu Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... und %d weitere.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12499,7 +12542,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12526,19 +12569,19 @@
 " git branch <neuer-Branchname> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "interner Fehler im Revisionsgang"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "Vorherige Position von HEAD war"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Sie sind auf einem Branch, der noch nicht geboren ist"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12548,7 +12591,7 @@
 "Bitte benutzen Sie -- (und optional --no-guess), um diese\n"
 "eindeutig voneinander zu unterscheiden."
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12571,51 +12614,51 @@
 "bevorzugen möchten, z.B. 'origin', können Sie die Einstellung\n"
 "checkout.defaultRemote=origin in Ihrer Konfiguration setzen."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' entspricht mehreren (%d) Remote-Tracking-Branches"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "nur eine Referenz erwartet"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "nur eine Referenz erwartet, %d gegeben."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "Ungültige Referenz: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "Referenz ist kein \"Tree\"-Objekt: %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "Ein Branch wird erwartet, Tag '%s' bekommen"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "Ein Branch wird erwartet, Remote-Branch '%s' bekommen"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "Ein Branch wird erwartet, '%s' bekommen"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "Ein Branch wird erwartet, Commit '%s' bekommen"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12623,7 +12666,7 @@
 "Der Branch kann nicht während eines Merges gewechselt werden.\n"
 "Ziehen Sie \"git merge --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12632,7 +12675,7 @@
 "werden.\n"
 "Ziehen Sie \"git am --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12641,7 +12684,7 @@
 "werden.\n"
 "Ziehen Sie \"git rebase --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12650,7 +12693,7 @@
 "gewechselt werden.\n"
 "Ziehen Sie \"git cherry-pick --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12659,140 +12702,140 @@
 "werden.\n"
 "Ziehen Sie \"git revert --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "Sie wechseln den Branch während einer binären Suche"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "Pfade können nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' kann nicht mit '%s' verwendet werden"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' kann nicht <Startpunkt> bekommen"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kann Branch nicht zu Nicht-Commit '%s' wechseln"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "Branch- oder Commit-Argument fehlt"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "einen 3-Wege-Merge mit dem neuen Branch ausführen"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "Stil"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "Konfliktstil (merge oder diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "HEAD bei benanntem Commit loslösen"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "Informationen zum Upstream-Branch für den neuen Branch setzen"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "Auschecken erzwingen (verwirft lokale Änderungen)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "neuer Branch"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "neuer Branch ohne Eltern-Commit"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "ignorierte Dateien aktualisieren (Standard)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "Prüfung, ob die Referenz bereits in einem anderen Arbeitsverzeichnis "
 "ausgecheckt wurde, deaktivieren"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "unsere Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "ihre Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "keine Einschränkung bei Pfadspezifikationen zum partiellen Auschecken"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c und --orphan schließen sich gegenseitig aus"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p und --overlay schließen sich gegenseitig aus"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track benötigt ein Branchname"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "kein Branchname; versuchen Sie -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "konnte %s nicht auflösen"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "ungültige Pfadspezifikation"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 "'%s' ist kein Commit und es kann kein Branch '%s' aus diesem erstellt werden."
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach nimmt kein Pfad-Argument '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file und --detach sind inkompatibel"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file und --patch sind inkompatibel"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12800,70 +12843,71 @@
 "git checkout: --ours/--theirs, --force und --merge sind inkompatibel wenn\n"
 "Sie aus dem Index auschecken."
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "Sie müssen Pfad(e) zur Wiederherstellung angeben."
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "Branch"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "einen neuen Branch erzeugen und auschecken"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "einen Branch erstellen/umsetzen und auschecken"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "das Reflog für den neuen Branch erzeugen"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "Zweite Vermutung 'git checkout <kein-solcher-Branch>' (Standard)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "benutze Overlay-Modus (Standard)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "einen neuen Branch erzeugen und dahin wechseln"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "einen Branch erstellen/umsetzen und dahin wechseln"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "Zweite Vermutung 'git switch <kein-solcher-Branch>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "lokale Änderungen verwerfen"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "Von welcher Commit-Referenz ausgecheckt werden soll"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "Index wiederherstellen"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "das Arbeitsverzeichnis wiederherstellen (Standard)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "ignoriere nicht zusammengeführte Einträge"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "benutze Overlay-Modus"
 
@@ -12898,7 +12942,7 @@
 msgid "could not lstat %s\n"
 msgstr "Konnte 'lstat' nicht für %s ausführen\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12911,7 +12955,7 @@
 "foo        - Element anhand eines eindeutigen Präfix auswählen\n"
 "           - (leer) nichts auswählen\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12932,33 +12976,33 @@
 "*          - alle Elemente auswählen\n"
 "           - (leer) Auswahl beenden\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Wie bitte (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Ignorier-Muster eingeben>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "WARNUNG: Kann keine Einträge finden die Muster entsprechen: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Wählen Sie Einträge zum Löschen"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "'%s' löschen [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12976,52 +13020,52 @@
 "help                - diese Meldung anzeigen\n"
 "?                   - Hilfe zur Auswahl mittels Eingabe anzeigen"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Würde das folgende Element entfernen:"
 msgstr[1] "Würde die folgenden Elemente entfernen:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Keine Dateien mehr zum Löschen, beende."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "keine Namen von gelöschten Dateien ausgeben"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "Aktion erzwingen"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "interaktives Clean"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "ganze Verzeichnisse löschen"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "Muster"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "<Muster> zu den Regeln für ignorierte Pfade hinzufügen"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "auch ignorierte Dateien löschen"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "nur ignorierte Dateien löschen"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -13029,7 +13073,7 @@
 "clean.requireForce auf \"true\" gesetzt und weder -i, -n noch -f gegeben; "
 "\"clean\" verweigert"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -13037,7 +13081,7 @@
 "clean.requireForce standardmäßig auf \"true\" gesetzt und weder -i, -n noch -"
 "f gegeben; \"clean\" verweigert"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x und -X können nicht gemeinsam verwendet werden"
 
@@ -13053,13 +13097,13 @@
 msgid "don't create a checkout"
 msgstr "kein Auschecken"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "ein Bare-Repository erstellen"
 
 #: builtin/clone.c:103
 msgid "create a mirror repository (implies bare)"
-msgstr "ein Spiegelarchiv erstellen (impliziert --bare)"
+msgstr "ein Spiegelarchiv erstellen (impliziert bare)"
 
 #: builtin/clone.c:105
 msgid "to clone from a local repository"
@@ -13085,26 +13129,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "Anzahl der parallel zu klonenden Submodule"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "Vorlagenverzeichnis"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "Verzeichnis, von welchem die Vorlagen verwendet werden"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "Repository referenzieren"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "--reference nur während des Klonens benutzen"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "Name"
@@ -13121,7 +13165,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "Pfad zu \"git-upload-pack\" auf der Gegenseite"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "Tiefe"
@@ -13131,7 +13175,7 @@
 msgstr ""
 "einen Klon mit unvollständiger Historie (shallow) in dieser Tiefe erstellen"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "Zeit"
@@ -13154,8 +13198,8 @@
 "die Historie eines Klons mit unvollständiger Historie (shallow) mittels\n"
 "Ausschluss eines Commits vertiefen"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "nur einen Branch klonen, HEAD oder --branch"
 
@@ -13167,11 +13211,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "jedes geklonte Submodul mit unvollständiger Historie (shallow)"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr ".git-Verzeichnis"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "Git-Verzeichnis vom Arbeitsverzeichnis separieren"
 
@@ -13184,22 +13228,22 @@
 msgstr "Konfiguration innerhalb des neuen Repositories setzen"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "serverspezifisch"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "Option übertragen"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "nur IPv4-Adressen benutzen"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "nur IPv6-Adressen benutzen"
 
@@ -13302,7 +13346,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "Kann temporäre \"alternates\"-Datei nicht entfernen"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Zu viele Argumente."
 
@@ -13324,7 +13368,7 @@
 msgid "repository '%s' does not exist"
 msgstr "Repository '%s' existiert nicht"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "Tiefe %s ist keine positive Zahl"
@@ -13346,7 +13390,7 @@
 msgstr "Arbeitsverzeichnis '%s' existiert bereits."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
@@ -13413,12 +13457,16 @@
 msgid "--local is ignored"
 msgstr "--local wird ignoriert"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "Remoteübertragung meldete Fehler"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Remote-Branch %s nicht im Upstream-Repository %s gefunden"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Sie scheinen ein leeres Repository geklont zu haben."
 
@@ -13477,7 +13525,7 @@
 msgstr "konnte Objekt-Verzeichnis nicht finden, dass '%s' entsprechen soll"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "Verzeichnis"
 
@@ -13578,7 +13626,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "doppelter Vorgänger %s ignoriert"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "Kein gültiger Objektname: %s"
@@ -13606,13 +13654,13 @@
 msgid "id of a parent commit object"
 msgstr "ID eines Eltern-Commit-Objektes."
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "Beschreibung"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "Commit-Beschreibung"
 
@@ -13620,7 +13668,7 @@
 msgid "read commit log message from file"
 msgstr "Commit-Beschreibung von Datei lesen"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Commit mit GPG signieren"
@@ -13771,7 +13819,7 @@
 "Konnte kein Kommentar-Zeichen auswählen, das nicht in\n"
 "der aktuellen Commit-Beschreibung verwendet wird."
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "Konnte Commit %s nicht nachschlagen"
@@ -13807,7 +13855,49 @@
 msgid "could not write commit template"
 msgstr "Konnte Commit-Vorlage nicht schreiben"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,\n"
+"die mit '%c' beginnen, werden ignoriert.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,\n"
+"die mit '%c' beginnen, werden ignoriert, und eine leere Beschreibung\n"
+"bricht den Commit ab.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,\n"
+"die mit '%c' beginnen, werden beibehalten; wenn Sie möchten, können Sie\n"
+"diese entfernen.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen, "
+"die\n"
+"mit '%c' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese "
+"entfernen.\n"
+"Eine leere Beschreibung bricht den Commit ab.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13821,7 +13911,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "aus und versuchen Sie es erneut.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13835,99 +13925,76 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "aus und versuchen Sie es erneut.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,\n"
-"die mit '%c' beginnen, werden ignoriert, und eine leere Beschreibung\n"
-"bricht den Commit ab.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen, "
-"die\n"
-"mit '%c' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese "
-"entfernen.\n"
-"Eine leere Beschreibung bricht den Commit ab.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAutor:           %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sDatum:            %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sCommit-Ersteller: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Kann Index nicht lesen"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "konnte Anhänge nicht an --trailers weitergeben"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Fehler beim Erzeugen der \"Tree\"-Objekte"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
 "Bitte liefern Sie eine Beschreibung entweder mit der Option -m oder -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' ist nicht im Format 'Name <E-Mail>' und stimmt mit keinem "
 "vorhandenen Autor überein"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Ungültiger ignored-Modus '%s'."
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Ungültiger Modus '%s' für unversionierte Dateien"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long und -z sind inkompatibel"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Ein Merge ist im Gange -- kann Umformulierung nicht durchführen."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "\"cherry-pick\" ist im Gange -- kann Umformulierung nicht durchführen."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 "Option für Umformulierung bei --fixup kann nicht mit Pfad '%s' kombiniert "
 "werden"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
@@ -13935,105 +14002,105 @@
 "Umformulierungsoption von --fixup und --patch/--interactive/--all/--"
 "include/--only schließen sich gegenseitig aus"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "--reset-author und --author können nicht gemeinsam verwendet werden"
 
-#: builtin/commit.c:1254
-msgid "You have nothing to amend."
-msgstr "Sie haben nichts für \"--amend\"."
-
-#: builtin/commit.c:1257
-msgid "You are in the middle of a merge -- cannot amend."
-msgstr "Ein Merge ist im Gange -- kann \"--amend\" nicht ausführen."
-
-#: builtin/commit.c:1259
-msgid "You are in the middle of a cherry-pick -- cannot amend."
-msgstr "\"cherry-pick\" ist im Gange -- kann \"--amend\" nicht ausführen."
-
 #: builtin/commit.c:1261
-msgid "You are in the middle of a rebase -- cannot amend."
-msgstr "Ein Rebase ist im Gange -- kann \"--amend\" nicht ausführen."
+msgid "You have nothing to amend."
+msgstr "Sie haben nichts zum Nachbessern."
 
 #: builtin/commit.c:1264
+msgid "You are in the middle of a merge -- cannot amend."
+msgstr "Ein Merge ist im Gange -- Nachbesserung nicht möglich."
+
+#: builtin/commit.c:1266
+msgid "You are in the middle of a cherry-pick -- cannot amend."
+msgstr "\"cherry-pick\" ist im Gange -- Nachbesserung nicht möglich."
+
+#: builtin/commit.c:1268
+msgid "You are in the middle of a rebase -- cannot amend."
+msgstr "Ein Rebase ist im Gange -- Nachbesserung nicht möglich."
+
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
 "Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Es kann nur eine Option von -c/-C/-F/--fixup verwendet werden."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Die Option -m kann nicht mit -c/-C/-F kombiniert werden."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
-msgstr "--reset--author kann nur mit -C, -c oder --amend verwendet werden"
+msgstr "--reset-author kann nur mit -C, -c oder --amend verwendet werden"
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Es kann nur eine Option von --include/--only/--all/--interactive/--patch "
 "verwendet werden."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "unbekannte Option: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "Pfade '%s ...' mit -a sind nicht sinnvoll"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "Status im Kurzformat anzeigen"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "Branchinformationen anzeigen"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "Stashinformationen anzeigen"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "voraus/hinterher-Werte berechnen"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "Version"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "maschinenlesbare Ausgabe"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "Status im Langformat anzeigen (Standard)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "Einträge mit NUL-Zeichen abschließen"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "Modus"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "unversionierte Dateien anzeigen, optionale Modi: all, normal, no. (Standard: "
 "all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -14041,11 +14108,11 @@
 "ignorierte Dateien anzeigen, optionale Modi: traditional, matching, no. "
 "(Standard: traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "wann"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -14053,195 +14120,195 @@
 "Änderungen in Submodulen ignorieren, optional wenn: all, dirty, untracked. "
 "(Standard: all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "unversionierte Dateien in Spalten auflisten"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "keine Umbenennungen ermitteln"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "Umbenennungen erkennen, optional Index für Gleichheit setzen"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Nicht unterstützte Kombination von ignored und untracked-files Argumenten."
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "Zusammenfassung nach erfolgreichem Commit unterdrücken"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "Unterschiede in Commit-Beschreibungsvorlage anzeigen"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Optionen für Commit-Beschreibung"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "Beschreibung von Datei lesen"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "Autor"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "Autor eines Commits überschreiben"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "Datum"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "Datum eines Commits überschreiben"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "Commit"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "Beschreibung des angegebenen Commits wiederverwenden und editieren"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "Beschreibung des angegebenen Commits wiederverwenden"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]Commit"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "eine autosquash-formatierte Beschreibung zum Nachbessern/Umformulieren des "
 "angegebenen Commits verwenden"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "eine autosquash-formatierte Beschreibung beim \"squash\" des angegebenen "
 "Commits verwenden"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "Sie als Autor des Commits setzen (verwendet mit -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "Anhang"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "benutzerdefinierte Anhänge hinzufügen"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "eine Signed-off-by Zeile hinzufügen"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "angegebene Vorlagendatei verwenden"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "Bearbeitung des Commits erzwingen"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "Status in die Commit-Beschreibungsvorlage einfügen"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Optionen für Commit-Inhalt"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "alle geänderten Dateien committen"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "die angegebenen Dateien zusätzlich zum Commit vormerken"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "interaktives Hinzufügen von Dateien"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "interaktives Hinzufügen von Änderungen"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "nur die angegebenen Dateien committen"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "Hooks pre-commit und commit-msg umgehen"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "anzeigen, was committet werden würde"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "vorherigen Commit ändern"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "\"post-rewrite hook\" umgehen"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "Aufzeichnung einer leeren Änderung erlauben"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "Aufzeichnung einer Änderung mit einer leeren Beschreibung erlauben"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Beschädigte MERGE_HEAD-Datei (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "Konnte MERGE_MODE nicht lesen"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "Konnte Commit-Beschreibung nicht lesen: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Commit aufgrund leerer Beschreibung abgebrochen.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Commit abgebrochen; Sie haben die Beschreibung nicht editiert.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "Commit aufgrund leerer Commit-Beschreibung abgebrochen.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14515,7 +14582,7 @@
 msgstr ""
 "--worktree kann nicht mit mehreren Arbeitsverzeichnissen verwendet werden,\n"
 "außer die Konfigurationserweiterung worktreeConfig ist aktiviert. Bitte\n"
-"lesen Sie die Sektion \"CONFIGURATION_FILE\" in \"git help worktree\" für "
+"lesen Sie die Sektion \"CONFIGURATION FILE\" in \"git help worktree\" für "
 "Details"
 
 #: builtin/config.c:743
@@ -14574,8 +14641,8 @@
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr ""
 "kann nicht mehrere Werte mit einem einzigen Wert überschreiben\n"
-"       Benutzen Sie einen regulären Ausdruck, --add oder --replace, um %s\n"
-"       zu ändern."
+"       Benutzen Sie einen regulären Ausdruck, --add oder --replace-all, um\n"
+"       %s zu ändern."
 
 #: builtin/config.c:943 builtin/config.c:954
 #, c-format
@@ -14890,36 +14957,36 @@
 msgid "you may want to cleanup or recover these."
 msgstr "Sie könnten diese aufräumen oder wiederherstellen."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "`diff.guitool` statt `diff.tool` benutzen"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "Diff über ganzes Verzeichnis ausführen"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "keine Eingabeaufforderung vor Ausführung eines Diff-Tools"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "symbolische Verknüpfungen im dir-diff Modus verwenden"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "Tool"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "das angegebene Diff-Tool benutzen"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "eine Liste mit Diff-Tools darstellen, die mit `--tool` benutzt werden können"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14928,31 +14995,31 @@
 "Rückkehrwert\n"
 "verschieden 0 ausgeführt wurde"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "eigenen Befehl zur Anzeige von Unterschieden angeben"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "an 'diff' übergeben"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool benötigt Arbeitsverzeichnis oder --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff kann nicht mit --no-index verwendet werden"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool und --extcmd schließen sich gegenseitig aus"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "kein <Tool> für --tool=<Tool> angegeben"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "kein <Programm> für --extcmd=<Programm> angegeben"
 
@@ -15047,7 +15114,7 @@
 msgid "skip output of blob data"
 msgstr "Ausgabe von Blob-Daten überspringen"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "Refspec"
 
@@ -15359,7 +15426,7 @@
 msgstr ""
 "Normalerweise zeigt 'fetch' welche Branches eine erzwungene Aktualisierung\n"
 "hatten, aber diese Überprüfung wurde deaktiviert. Um diese wieder zu\n"
-"aktivieren, nutzen Sie die Option '--show-forced-updated' oder führen\n"
+"aktivieren, nutzen Sie die Option '--show-forced-updates' oder führen\n"
 "Sie 'git config fetch.showForcedUpdates true' aus."
 
 #: builtin/fetch.c:1069
@@ -15382,10 +15449,9 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
+msgid "rejected %s because shallow roots are not allowed to be updated"
 msgstr ""
-"%s wurde zurückgewiesen, da Root-Commits von Repositories mit "
-"unvollständiger\n"
+"%s zurückgewiesen, da Root-Commits von Repositories mit unvollständiger\n"
 "Historie (shallow) nicht aktualisiert werden dürfen."
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
@@ -15489,52 +15555,56 @@
 msgid "You need to specify a tag name."
 msgstr "Sie müssen den Namen des Tags angeben."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only benötigt einen oder mehrere --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negative Tiefe wird von --deepen nicht unterstützt."
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen und --depth schließen sich gegenseitig aus"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth und --unshallow können nicht gemeinsam verwendet werden"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 "--unshallow kann nicht in einem Repository mit vollständiger Historie "
 "verwendet werden"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all akzeptiert kein Repository als Argument"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kann nicht mit Refspecs verwendet werden"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Remote-Repository (einzeln oder Gruppe) nicht gefunden: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "Das Abholen einer Gruppe von Remote-Repositories kann nicht mit der Angabe\n"
 "von Refspecs verwendet werden."
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "Remote wird benötigt, wenn --negotiate-only benutzt wird"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Protokoll unterstützt --negotiate-only nicht, beende."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15542,13 +15612,13 @@
 "--filter kann nur mit den Remote-Repositories verwendet werden,\n"
 "die in extensions.partialclone konfiguriert sind"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr ""
 "--atomic kann nur verwendet werden, wenn nur von einem Remote-Repository "
 "abgefragt wird"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 "--stdin kann nur verwendet werden, wenn nur von einem Remote-Repository "
@@ -15645,19 +15715,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<Konfiguration> <Befehlsargumente>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "Konfiguration"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "Konfigurationsschlüssel für eine Liste von Repository-Pfaden"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "Option --config=<Konfiguration> fehlt"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "unbekannt"
 
@@ -15673,16 +15743,16 @@
 msgid "warning in %s %s: %s"
 msgstr "Warnung in %s %s: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "fehlerhafte Verknüpfung von %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "falscher Objekttyp in Verknüpfung"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15691,211 +15761,211 @@
 "fehlerhafte Verknüpfung von %7s %s\n"
 "                       nach %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "%s %s fehlt"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "%s %s nicht erreichbar"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "%s %s unreferenziert"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "Konnte lost-found nicht erstellen."
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "Konnte '%s' nicht abschließen."
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Prüfe %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Prüfe Konnektivität (%d Objekte)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Prüfe %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "Fehlerhafte Verknüpfungen"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "Wurzel %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "%s %s (%s) in %s getaggt"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: Objekt fehlerhaft oder nicht vorhanden"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: Ungültiger Reflog-Eintrag %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Prüfe Reflog %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: Ungültiger SHA1-Zeiger %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: kein Commit"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "Notiz: Keine Standardreferenzen"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: Objekt fehlerhaft oder nicht vorhanden: %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: Objekt konnte nicht geparst werden: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "Ungültige SHA1-Datei: %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Prüfe Objekt-Verzeichnis"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Prüfe Objekt-Verzeichnisse"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Prüfe %s Verknüpfung"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "Ungültiger Objekt-Typ %s"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s zeigt auf etwas seltsames (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: losgelöster HEAD zeigt auf nichts"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "Notiz: %s zeigt auf einen ungeborenen Branch (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Prüfe Cache-Verzeichnis"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: Ungültiger SHA1-Zeiger in Cache-Verzeichnis"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "non-tree in Cache-Verzeichnis"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<Optionen>] [<Objekt>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "unerreichbare Objekte anzeigen"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "unreferenzierte Objekte anzeigen"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "Tags melden"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "Hauptwurzeln melden"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "Index-Objekte in Erreichbarkeitsprüfung einbeziehen"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "Reflogs in Erreichbarkeitsprüfung einbeziehen (Standard)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "ebenso Pakete und alternative Objekte betrachten"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "nur Konnektivität prüfen"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "genauere Prüfung aktivieren"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "unreferenzierte Objekte nach .git/lost-found schreiben"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "Fortschrittsanzeige anzeigen"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "ausführliche Namen für erreichbare Objekte anzeigen"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Prüfe Objekte"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: Objekt nicht vorhanden"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "Ungültiger Parameter: SHA-1 erwartet, '%s' bekommen"
@@ -16191,8 +16261,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "keine Unterstützung von Threads, '%s' wird ignoriert"
@@ -16207,250 +16277,250 @@
 msgid "unable to grep from object of type %s"
 msgstr "kann \"grep\" nicht mit Objekten des Typs %s durchführen"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "Schalter '%c' erwartet einen numerischen Wert"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "im Index statt im Arbeitsverzeichnis suchen"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "auch in Inhalten finden, die nicht von Git verwaltet werden"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "in versionierten und unversionierten Dateien suchen"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "Dateien, die über '.gitignore' angegeben sind, ignorieren"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "rekursive Suche in jedem Submodul"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "Zeilen ohne Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "Übereinstimmungen unabhängig von Groß- und Kleinschreibung finden"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "nur ganze Wörter suchen"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "binäre Dateien als Text verarbeiten"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "keine Muster in Binärdateien finden"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "binäre Dateien mit \"textconv\"-Filtern verarbeiten"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "in Unterverzeichnissen suchen (Standard)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "höchstens <Tiefe> Ebenen durchlaufen"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "erweiterte reguläre Ausdrücke aus POSIX verwenden"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "grundlegende reguläre Ausdrücke aus POSIX verwenden (Standard)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "Muster als feste Zeichenketten interpretieren"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "Perl-kompatible reguläre Ausdrücke verwenden"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "Zeilennummern anzeigen"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "Nummer der Spalte des ersten Treffers anzeigen"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "keine Dateinamen anzeigen"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "Dateinamen anzeigen"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "Dateinamen relativ zum Projektverzeichnis anzeigen"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "nur Dateinamen anzeigen anstatt übereinstimmende Zeilen"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "Synonym für --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "nur die Dateinamen ohne Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "NUL-Zeichen nach Dateinamen ausgeben"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "nur übereinstimmende Teile der Zeile anzeigen"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "anstatt der Zeilen, die Anzahl der übereinstimmenden Zeilen anzeigen"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "Übereinstimmungen hervorheben"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr ""
 "eine Leerzeile zwischen Übereinstimmungen in verschiedenen Dateien ausgeben"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "den Dateinamen nur einmal oberhalb der Übereinstimmungen aus dieser Datei "
 "anzeigen"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "<n> Zeilen vor und nach den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "<n> Zeilen vor den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "<n> Zeilen nach den Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "<n> Threads benutzen"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "Kurzform für -C NUM"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "eine Zeile mit dem Funktionsnamen vor Übereinstimmungen anzeigen"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "die umgebende Funktion anzeigen"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "Muster von einer Datei lesen"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "<Muster> finden"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "Muster kombinieren, die mit -e angegeben wurden"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "Übereinstimmungen nur durch Beendigungsstatus anzeigen"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "nur Übereinstimmungen von Dateien anzeigen, die allen Mustern entsprechen"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "Anzeigeprogramm"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "Dateien mit Übereinstimmungen im Anzeigeprogramm anzeigen"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "den Aufruf von grep(1) erlauben (von dieser Programmversion ignoriert)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "Kein Muster angegeben."
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index oder --untracked können nicht mit Commits verwendet werden"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "Konnte Commit nicht auflösen: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked zusammen mit --recurse-submodules wird nicht unterstützt"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "Ungültige Kombination von Optionen, --threads wird ignoriert."
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "Keine Unterstützung für Threads, --threads wird ignoriert."
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "ungültige Anzahl von Threads angegeben (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr ""
 "--open-files-in-pager kann nur innerhalb des Arbeitsverzeichnisses verwendet "
 "werden"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached und --untracked können nicht mit --no-index verwendet werden"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked kann nicht mit --cached verwendet werden"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 "--[no-]exclude-standard kann nicht mit versionierten Inhalten verwendet "
 "werden"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "--cached und \"Tree\"-Objekte angegeben"
 
@@ -16575,30 +16645,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s': unbekannter Handbuch-Betrachter."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "kein Handbuch-Betrachter konnte mit dieser Anfrage umgehen"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "kein Informations-Betrachter konnte mit dieser Anfrage umgehen"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "Für '%s' wurde der Alias '%s' angelegt."
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "Ungültiger alias.%s String: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "Verwendung: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' für weitere Informationen"
 
@@ -16636,7 +16706,7 @@
 msgid "used more bytes than were available"
 msgstr "verwendete mehr Bytes als verfügbar waren"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "Paket ist zu groß für die aktuelle Definition von off_t"
 
@@ -16663,239 +16733,239 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "Paketversion %<PRIu32> nicht unterstützt"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "Paket hat ein ungültiges Objekt bei Versatz %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "Dekomprimierung gab %d zurück"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "Wert für Versatz bei Differenzobjekt übergelaufen"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr ""
 "Wert für Versatz bei Differenzobjekt liegt außerhalb des gültigen Bereichs"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "Unbekannter Objekt-Typ %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "Kann Paketdatei %s nicht lesen"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "frühzeitiges Ende der Paketdatei, vermisse %<PRIuMAX> Byte"
 msgstr[1] "frühzeitiges Ende der Paketdatei, vermisse %<PRIuMAX> Bytes"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "ernsthafte Inkonsistenz nach Dekomprimierung"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1 KOLLISION MIT %s GEFUNDEN !"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "kann %s nicht lesen"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "Kann existierende Informationen zu Objekt %s nicht lesen."
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "Kann existierendes Objekt %s nicht lesen."
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "ungültiges Blob-Objekt %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "fsck Fehler in gepacktem Objekt"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Nicht alle Kind-Objekte von %s sind erreichbar"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "Konnte Dateiunterschied nicht anwenden"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Empfange Objekte"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Indiziere Objekte"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "Paket ist beschädigt (SHA1 unterschiedlich)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "kann Paketdatei nicht lesen"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "Paketende enthält nicht verwendbaren Inhalt"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "Fehler beim Ausführen von \"parse_pack_objects()\""
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Löse Unterschiede auf"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kann Thread nicht erzeugen: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "Fehler beim Auflösen der Unterschiede"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "abgeschlossen mit %d lokalem Objekt"
 msgstr[1] "abgeschlossen mit %d lokalen Objekten"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "unerwartete Prüfsumme für %s (Festplattenfehler?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "Paket hat %d unaufgelösten Unterschied"
 msgstr[1] "Paket hat %d unaufgelöste Unterschiede"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "Konnte angehängtes Objekt (%d) nicht komprimieren"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "lokales Objekt %s ist beschädigt"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "Name der Paketdatei '%s' endet nicht mit '.%s'"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "Kann %s Datei '%s' nicht schreiben."
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "Kann eben geschriebene %s Datei '%s' nicht schließen."
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "Fehler beim Schließen der Paketdatei"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "Kann Paketdatei nicht speichern"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "Kann Indexdatei nicht speichern"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "\"pack.indexversion=%<PRIu32>\" ist ungültig"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kann existierende Paketdatei '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Kann existierende Indexdatei für Paket '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "kein Unterschied: %d Objekt"
 msgstr[1] "kein Unterschied: %d Objekte"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "Länge der Objekt-Liste = %d: %lu Objekt"
 msgstr[1] "Länge der Objekt-Liste = %d: %lu Objekte"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Kann nicht zurück zum Arbeitsverzeichnis wechseln"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "%s ist ungültig"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "unbekannter Hash-Algorithmus '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kann nicht ohne --stdin verwendet werden"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin erfordert ein Git-Repository"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format kann nicht mit --stdin verwendet werden"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify wurde ohne Namen der Paketdatei angegeben"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "fsck Fehler beim Packen von Objekten"
 
@@ -16939,56 +17009,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "kopiere keine Vorlagen von '%s': %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "ungültiger initialer Branchname: '%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "kann nicht mit Dateityp %d umgehen"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "Konnte %s nicht nach %s verschieben"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "Versuch, das Repository mit einem anderen Hash zu reinitialisieren"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s existiert bereits"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "Neu-Initialisierung: --initial-branch=%s ignoriert"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Bestehendes verteiltes Git-Repository in %s%s neuinitialisiert\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Bestehendes Git-Repository in %s%s neuinitialisiert\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Leeres verteiltes Git-Repository in %s%s initialisiert\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Leeres Git-Repository in %s%s initialisiert\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16996,41 +17066,41 @@
 "git init [-q | --quiet] [--bare] [--template=<Vorlagenverzeichnis>] [--"
 "shared[=<Berechtigungen>]] [<Verzeichnis>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "Berechtigungen"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "angeben, dass das Git-Repository mit mehreren Benutzern geteilt wird"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "den Namen des initialen Branches überschreiben"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "Hash"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "den zu verwendenen Hash-Algorithmus angeben"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir und --bare schließen sich gegenseitig aus"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "kann Verzeichnis %s nicht erstellen"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "kann nicht in Verzeichnis %s wechseln"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -17039,12 +17109,12 @@
 "%s (oder --work-tree=<Verzeichnis>) nicht erlaubt ohne Spezifizierung von %s "
 "(oder --git-dir=<Verzeichnis>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Kann nicht auf Arbeitsverzeichnis '%s' zugreifen."
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir nicht kompatibel mit Bare-Repository"
 
@@ -17153,86 +17223,86 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<Bereich>:<Datei> kann nicht mit Pfadspezifikation verwendet werden"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "letzte Ausgabe: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: ungültige Datei"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "Konnte Objekt %s nicht lesen."
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "Unbekannter Typ: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 "%s: Ungültiger Modus für Erstellung des Deckblattes aus der Beschreibung"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers ohne Wert"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "Kann Patch-Datei %s nicht öffnen"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "Brauche genau einen Commit-Bereich."
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "Kein Commit-Bereich."
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "Anschreiben benötigt E-Mail-Format"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "Fehler beim Erstellen der Datei für das Anschreiben."
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "ungültiges in-reply-to: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<Optionen>] [<seit> | <Commitbereich>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "Zwei Ausgabeverzeichnisse?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "Unbekannter Commit %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "Konnte '%s' nicht als gültige Referenz auflösen."
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "Konnte keine exakte Merge-Basis finden."
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -17243,295 +17313,295 @@
 "'git branch --set-upstream-to', um einem Remote-Branch zu folgen.\n"
 "Oder geben Sie den Basis-Commit mit '--base=<Basis-Commit-Id>' manuell an."
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "Fehler beim Finden einer exakten Merge-Basis."
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "Basis-Commit sollte der Vorgänger der Revisionsliste sein."
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "Basis-Commit sollte nicht in der Revisionsliste enthalten sein."
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "kann Patch-Id nicht lesen"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "Fehler beim Ableiten des range-diff Ursprungs der aktuellen Serie"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "nutze '%s' als range-diff Ursprung der aktuellen Serie"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "[PATCH n/m] auch mit einzelnem Patch verwenden"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "[PATCH] auch mit mehreren Patches verwenden"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "Ausgabe der Patches in Standard-Ausgabe"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "ein Deckblatt erzeugen"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "einfache Nummernfolge für die Namen der Ausgabedateien verwenden"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "Dateiendung"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "<Dateiendung> statt '.patch' verwenden"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "die Nummerierung der Patches bei <n> statt bei 1 beginnen"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "Reroll-Anzahl"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "die Serie als n-te Fassung kennzeichnen"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "maximale Länge des Dateinamens für die Ausgabe"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "[RFC PATCH] statt [PATCH] verwenden"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "Modus für Erstellung des Deckblattes aus der Beschreibung"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "Erzeuge Teile des Deckblattes basierend auf der Beschreibung des Branches"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "nutze [<Präfix>] statt [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "erzeugte Dateien in <Verzeichnis> speichern"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "[PATCH] nicht entfernen/hinzufügen"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "keine binären Unterschiede ausgeben"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "Hash mit Nullen in \"From\"-Header ausgeben"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr ""
 "keine Patches einschließen, die einem Commit im Upstream-Branch entsprechen"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "Patchformat anstatt des Standards anzeigen (Patch + Zusammenfassung)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "E-Mail-Einstellungen"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "Header"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "E-Mail-Header hinzufügen"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "E-Mail"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "\"To:\"-Header hinzufügen"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "\"Cc:\"-Header hinzufügen"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "Ident"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "\"From\"-Adresse auf <Ident> setzen (oder Ident des Commit-Erstellers, wenn "
 "fehlend)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "aus erster E-Mail eine Antwort zu <message-id> machen"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "Grenze"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "den Patch anhängen"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "den Patch direkt in die Nachricht einfügen"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "Nachrichtenverkettung aktivieren, Stile: shallow, deep"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "Signatur"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "eine Signatur hinzufügen"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "Basis-Commit"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "erforderliche Revisions-Informationen der Patch-Serie hinzufügen"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "eine Signatur aus einer Datei hinzufügen"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "keine Dateinamen der Patches anzeigen"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "Forschrittsanzeige während der Erzeugung der Patches"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "Änderungen gegenüber <Commit> im Deckblatt oder einzelnem Patch anzeigen"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "Änderungen gegenüber <Refspec> im Deckblatt oder einzelnem Patch anzeigen"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "Prozentsatz mit welchem Erzeugung gewichtet wird"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "Ungültige Identifikationszeile: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n und -k schließen sich gegenseitig aus"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc und -k schließen sich gegenseitig aus"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only kann nicht verwendet werden"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status kann nicht verwendet werden"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check kann nicht verwendet werden"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 "--stdout, --output und --output-directory schließen sich gegenseitig aus"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff erfordert --cover-letter oder einzelnen Patch"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff gegen v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor erfordert --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff erfordert --cover-letter oder einzelnen Patch."
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Range-Diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-Diff gegen v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "Konnte Signatur-Datei '%s' nicht lesen"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Erzeuge Patches"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "Fehler beim Erstellen der Ausgabedateien."
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<Upstream> [<Branch> [<Limit>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17907,14 +17977,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<Optionen>] [<Commit>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "Schalter 'm' erfordert einen Wert."
@@ -18059,38 +18121,38 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' zeigt auf keinen Commit"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Ungültiger branch.%s.mergeoptions String: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Es wird nur der Merge von zwei Branches behandelt."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Unbekannte Option für merge-recursive: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "konnte %s nicht schreiben"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "konnte nicht von '%s' lesen"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Merge wurde nicht committet; benutzen Sie 'git commit', um den Merge "
 "abzuschließen.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -18101,11 +18163,11 @@
 "Upstream-Branch mit einem Thema-Branch zusammenführt.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Eine leere Commit-Beschreibung bricht den Commit ab.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -18114,75 +18176,75 @@
 "Zeilen, die mit '%c' beginnen, werden ignoriert,\n"
 "und eine leere Beschreibung bricht den Commit ab.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Leere Commit-Beschreibung"
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Wunderbar.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Automatischer Merge fehlgeschlagen; beheben Sie die Konflikte und committen "
 "Sie dann das Ergebnis.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Sie befinden sich auf keinem Branch."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Kein Remote-Repository für den aktuellen Branch."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr ""
 "Es ist kein Standard-Upstream-Branch für den aktuellen Branch definiert."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Kein Remote-Tracking-Branch für %s von %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Fehlerhafter Wert '%s' in Umgebungsvariable '%s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "nichts was wir in %s zusammenführen können: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "nichts was wir zusammenführen können"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort akzeptiert keine Argumente"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Es gibt keinen Merge abzubrechen (MERGE_HEAD fehlt)"
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit erwartet keine Argumente"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue erwartet keine Argumente"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Es ist kein Merge im Gange (MERGE_HEAD fehlt)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -18190,7 +18252,7 @@
 "Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert).\n"
 "Bitte committen Sie Ihre Änderungen, bevor Sie den Merge ausführen."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -18198,92 +18260,91 @@
 "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
 "Bitte committen Sie Ihre Änderungen, bevor Sie den Merge ausführen."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Sie können --squash nicht mit --no-ff kombinieren."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "Sie können --squash nicht mit --commit kombinieren."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Kein Commit angegeben und merge.defaultToUpstream ist nicht gesetzt."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
-msgstr ""
-"Squash-Merge auf einen leeren Branch wird noch nicht unterstützt"
+msgstr "Squash-Merge auf einen leeren Branch wird noch nicht unterstützt"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Nicht vorzuspulender Commit kann nicht in einem leeren Branch verwendet "
 "werden."
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - nichts was wir zusammenführen können"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Kann nur exakt einen Commit in einem leeren Branch zusammenführen"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "verweigere den Merge von nicht zusammenhängenden Historien"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Aktualisiere %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Probiere wirklich trivialen \"in-index\"-Merge ...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Nein.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Vorspulen nicht möglich, breche ab."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Rücklauf des Verzeichnisses bis zum Ursprung ...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Probiere Merge-Strategie %s ...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Keine Merge-Strategie behandelt diesen Merge.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Merge mit Strategie %s fehlgeschlagen.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Benutzen Sie \"%s\", um die Auflösung per Hand vorzubereiten.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Benutze die Strategie %s, um die Auflösung per Hand vorzubereiten.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -18385,7 +18446,7 @@
 "Während des Umpackens, sammle Paket-Dateien von geringerer Größe in "
 "einenStapel, welcher größer ist als diese Größe"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "Nicht erkannter Unterbefehl: %s"
@@ -18936,7 +18997,7 @@
 msgid "read object names from the standard input"
 msgstr "Objektnamen von der Standard-Eingabe lesen"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "nicht löschen, nur anzeigen"
 
@@ -18952,26 +19013,26 @@
 msgid "use notes from <notes-ref>"
 msgstr "Notizen von <Notiz-Referenz> verwenden"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "Unbekannter Unterbefehl: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<Optionen>...] [< <Referenzliste> | < "
 "<Objektliste>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<Optionen>...] <Basis-Name> [< <Referenzliste> | < "
 "<Objektliste>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18980,111 +19041,111 @@
 "write_reuse_object: konnte %s nicht finden, erwartet bei Offset %<PRIuMAX> "
 "in Paket %s"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "Ungültiges CRC für gepacktes Objekt %s."
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "Fehlerhaftes gepacktes Objekt für %s."
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "Rekursiver Unterschied für Objekt %s festgestellt."
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u Objekte geordnet, %<PRIu32> erwartet."
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "Objekt beim Offset %<PRIuMAX> in Paket %s erwartet"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "Deaktiviere Schreiben der Bitmap, Pakete wurden durch pack.packSizeLimit\n"
 "aufgetrennt."
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Schreibe Objekte"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "Konnte '%s' nicht lesen"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "Schrieb %<PRIu32> Objekte während %<PRIu32> erwartet waren."
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "Deaktiviere Schreiben der Bitmap, da einige Objekte nicht in eine Pack-"
 "Datei\n"
 "geschrieben wurden."
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "\"delta base offset\" Überlauf in Paket für %s"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "\"delta base offset\" liegt außerhalb des gültigen Bereichs für %s"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Zähle Objekte"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "Konnte Kopfbereich von Objekt '%s' nicht parsen."
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "Objekt %s kann nicht gelesen werden."
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "Inkonsistente Objektlänge bei Objekt %s (%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "ungünstiges Packet - Speicher voll"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Delta-Kompression verwendet bis zu %d Threads."
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "Konnte keine Objekte packen, die von Tag %s erreichbar sind."
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Komprimiere Objekte"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "Inkonsistenz mit der Anzahl von Deltas"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -19093,7 +19154,7 @@
 "Wert für uploadpack.blobpackfileuri muss in der Form '<Objekt-Hash> <Pack-"
 "Hash> <URI>' vorliegen ('%s' erhalten)"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -19101,17 +19162,17 @@
 "Objekt bereits in einem anderen uploadpack.blobpackfileuri konfiguriert "
 "('%s' erhalten)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "konnte Typ von Objekt %s in Paket %s nicht bestimmen"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "Konnte Paket '%s' nicht finden"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -19120,7 +19181,7 @@
 "erwartete Randobjekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -19129,263 +19190,263 @@
 "erwartete Objekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "ungültiger Wert für --missing"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "kann Paketindex nicht öffnen"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "loses Objekt bei %s konnte nicht untersucht werden"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "konnte loses Objekt nicht erzwingen"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' ist kein Commit"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "ungültiger Commit '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "konnte neuere Objekte nicht hinzufügen"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "nicht unterstützte Index-Version %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "ungültige Index-Version '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<Version>[,<Offset>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "die Index-Datei des Paketes in der angegebenen Indexformat-Version schreiben"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "maximale Größe für jede ausgegebene Paketdatei"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "geliehene Objekte von alternativem Objektspeicher ignorieren"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "gepackte Objekte ignorieren"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "Paketfenster durch Objekte begrenzen"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "Paketfenster, zusätzlich zur Objektbegrenzung, durch Speicher begrenzen"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 "maximale Länge der erlaubten Differenzverkettung im resultierenden Paket"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "existierende Unterschiede wiederverwenden"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "existierende Objekte wiederverwenden"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA Objekte verwenden"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "Threads bei der Suche nach den besten Übereinstimmungen bei Unterschieden "
 "verwenden"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "keine leeren Pakete erzeugen"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "Argumente bezüglich Commits von der Standard-Eingabe lesen"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "die Objekte zu solchen, die noch nicht gepackt wurden, begrenzen"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "Objekte einschließen, die von jeder Referenz erreichbar sind"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr ""
 "Objekte einschließen, die von Einträgen des Reflogs referenziert werden"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "Objekte einschließen, die vom Index referenziert werden"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "Pakete von der Standard-Eingabe lesen"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "Paket in die Standard-Ausgabe schreiben"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "Tag-Objekte einschließen, die auf gepackte Objekte referenzieren"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "nicht erreichbare Objekte behalten"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "nicht erreichbare lose Objekte packen"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "nicht erreichbare Objekte entpacken, die neuer als <Zeit> sind"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "den \"sparse\" Algorithmus zur Bestimmung der Erreichbarkeit benutzen"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "dünnere Pakete erzeugen"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 "Pakete geeignet für Abholung mit unvollständiger Historie (shallow) erzeugen"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "Pakete ignorieren, die .keep Dateien haben"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "dieses Paket ignorieren"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "Komprimierungsgrad für Paketierung"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "keine künstlichen Vorgänger-Commits (\"grafts\") verbergen"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "Bitmap-Index (falls verfügbar) zur Optimierung der Objektzählung benutzen"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "Bitmap-Index zusammen mit Pack-Index schreiben"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "Bitmap-Index schreiben, wenn möglich"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "Behandlung für fehlende Objekte"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 "keine Objekte aus Packdateien von partiell geklonten Remote-Repositories "
 "packen"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "Delta-Islands bei Delta-Kompression beachten"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "Protokoll"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "jegliche konfigurierte uploadpack.blobpackfileuri für dieses Protkoll "
 "ausschließen"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "Tiefe für Verkettung von Unterschieden %d ist zu tief, erzwinge %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit ist zu hoch, erzwinge %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size kann nicht für die Erstellung eines Pakets für eine "
 "Übertragung\n"
 "benutzt werden."
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "Minimales Limit für die Paketgröße ist 1 MiB."
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 "--thin kann nicht benutzt werden, um ein indizierbares Paket zu erstellen."
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable und --unpack-unreachable sind inkompatibel"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "Kann --filter nicht ohne --stdout benutzen."
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "kann --filter nicht mit --stdin-packs benutzen"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr ""
 "interne Commit-Liste kann nicht gemeinsam mit --stdin-packs verwendet werden"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Objekte aufzählen"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19616,21 +19677,21 @@
 "Option --rebase, --no-rebase oder --ff-only auf der Kommandozeile nutzen,\n"
 "um das konfigurierte Standardverhalten pro Aufruf zu überschreiben.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Aktualisiere einen ungeborenen Branch mit Änderungen, die zum Commit "
 "vorgemerkt sind."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "Pull mit Rebase"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "Bitte committen Sie die Änderungen oder benutzen Sie \"stash\"."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19640,7 +19701,7 @@
 "\"fetch\" aktualisierte die Spitze des aktuellen Branches.\n"
 "Spule Ihr Arbeitsverzeichnis von Commit %s vor."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19657,15 +19718,15 @@
 "$ git reset --hard\n"
 "zur Wiederherstellung aus."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Kann nicht mehrere Branches in einen leeren Branch zusammenführen."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Kann Rebase nicht auf mehrere Branches ausführen."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "Kann Rebase nicht mit lokal aufgezeichneten Änderungen in Submodulen "
@@ -19733,7 +19794,7 @@
 "\n"
 "    git push %s HEAD:<Name-des-Remote-Branches>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19747,13 +19808,20 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 "Der aktuelle Branch %s hat mehrere Upstream-Branches, \"push\" verweigert."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Sie haben keine Refspec für \"push\" angegeben, und push.default ist "
+"\"nothing\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19764,14 +19832,7 @@
 "Branches '%s' ist, ohne anzugeben, was versendet werden soll, um welchen\n"
 "Remote-Branch zu aktualisieren."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Sie haben keine Refspec für \"push\" angegeben, und push.default ist "
-"\"nothing\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19785,7 +19846,7 @@
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19799,7 +19860,7 @@
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19818,13 +19879,13 @@
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Aktualisierungen wurden zurückgewiesen, weil das Tag bereits\n"
 "im Remote-Repository existiert."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19834,7 +19895,7 @@
 "das kein Commit ist, oder es auf ein solches Objekt zeigen lassen, ohne\n"
 "die Option '--force' zu verwenden.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19846,103 +19907,103 @@
 "diese Änderungen vielleicht lokal integrieren (z. B. 'git pull ...') bevor\n"
 "Sie die Änderungen erzwingen.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Push nach %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "Fehler beim Versenden einiger Referenzen nach '%s'"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "Repository"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "alle Referenzen versenden"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "alle Referenzen spiegeln"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "Referenzen löschen"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "Tags versenden (kann nicht mit --all oder --mirror verwendet werden)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "Aktualisierung erzwingen"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<Referenzname>:<Erwartungswert>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "Referenz muss sich auf dem angegebenen Wert befinden"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "Aktualisierungen des Remote müssen lokal integriert werden"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "rekursiven \"push\" von Submodulen steuern"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "kleinere Pakete verwenden"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "'receive pack' Programm"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "Upstream für \"git pull/status\" setzen"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "lokal gelöschte Referenzen entfernen"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "\"pre-push hook\" umgehen"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "fehlende, aber relevante Tags versenden"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "signiert \"push\" mit GPG"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "Referenzen atomar versenden"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete ist inkompatibel mit --all, --mirror und --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete kann nur mit Referenzen verwendet werden"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "ungültiges Repository '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19964,27 +20025,27 @@
 "\n"
 "    git push <Name>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all und --tags sind inkompatibel"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all kann nicht mit Refspecs kombiniert werden"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror und --tags sind inkompatibel"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror kann nicht mit Refspecs kombiniert werden"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all und --mirror sind inkompatibel"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "Push-Optionen dürfen keine Zeilenvorschubzeichen haben"
 
@@ -20521,8 +20582,7 @@
 
 #: builtin/rebase.c:1411
 msgid "use 'merge-base --fork-point' to refine upstream"
-msgstr ""
-"'git merge-base --fork-point' benutzen, um Upstream-Branch zu bestimmen"
+msgstr "'merge-base --fork-point' benutzen, um Upstream-Branch zu bestimmen"
 
 #: builtin/rebase.c:1413
 msgid "use the given merge strategy"
@@ -20548,7 +20608,7 @@
 
 #: builtin/rebase.c:1442
 msgid "It looks like 'git am' is in progress. Cannot rebase."
-msgstr "'git-am' scheint im Gange zu sein. Kann Rebase nicht durchführen."
+msgstr "'git am' scheint im Gange zu sein. Kann Rebase nicht durchführen."
 
 #: builtin/rebase.c:1483
 msgid ""
@@ -20579,7 +20639,7 @@
 "Die --edit-todo Aktion kann nur während eines interaktiven Rebase verwendet "
 "werden."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Kann HEAD nicht lesen"
 
@@ -20690,8 +20750,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal: Branch/Commit '%s' nicht gefunden"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Referenz nicht gefunden: %s"
@@ -20761,7 +20821,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <Git-Verzeichnis>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20793,7 +20853,7 @@
 "setzen Sie die Konfigurationsvariable 'receive.denyCurrentBranch' auf\n"
 "'refuse'."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20814,11 +20874,11 @@
 "\n"
 "Um diese Meldung zu unterdrücken, setzen Sie die Variable auf 'refuse'."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "weniger Ausgaben"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Sie müssen ein Repository angeben."
 
@@ -20980,7 +21040,7 @@
 #: builtin/remote.c:148
 #, c-format
 msgid "unknown mirror argument: %s"
-msgstr "unbekanntes Argument für Option --mirror: %s"
+msgstr "unbekanntes Argument für Option mirror: %s"
 
 #: builtin/remote.c:164
 msgid "fetch the remote branches"
@@ -21813,15 +21873,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clean | forget <Pfad>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "saubere Auflösungen im Index registrieren"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "'git rerere forget' ohne Pfade ist veraltet"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "konnte kein Diff für '%s' generieren"
@@ -21947,7 +22007,7 @@
 
 #: builtin/reset.c:392
 msgid "-N can only be used with --mixed"
-msgstr "-N kann nur mit -mixed benutzt werden"
+msgstr "-N kann nur mit --mixed benutzt werden"
 
 #: builtin/reset.c:413
 msgid "Unstaged changes after reset:"
@@ -21976,20 +22036,20 @@
 msgid "Could not write new index file."
 msgstr "Konnte neue Index-Datei nicht schreiben."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 "--exclude-promisor-objects und --missing können nicht kombiniert werden."
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "Das Filtern von Objekten erfordert --objects."
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list unterstützt keine Anzeige von Notizen"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "markiertes Zählen ist inkompatibel mit der Option --objects"
 
@@ -22010,6 +22070,18 @@
 msgstr ""
 "Ausgabe in Langform mit Argumenten an den Optionen (getrennt durch '=')"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "frühzeitiges Ende der Eingabe"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "kein Verwendungstext vor dem `--' Separator angegeben"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Benötigte einen einzelnen Commit"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -22025,6 +22097,50 @@
 "Führen Sie \"git rev-parse --parseopt -h\" für weitere Informationen bei "
 "erster Verwendung aus."
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir benötigt ein Argument"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "kein Git-Verzeichnis '%s'"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path benötigt ein Argument"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n benötigt ein Argument"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format benötigt ein Argument"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "unbekanntes Argument für --path-format: %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default benötigt ein Argument"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix benötigt ein Argument"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "unbekannter Modus für --abbrev-ref: %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "unbekannter Modus für --show-object-format: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<Optionen>] <Commit-Angabe>..."
@@ -22532,37 +22648,37 @@
 msgid "failed to open '%s'"
 msgstr "Fehler beim Öffnen von '%s'"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "konnte Pfad '%s' nicht normalisieren"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <Muster>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "konnte Anführungszeichen von C-Style Zeichenkette '%s' nicht entfernen"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "konnte die existierenden Muster des partiellen Checkouts nicht laden"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "Muster von der Standard-Eingabe lesen"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "Fehler während der Aktualisierung des Arbeitsverzeichnisses."
 
@@ -22586,10 +22702,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <Branch> [<Stash>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22742,94 +22854,94 @@
 msgid "only show untracked files in the stash"
 msgstr "nur unversionierte Dateien im Stash anzeigen"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Kann nicht %s mit %s aktualisieren."
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "Stash-Beschreibung"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" erwartet ein Argument <Commit>"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Keine Änderungen ausgewählt"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Sie haben bisher noch keinen initialen Commit"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Kann den aktuellen Zustand des Index nicht speichern"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Kann die unversionierten Dateien nicht speichern"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Kann den aktuellen Zustand des Arbeitsverzeichnisses nicht speichern"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Kann Zustand des Arbeitsverzeichnisses nicht aufzeichnen"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 "Kann nicht gleichzeitig --patch und --include-untracked oder --all verwenden"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Haben Sie vielleicht 'git add' vergessen?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Keine lokalen Änderungen zum Speichern"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Kann \"stash\" nicht initialisieren"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Kann den aktuellen Status nicht speichern"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Arbeitsverzeichnis und Index-Status %s gespeichert."
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Kann Änderungen im Arbeitsverzeichnis nicht löschen"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "behalte Index"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "Stash in Patch-Modus"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "weniger Ausgaben"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "unversionierte Dateien in Stash einbeziehen"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "ignorierte Dateien einbeziehen"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22855,40 +22967,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "Kommentarzeichen mit Leerzeichen an jede Zeile voranstellen"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Vollständiger Referenzname erwartet, %s erhalten"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "'submodule--helper print-default-remote' erwartet keine Argumente."
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "Kann eine Komponente von URL '%s' nicht extrahieren"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "Alternativer Anker für relative Pfade"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<Pfad>] [<Pfad>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Keine URL für Submodul-Pfad '%s' in .gitmodules gefunden"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Betrete '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22897,7 +23010,7 @@
 "run_command gab nicht-Null Status für '%s' zurück.\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22909,20 +23022,20 @@
 "nicht-Null Status zurück.\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "Ausgaben beim Betreten eines Submodul-Befehls unterdrücken"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "Rekursion in verschachtelte Submodule durchführen"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <Befehl>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -22931,155 +23044,155 @@
 "Konnte Konfiguration '%s' nicht nachschlagen. Nehme an, dass dieses\n"
 "Repository sein eigenes verbindliches Upstream-Repository ist."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr ""
 "Fehler beim Eintragen der URL für Submodul-Pfad '%s' in die Konfiguration."
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submodul '%s' (%s) für Pfad '%s' in die Konfiguration eingetragen.\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "Warnung: 'update'-Modus für Submodul '%s' vorgeschlagen\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Fehler bei Änderung des Aktualisierungsmodus für Submodul-Pfad '%s' in der\n"
 "Konfiguration."
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "Ausgaben bei Initialisierung eines Submoduls unterdrücken"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<Optionen>] [<Pfad>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "Keine Submodul-Zuordnung in .gitmodules für Pfad '%s' gefunden"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "Konnte HEAD-Referenz nicht innerhalb des Submodul-Pfads '%s' auflösen."
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "Fehler bei Rekursion in Submodul '%s'."
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "Ausgabe des Submodul-Status unterdrücken"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
 "den Commit benutzen, der im Index gespeichert ist, statt den im Submodul HEAD"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<Pfad>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <Pfad>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodule)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodule)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "Hash eines Objektes von '%s' konnte nicht erzeugt werden"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "unerwarteter Modus %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr ""
 "benutze den Commit, der im Index gespeichert ist, statt vom Submodul HEAD"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr "um den Commit aus dem Index mit dem im Submodul HEAD zu vergleichen"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "den Commit aus dem Index mit dem im Submodul HEAD vergleichen"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr ""
 "überspringe Submodule, wo der 'ignore_config' Wert auf 'all' gesetzt ist"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "Größe der Zusammenfassung begrenzen"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<Optionen>] [<Commit>] [--] [<Pfad>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "konnte keinen Commit für HEAD holen"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached und --files schließen sich gegenseitig aus"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Synchronisiere Submodul-URL für '%s'\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "Fehler beim Registrieren der URL für Submodul-Pfad '%s'"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "Fehler beim Lesen des Standard-Remote-Repositories für Submodul '%s'"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "Fehler beim Aktualisieren des Remote-Repositories für Submodul '%s'"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "Ausgaben bei der Synchronisierung der Submodul-URLs unterdrücken"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<Pfad>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -23089,7 +23202,7 @@
 "(benutzen Sie 'rm -rf', wenn Sie dieses wirklich mitsamt seiner Historie\n"
 "löschen möchten)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -23098,49 +23211,49 @@
 "Arbeitsverzeichnis von Submodul in '%s' enthält lokale Änderungen;\n"
 "verwenden Sie '-f', um diese zu verwerfen."
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Verzeichnis '%s' bereinigt.\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Konnte Arbeitsverzeichnis des Submoduls in '%s' nicht löschen.\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "Konnte kein leeres Verzeichnis für Submodul in '%s' erstellen."
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submodul '%s' (%s) für Pfad '%s' ausgetragen.\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 "Arbeitsverzeichnisse von Submodulen löschen, auch wenn lokale Änderungen "
 "vorliegen"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "alle Submodule austragen"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<Pfad>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 "Verwenden Sie '--all', wenn Sie wirklich alle Submodule deinitialisieren\n"
 "möchten."
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -23153,46 +23266,69 @@
 "submodule.alternateErrorStrategy auf 'info' oder klone mit der Option\n"
 "'--reference-if-able' statt '--reference'."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "Submodul '%s' kann Alternative nicht hinzufügen: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Wert '%s' für submodule.alternateErrorStrategy wird nicht erkannt"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Wert '%s' für submodule.alternateLocation wird nicht erkannt."
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
+"Erstellung/Benutzung von '%s' in einem anderen Submodul-Git-Verzeichnis\n"
+"verweigert."
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "Klonen von '%s' in Submodul-Pfad '%s' fehlgeschlagen."
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "Verzeichnis ist nicht leer: '%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "Konnte Submodul-Verzeichnis '%s' nicht finden."
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "Pfad für neues Submodul"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "Name des neuen Submoduls"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "URL von der das Submodul geklont wird"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "Tiefe des Klons mit unvollständiger Historie (shallow)"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "Fortschrittsanzeige beim Klonen erzwingen"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "Klonen in ein nicht leeres Verzeichnis verbieten"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -23202,110 +23338,88 @@
 "<Repository>] [--name <Name>] [--depth <Tiefe>] [--single-branch] --url "
 "<URL> --path <Pfad>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr ""
-"Erstellung/Benutzung von '%s' in einem anderen Submodul-Git-Verzeichnis\n"
-"verweigert."
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "Klonen von '%s' in Submodul-Pfad '%s' fehlgeschlagen."
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "Verzeichnis ist nicht leer: '%s'"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "Konnte Submodul-Verzeichnis '%s' nicht finden."
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Ungültiger Aktualisierungsmodus '%s' für Submodul-Pfad '%s'."
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Ungültiger Aktualisierungsmodus '%s' für Submodul-Pfad '%s' konfiguriert."
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Submodul-Pfad '%s' nicht initialisiert"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Meinten Sie vielleicht 'update --init'?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Überspringe nicht zusammengeführtes Submodul %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Überspringe Submodul '%s'"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Fehler beim Klonen von '%s'. Weiterer Versuch geplant"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Zweiter Versuch '%s' zu klonen fehlgeschlagen, breche ab."
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "Pfad zum Arbeitsverzeichnis"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 "Pfad zum Arbeitsverzeichnis, über verschachtelte Submodul-Grenzen hinweg"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout oder none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 "einen Klon mit unvollständiger Historie (shallow) erstellen, abgeschnitten "
 "bei der angegebenen Anzahl von Commits"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "Parallele Ausführungen"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr ""
 "ob das initiale Klonen den Empfehlungen für eine unvollständige\n"
 "Historie (shallow) folgen soll"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "keine Fortschrittsanzeige beim Klonen"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<Pfad>] [<Pfad>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
-msgstr "Fehlerhafter Wert für --update Parameter"
+msgstr "Fehlerhafter Wert für update Parameter"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -23314,86 +23428,147 @@
 "Branch von Submodul (%s) ist konfiguriert, den Branch des Hauptprojektes\n"
 "zu erben, aber das Hauptprojekt befindet sich auf keinem Branch."
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "Konnte kein Repository-Handle für Submodul '%s' erhalten."
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "Rekursion in Submodule durchführen"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<Optionen>] [<Pfad>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "prüfen, ob es sicher ist, in die Datei .gitmodules zu schreiben"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "Konfiguration in der .gitmodules-Datei entfernen"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <name> [<Wert>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <Name>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 "Bitte stellen Sie sicher, dass sich die Datei .gitmodules im "
 "Arbeitsverzeichnis befindet."
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "Ausgaben beim Setzen der URL eines Submoduls unterdrücken"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <Pfad> <neue URL>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "Standard-Tracking-Branch auf master setzen"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "Standard-Tracking-Branch setzen"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) [<Pfad>]"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <Branch> <Pfad>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "Option --branch oder --default erforderlich"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch und --default schließen sich gegenseitig aus"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Füge existierendes Repository in '%s' dem Index hinzu\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' existiert bereits und ist kein gültiges Git-Repository"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr ""
+"Ein Git-Verzeichnis für '%s' wurde lokal gefunden mit den Remote-"
+"Repositories:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Wenn Sie das lokale Git-Verzeichnis wiederverwenden wollen, anstatt erneut "
+"von\n"
+"  %s\n"
+"zu klonen, benutzen Sie die Option '--force'. Wenn das lokale Git-"
+"Verzeichnis\n"
+"nicht das korrekte Repository ist oder Sie unsicher sind, was das bedeutet,\n"
+"wählen Sie einen anderen Namen mit der Option '--name'.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Reaktiviere lokales Git-Verzeichnis für Submodul '%s'\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "Kann Submodul '%s' nicht auschecken"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "Branch des Repositories zum Auschecken beim Klonen"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "das Hinzufügen eines andernfalls ignorierten Submodul-Pfads erlauben"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<Optionen>...] --url <URL> --path <Pfad> --"
+"name <Name>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s unterstützt kein --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' ist kein gültiger Unterbefehl von submodule--helper"
@@ -24043,7 +24218,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <Pfad>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "Fehler beim Löschen von '%s'"
@@ -24053,25 +24228,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "Entferne %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "entfernte Arbeitsverzeichnisse ausgeben"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "Arbeitsverzeichnisse älter als <Zeit> verfallen lassen"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existiert bereits"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "nicht nutzbares Ziel des Arbeitsverzeichnisses '%s'"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -24081,7 +24256,7 @@
 "Benutzen Sie '%s -f -f' zum Überschreiben, oder 'unlock' und 'prune'\n"
 "oder 'remove' zum Löschen."
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -24091,27 +24266,31 @@
 "Benutzen Sie '%s -f' zum Überschreiben, oder 'prune' oder 'remove' zum\n"
 "Löschen."
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht erstellen."
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "initialisiere"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (neuer Branch '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Bereite Arbeitsverzeichnis vor (setze Branch '%s' um; war bei %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (checke '%s' aus)"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Bereite Arbeitsverzeichnis vor (losgelöster HEAD %s)"
@@ -24138,90 +24317,98 @@
 msgid "keep the new working tree locked"
 msgstr "das neue Arbeitsverzeichnis gesperrt lassen"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "Sperrgrund"
+
+#: builtin/worktree.c:495
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "Modus zum Folgen von Branches einstellen (siehe git-branch(1))"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:498
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 "versuchen, eine Übereinstimmung des Branch-Namens mit einem\n"
 "Remote-Tracking-Branch herzustellen"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:506
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B und --detach schließen sich gegenseitig aus"
 
-#: builtin/worktree.c:565
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason benötigt --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "mit --lock hinzugefügt"
+
+#: builtin/worktree.c:574
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 "--[no]-track kann nur verwendet werden, wenn ein neuer Branch erstellt wird."
 
-#: builtin/worktree.c:682
+#: builtin/worktree.c:691
 msgid "show extended annotations and reasons, if available"
 msgstr "erweiterte Anmerkungen und Gründe anzeigen, falls vorhanden"
 
-#: builtin/worktree.c:684
+#: builtin/worktree.c:693
 msgid "add 'prunable' annotation to worktrees older than <time>"
 msgstr ""
 "'prunable'-Anmerkung zu Arbeitsverzeichnissen älter als <Zeit> hinzufügen"
 
-#: builtin/worktree.c:693
+#: builtin/worktree.c:702
 msgid "--verbose and --porcelain are mutually exclusive"
 msgstr "--verbose und --porcelain schließen sich gegenseitig aus"
 
-#: builtin/worktree.c:720
-msgid "reason for locking"
-msgstr "Sperrgrund"
-
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' ist kein Arbeitsverzeichnis"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Das Hauptarbeitsverzeichnis kann nicht gesperrt oder entsperrt werden."
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ist bereits gesperrt, Grund: %s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ist bereits gesperrt"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' ist nicht gesperrt"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "Arbeitsverzeichnisse, die Submodule enthalten, können nicht verschoben oder\n"
 "entfernt werden."
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 "Verschieben erzwingen, auch wenn das Arbeitsverzeichnis geändert oder "
 "gesperrt ist"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' ist ein Hauptarbeitsverzeichnis"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "Konnte Zielname aus '%s' nicht bestimmen."
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -24231,7 +24418,7 @@
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -24240,40 +24427,40 @@
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitszeichnis nicht verschieben: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "Fehler beim Verschieben von '%s' nach '%s'"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "Fehler beim Ausführen von 'git status' auf '%s'"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' enthält geänderte oder nicht versionierte Dateien, benutzen Sie --force "
 "zum Löschen"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "Fehler beim Ausführen von 'git status' auf '%s'. Code: %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 "Löschen erzwingen, auch wenn das Arbeitsverzeichnis geändert oder gesperrt "
 "ist"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -24283,7 +24470,7 @@
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -24292,17 +24479,17 @@
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitsverzeichnis nicht löschen: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "repariere: %s: %s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "Fehler: %s: %s"
@@ -24646,7 +24833,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Konnte SSL-Backend nicht zu '%s' setzen: bereits gesetzt"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -24696,97 +24883,97 @@
 msgid "redirecting to %s"
 msgstr "Umleitung nach %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "sollte kein EOF haben, wenn nicht behutsam mit EOF"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "Server sendete zustandslosen Separator"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "Remote Server sendete unerwartetes Antwort-Endpaket"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 "konnte nicht RPC-POST-Daten zurückspulen - Versuchen Sie http.postBuffer zu "
 "erhöhen"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: ungültiges Zeichen für Zeilenlänge: %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: unerwartetes Antwort-Endpaket"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC fehlgeschlagen; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "Kann solche großen Übertragungen nicht verarbeiten."
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "Kann Request nicht komprimieren; \"zlib deflate\"-Fehler %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "Kann Request nicht komprimieren; \"zlib end\"-Fehler %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "%d Bytes des Längen-Headers wurden empfangen"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "%d Bytes des Bodys werden noch erwartet"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "Dumb HTTP-Transport unterstützt keine shallow-Funktionen"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "\"fetch\" fehlgeschlagen."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "Kann SHA-1 nicht über Smart-HTTP anfordern"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "Protokollfehler: SHA-1/Referenz erwartet, '%s' bekommen"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "HTTP-Transport unterstützt nicht %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "\"git-http-push\" fehlgeschlagen"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: Verwendung: git remote-curl <Remote-Repository> [<URL>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: Fehler beim Lesen des Kommando-Streams von Git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: \"fetch\" ohne lokales Repository versucht"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: Unbekannter Befehl '%s' von Git"
@@ -25666,72 +25853,27 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' hat keinen Commit ausgecheckt"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "Füge existierendes Repository in '$sm_path' dem Index hinzu."
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Repository"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-"Ein Git-Verzeichnis für '$sm_name' wurde lokal gefunden mit den Remote-"
-"Repositories:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Wenn Sie das lokale Git-Verzeichnis wiederverwenden wollen, anstatt erneut "
-"von\n"
-"  $realrepo\n"
-"zu klonen, benutzen Sie die Option '--force'. Wenn das lokale Git-"
-"Verzeichnis\n"
-"nicht das korrekte Repository ist oder Sie unsicher sind, was das bedeutet,\n"
-"wählen Sie einen anderen Namen mit der Option '--name'."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "Reaktiviere lokales Git-Verzeichnis für Submodul '$sm_name'."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Kann Submodul '$sm_path' nicht auschecken"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Hinzufügen von Submodul '$sm_path' fehlgeschlagen"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Fehler beim Eintragen von Submodul '$sm_path' in die Konfiguration."
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Konnte aktuellen Commit in Submodul-Pfad '$displaypath' nicht finden."
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Konnte \"fetch\" in Submodul-Pfad '$sm_path' nicht ausführen"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -25740,7 +25882,7 @@
 "Konnte aktuellen Commit von ${remote_name}/${branch} in Submodul-Pfad\n"
 "'$sm_path' nicht finden."
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
@@ -25749,7 +25891,7 @@
 "Konnte \"fetch\" in Submodul-Pfad '$displaypath' nicht ausführen. Versuche "
 "$sha1 direkt anzufordern:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -25758,49 +25900,49 @@
 "\"fetch\" in Submodul-Pfad '$displaypath' ausgeführt, aber $sha1 nicht\n"
 "enthalten. Direktes Anfordern dieses Commits ist fehlgeschlagen."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Konnte '$sha1' in Submodul-Pfad '$displaypath' nicht auschecken."
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Submodul-Pfad: '$displaypath': '$sha1' ausgecheckt"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Rebase auf '$sha1' in Submodul-Pfad '$displaypath' nicht möglich"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Submodul-Pfad '$displaypath': Rebase auf '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Merge von '$sha1' in Submodul-Pfad '$displaypath' fehlgeschlagen"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Submodul-Pfad '$displaypath': zusammengeführt in '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Ausführung von '$command $sha1' in Submodul-Pfad '$displaypath' "
 "fehlgeschlagen"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Submodul-Pfad '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Fehler bei Rekursion in Submodul-Pfad '$displaypath'"
@@ -26565,41 +26707,41 @@
 msgid "invalid argument %s, expecting --"
 msgstr "ungültiges Argument %s, erwarte --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr ""
 "lokale Zeitzone unterscheidet sich von GMT nicht um ein Minutenintervall\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "lokaler Zeit-Offset größer oder gleich 24 Stunden\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "fatal: Befehl '%s' mit Exit-Code %d beendet"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "Der Editor wurde unsauber beendet, breche alles ab."
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 "'%s' enthält eine Zwischenversion der E-Mail, die Sie gerade verfassen.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' enthält die verfasste E-Mail.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases ist mit anderen Optionen inkompatibel\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -26611,12 +26753,12 @@
 "Setzen Sie sendemail.forbidSendmailVariables auf 'false', um diese Prüfung "
 "zu deaktivieren.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr ""
 "Kann 'git format-patch' nicht außerhalb eines Repositories ausführen.\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -26625,38 +26767,38 @@
 "Kommandozeile\n"
 "oder Konfigurationsoption)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Unbekanntes --suppress-cc Feld: '%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Unbekannte --confirm Einstellung: '%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr ""
 "Warnung: sendemail-Alias mit Anführungszeichen wird nicht unterstützt: %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "Warnung: `:include:` wird nicht unterstützt: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "Warnung: `/file` oder `|pipe` Umleitung wird nicht unterstützt: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "Warnung: sendmail Zeile wird nicht erkannt: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -26673,12 +26815,12 @@
 "    * die Option --format-patch angeben, wenn Sie einen Commit-Bereich "
 "meinen.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Fehler beim Öffnen von %s: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -26688,17 +26830,17 @@
 "Keine Patch-Dateien angegeben!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Keine Betreffzeile in %s?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Fehler beim Öffnen von '%s' zum Schreiben: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26713,27 +26855,27 @@
 "Leeren Sie den Inhalt des Bodys, wenn Sie keine Zusammenfassung senden "
 "möchten.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Fehler beim Öffnen von %s: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Fehler beim Öffnen von %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "E-Mail mit Zusammenfassung ist leer, wird ausgelassen\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Sind Sie sich sicher, <%s> zu benutzen [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
@@ -26741,11 +26883,11 @@
 "Die folgenden Dateien sind 8-Bit, aber deklarieren kein\n"
 "Content-Transfer-Encoding.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Welches 8-Bit-Encoding soll deklariert werden [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26759,22 +26901,22 @@
 "an,\n"
 "wenn Sie den Patch wirklich versenden wollen.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "An wen sollen die E-Mails versendet werden (wenn überhaupt jemand)?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "fatal: Alias '%s' erweitert sich zu sich selbst\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "Message-ID zur Verwendung als In-Reply-To für die erste E-Mail (wenn eine "
 "existiert)? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "Fehler: konnte keine gültige Adresse aus %s extrahieren\n"
@@ -26782,18 +26924,18 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr ""
 "Was soll mit dieser Adresse geschehen? (Beenden [q]|Löschen [d]|Bearbeiten "
 "[e]): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "CA Pfad \"%s\" existiert nicht"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26822,117 +26964,117 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 "Diese E-Mail versenden? (Ja [y]|Nein [n]|Bearbeiten [e]|Beenden [q]|Alle "
 "[a]): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Zum Versenden dieser E-Mail ist eine Antwort erforderlich."
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Der erforderliche SMTP-Server ist nicht korrekt definiert."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Server unterstützt kein STARTTLS! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS fehlgeschlagen! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Konnte SMTP nicht korrekt initialisieren. Bitte prüfen Sie Ihre "
 "Konfiguration\n"
 "und benutzen Sie --smtp-debug."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Fehler beim Senden %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Probeversand %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "%s gesendet\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Probeversand OK. Log enthält:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. Log enthält:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Ergebnis: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Ergebnis: OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "Kann Datei %s nicht öffnen"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Füge cc: hinzu: %s von Zeile '%s'\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Füge to: hinzu: %s von Zeile '%s'\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Füge cc: hinzu: %s von Zeile '%s'\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Füge cc: hinzu: %s von Zeile '%s'\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Konnte '%s' nicht ausführen"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Füge %s: %s hinzu von: '%s'\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) Fehler beim Schließen der Pipe nach '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "Kann Nachricht nicht als 7bit versenden."
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "Ungültiges Transfer-Encoding"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26943,12 +27085,12 @@
 "%s\n"
 "Warnung: Es wurden keine Patches gesendet\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "konnte %s nicht öffnen: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26957,13 +27099,13 @@
 "fatal: %s:%d ist länger als 998 Zeichen\n"
 "Warnung: Es wurden keine Patches gesendet\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "Lasse %s mit Backup-Suffix '%s' aus.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Wollen Sie %s wirklich versenden? [y|N]: "
diff --git a/po/es.po b/po/es.po
index c1c2613..d7c555e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,24 +7,24 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-06-05 19:31-0500\n"
-"Last-Translator: christopher.diaz.riv@gmail.com\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 11:37-0500\n"
+"Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
 "Language-Team: CodeLabora <codelabora@gmail.com>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.4.3\n"
+"X-Generator: Poedit 3.0\n"
 
 #: add-interactive.c:376
 #, c-format
 msgid "Huh (%s)?"
 msgstr "¿Ahh (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "no se pudo leer índice"
@@ -53,7 +53,7 @@
 msgid "could not stage '%s'"
 msgstr "no se pudo poner en stage '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "no se pudo escribir índice"
 
@@ -111,12 +111,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignorando lo no fusionado: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Solo cambiaron archivos binarios.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Sin cambios.\n"
@@ -143,7 +143,7 @@
 
 #: add-interactive.c:1016
 msgid "pick hunks and update selectively"
-msgstr "elegir hunks y actualizar de forma selectiva"
+msgstr "elegir fragmentos y actualizar de forma selectiva"
 
 #: add-interactive.c:1018
 msgid "view diff between HEAD and index"
@@ -168,7 +168,7 @@
 
 #: add-interactive.c:1034
 msgid "select multiple ranges"
-msgstr "selecciona multiples rangos"
+msgstr "selecciona múltiples rangos"
 
 #: add-interactive.c:1036 add-interactive.c:1081
 msgid "select item based on unique prefix"
@@ -194,13 +194,13 @@
 msgid "(empty) select nothing"
 msgstr "(vacío) selecciona nada"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
-msgstr "Ahora que"
+msgstr "Ahora qué"
 
 #: add-interactive.c:1144 git-add--interactive.perl:213
 msgid "staged"
@@ -210,21 +210,22 @@
 msgid "unstaged"
 msgstr "no rastreado"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "ruta"
 
 #: add-interactive.c:1151
 msgid "could not refresh index"
-msgstr "no se pudo refrescar el index"
+msgstr "no se pudo refrescar el índice"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Adiós.\n"
@@ -247,14 +248,14 @@
 #: add-patch.c:37 git-add--interactive.perl:1434
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar stage a este hunk [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar stage a este fragmento [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado inmediatamente "
+"Si el parche aplica limpiamente, el fragmento editado será marcado inmediatamente "
 "para el área de stage."
 
 #: add-patch.c:42
@@ -265,22 +266,22 @@
 "a - stage this hunk and all later hunks in the file\n"
 "d - do not stage this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar stage a este hunk\n"
-"n - no aplicar stage a este hunk\n"
-"q - quit; no aplicar stage a este hunk ni ninguno de los restantes\n"
-"a - aplicar stage a este hunk y a todos los posteriores en el archivo\n"
-"d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
+"y - aplicar stage a este fragmento\n"
+"n - no aplicar stage a este fragmento\n"
+"q - quit; no aplicar stage a este fragmento ni ninguno de los restantes\n"
+"a - aplicar stage a este fragmento y a todos los posteriores en el archivo\n"
+"d - no aplicar stage a este fragmento o a ninguno de los posteriores en este "
 "archivo\n"
 
 #: add-patch.c:56 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar stash al cambio de modo [y,n,q,a,d%s,?]? "
+msgstr "¿Hacer stash al cambio de modo [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:57 git-add--interactive.perl:1438
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar stash al borrado [y,n,q,a,d%s,?]? "
+msgstr "¿Hacer stash a la eliminación [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:58 git-add--interactive.perl:1439
 #, c-format, perl-format
@@ -290,15 +291,15 @@
 #: add-patch.c:59 git-add--interactive.perl:1440
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar stash a este hunk [y,n,q,a,d%s,?]? "
+msgstr "¿Hacer stash a este fragmento [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado inmediatamente "
-"para aplicar stash."
+"Si el parche aplica limpiamente, el fragmento editado será marcado inmediatamente "
+"para hacer stash."
 
 #: add-patch.c:64
 msgid ""
@@ -308,11 +309,11 @@
 "a - stash this hunk and all later hunks in the file\n"
 "d - do not stash this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar stash a este hunk\n"
-"n - no aplicar stash a este hunk\n"
-"q - quit; no aplicar stash a este hunk o a ninguno de los restantes\n"
-"a - aplicar stash a este hunk y a todos los posteriores en el archivo\n"
-"d - no aplicar stash a este hunk ni ninguno de los posteriores en el archivo\n"
+"y - hacer stash a este fragmento\n"
+"n - no hacer stash a este fragmento\n"
+"q - quit; no hacer stash a este fragmento o a ninguno de los restantes\n"
+"a - hacer stash a este fragmento y a todos los posteriores en el archivo\n"
+"d - no hacer stash a este fragmento ni ninguno de los posteriores en el archivo\n"
 
 #: add-patch.c:80 git-add--interactive.perl:1443
 #, c-format, perl-format
@@ -332,14 +333,14 @@
 #: add-patch.c:83 git-add--interactive.perl:1446
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
-msgstr "¿Sacar este hunk del stage [y,n,q,a,d%s,?]? "
+msgstr "¿Sacar este fragmento del stage [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado inmediatamente "
+"Si el parche aplica limpiamente, el fragmento editado será marcado inmediatamente "
 "para sacar del área de stage."
 
 #: add-patch.c:88
@@ -351,10 +352,10 @@
 "d - do not unstage this hunk or any of the later hunks in the file\n"
 msgstr ""
 "y - sacar desde hunk del área de stage\n"
-"n - no sacar este hunk del area de stage\n"
-"q - quit; no sacar del area de stage este hunk ni ninguno de los restantes\n"
-"a - sacar del area de stage este hunk y todos los posteriores en el archivo\n"
-"d - no sacar del area de stage este hunk ni ninguno de los posteriores en el "
+"n - no sacar este fragmento del area de stage\n"
+"q - quit; no sacar del area de stage este fragmento ni ninguno de los restantes\n"
+"a - sacar del area de stage este fragmento y todos los posteriores en el archivo\n"
+"d - no sacar del area de stage este fragmento ni ninguno de los posteriores en el "
 "archivo\n"
 
 #: add-patch.c:103 git-add--interactive.perl:1449
@@ -375,14 +376,14 @@
 #: add-patch.c:106 git-add--interactive.perl:1452
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar este hunk al índice [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar este fragmetno al índice [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:108 add-patch.c:176 add-patch.c:221
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "applying."
 msgstr ""
-"Si el parche aplica de forma limpia, el hunk editado será marcado "
+"Si el parche aplica de forma limpia, el fragmento editado será marcado "
 "inmediatamente para aplicar."
 
 #: add-patch.c:111
@@ -393,11 +394,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este hunk al índice\n"
-"n - no aplicar este hunk al índice\n"
-"q - quit; no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunko ninguno de los posteriores en el archivo\n"
+"y - aplicar este fragmento al índice\n"
+"n - no aplicar este fragmento al índice\n"
+"q - quit; no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los posteriores en el archivo\n"
 
 #: add-patch.c:126 git-add--interactive.perl:1455
 #: git-add--interactive.perl:1473
@@ -421,14 +422,14 @@
 #: git-add--interactive.perl:1476
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
-msgstr "¿Descartar este hunk del árbol de trabajo [y,n,q,a,d%s,?]? "
+msgstr "¿Descartar este fragmento del árbol de trabajo [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:131 add-patch.c:154 add-patch.c:199
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "discarding."
 msgstr ""
-"Si el parche aplica de forma limpia, el hunk editado será marcado "
+"Si el parche aplica de forma limpia, el fragmento editado será marcado "
 "inmediatamente para descarte."
 
 #: add-patch.c:134 add-patch.c:202
@@ -439,11 +440,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - descartar este hunk del árbol de trabajo\n"
-"n - no descartar este hunk del árbol de trabajo\n"
-"q - quit; no descartar este hunk ni ninguno de los que restantes\n"
-"a - descartar este hunk y todos los posteriores en este archivo\n"
-"d - no descartar este hunk ni ninguno de los posteriores en el archivo\n"
+"y - descartar este fragmento del árbol de trabajo\n"
+"n - no descartar este fragmento del árbol de trabajo\n"
+"q - quit; no descartar este fragmento ni ninguno de los restantes\n"
+"a - descartar este fragmento y todos los posteriores en este archivo\n"
+"d - no descartar este fragmento ni ninguno de los posteriores en el archivo\n"
 
 #: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
 #, c-format, perl-format
@@ -465,7 +466,7 @@
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
-"¿Descartar este hunk del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
+"¿Descartar este fragmento del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:157
 msgid ""
@@ -475,11 +476,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - descartar este hunk del índice y el árbol de trabajo\n"
-"n - no descartar este hunk del índice ni el árbol de trabajo\n"
-"q - quit; no descartar este hunk ni ninguno de los que queden\n"
-"a - descartar este hunk y todos los posteriores en este archivo\n"
-"d - no descartar este hunk ni ninguno posterior en el archivo\n"
+"y - descartar este fragmento del índice y el árbol de trabajo\n"
+"n - no descartar este fragmento del índice ni el árbol de trabajo\n"
+"q - quit; no descartar este fragmento ni ninguno de los que queden\n"
+"a - descartar este fragmento y todos los posteriores en este archivo\n"
+"d - no descartar este fragmento ni ninguno posterior en el archivo\n"
 
 #: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
 #, c-format, perl-format
@@ -501,7 +502,7 @@
 #: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar este hunk al índice y árbol de trabajo [y,n,q,a,d,/%s,?]? "
+msgstr "¿Aplicar este fragmento al índice y árbol de trabajo [y,n,q,a,d,/%s,?]? "
 
 #: add-patch.c:179
 msgid ""
@@ -511,11 +512,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este hunk al índice y al árbol de trabajo\n"
-"n - no aplicar este hunk al índice y al árbol de trabajo\n"
-"q - quit;  no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunk ni ninguno de los siguientes en este archivo\n"
+"y - aplicar este fragmento al índice y al árbol de trabajo\n"
+"n - no aplicar este fragmento al índice y al árbol de trabajo\n"
+"q - quit;  no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los siguientes en este archivo\n"
 
 #: add-patch.c:224
 msgid ""
@@ -525,40 +526,40 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
-"y - aplicar este hunk al índice y al árbol de trabajo\n"
-"n - no aplicar este hunk al índice y al árbol de trabajo\n"
-"q - quit;  no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunk ni ninguno de los siguientes en este archivo\n"
+"y - aplicar este fragmento al índice y al árbol de trabajo\n"
+"n - no aplicar este fragmento al índice y al árbol de trabajo\n"
+"q - quit;  no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los siguientes en este archivo\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "no se puede analizar diff"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "no se pudo analizar diff a colores"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "falló al ejecutar '%s'"
 
-#: add-patch.c:611
-msgid "mismatched output from interactive.diffFilter"
-msgstr "output de interactive.diffFilter no concuerda"
-
 #: add-patch.c:612
+msgid "mismatched output from interactive.diffFilter"
+msgstr "salida de interactive.diffFilter no concuerda"
+
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -566,7 +567,7 @@
 "Tu filtro tiene que mantener correspondencia de uno a uno\n"
 "entre las líneas de entrada y salida."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -575,7 +576,7 @@
 "se esperaba línea de contexto #%d en\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -583,16 +584,16 @@
 "\tdoes not end with:\n"
 "%.*s"
 msgstr ""
-"hunks no hacen overlap:\n"
+"hunks no se superponen:\n"
 "%.*s\n"
 "\tno acaba con:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Modo de edición manual de hunk -- vea abajo para una guía rápida.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -603,24 +604,24 @@
 "---\n"
 "Para eliminar '%c' líneas, haga de ellas líneas  ' '  (contexto).\n"
 "Para eliminar '%c' líneas, bórrelas.\n"
-"Lineas comenzando con %c serán eliminadas.\n"
+"Líneas comenzando con %c serán eliminadas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
 "aborted and the hunk is left unchanged.\n"
 msgstr ""
 "Si esto no aplica de manera limpia, se te da la oportunidad de\n"
-"editar nuevamente. Si todas las líneas del hunk son eliminadas, entonces\n"
-"la edición es abortada y el hunk queda sin cambios.\n"
+"editar nuevamente. Si todas las líneas del fragmento son eliminadas, entonces\n"
+"la edición es abortada y el fragmento queda sin cambios.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "no se puede analizar hunk header"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "falló 'git apply --cached'"
 
@@ -636,26 +637,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Tu hunk editado no aplica. ¿Editar nuevamente (¡decir \"no\" descarta!) [y/"
 "n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "¡Los hunks seleccionados no aplican al índice!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "¿Aplicarlos al árbol de trabajo de todas maneras? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Nada fue aplicado.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -667,79 +668,79 @@
 "e - manually edit the current hunk\n"
 "? - print help\n"
 msgstr ""
-"j - deja este hunk sin decidir, ver el siguiente hunk sin decisión\n"
-"J - deja este hunk sin decidir, ver siguiente hunk\n"
-"k - deja este hunk sin decidir, ver hunk previo sin decidir\n"
-"K - deja este hunk sin decidir, ver hunk anterior\n"
-"g - selecciona un hunk a dónde ir\n"
-"/ - buscar un hunk que cumpla con el regex dado\n"
-"s - separar el hunk actual en más pequeños\n"
-"e - editar manualmente el hunk actual\n"
+"j - deja este fragmento sin decidir, ver el siguiente fragmento sin decisión\n"
+"J - deja este fragmento sin decidir, ver siguiente fragmento \n"
+"k - deja este fragmento sin decidir, ver fragmento previo sin decidir\n"
+"K - deja este fragmento sin decidir, ver fragmento anterior\n"
+"g - selecciona un fragmento a dónde ir\n"
+"/ - buscar un fragmento que cumpla con el regex dado\n"
+"s - separar el fragmento actual en más pequeños\n"
+"e - editar manualmente el fragmento actual\n"
 "? - imprimir ayuda\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
-msgstr "No hay hunk anterior"
+msgstr "No hay fragmento anterior"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
-msgstr "No hay hunk siguiente"
+msgstr "No hay fragmento siguiente"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
-msgstr "No hay más pedazos a que ir"
+msgstr "No hay más fragmentos a que ir"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
-msgstr "¿a que hunk ir (<enter> para ver más)? "
+msgstr "¿a qué fragmento ir (<enter> para ver más)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
-msgstr "¿a que hunk ir? "
+msgstr "¿a qué fragmento ir? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
-msgstr "Numero inválido: '%s'"
+msgstr "Número inválido: '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
-msgstr[0] "Lo siento, solo %d hunk disponible."
-msgstr[1] "Lo siento, solo %d hunks disponibles."
+msgstr[0] "Lo siento, solo %d fragmento disponible."
+msgstr[1] "Lo siento, solo %d fragmentos disponibles."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
-msgstr "No hay más pedazos para buscar"
+msgstr "No hay más fragmentos para buscar"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "¿buscar para regexp? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Regexp para la búsqueda mal formado %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
-msgstr "No hay hunks que concuerden con el patrón entregado"
+msgstr "No hay fragmentos que concuerden con el patrón entregado"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Perdón, no se puede dividir este pedazo"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
-msgstr "Cortar en %d hunk."
+msgstr "Cortar en %d fragmentos."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Perdón, no se puede editar este pedazo"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "falló 'git apply'"
 
@@ -795,7 +796,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Saliendo porque existe un conflicto sin resolver."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "No has concluido tu fusión (MERGE_HEAD existe)."
 
@@ -922,21 +923,21 @@
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
 msgstr ""
-"git apply: git-diff erróneo - se esperaba /dev/null, se encontró %s en la"
+"git apply: git-diff erróneo - se esperaba /dev/null, se encontró %s en la "
 "línea %d"
 
 #: apply.c:927
 #, c-format
 msgid "git apply: bad git-diff - inconsistent new filename on line %d"
 msgstr ""
-"git apply: git-diff erróneo - nuevo nombre de archivo inconsistente en la"
+"git apply: git-diff erróneo - nuevo nombre de archivo inconsistente en la "
 "línea %d"
 
 #: apply.c:928
 #, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
 msgstr ""
-"git apply: git-diff erróneo - viejo nombre de archivo inconsistente en la"
+"git apply: git-diff erróneo - viejo nombre de archivo inconsistente en la "
 "línea %d"
 
 #: apply.c:933
@@ -963,11 +964,11 @@
 "git diff header lacks filename information when removing %d leading pathname "
 "components (line %d)"
 msgstr[0] ""
-"el header de git diff carece de información del nombre del archivo cuando"
-"se elimina %d componente principal de la ruta (línea %d)"
+"el header de git diff carece de información del nombre del archivo cuando se "
+"elimina %d componente principal de la ruta (línea %d)"
 msgstr[1] ""
-"los headers de git diff carecen de información del  nombre del archivo cuando"
-"se eliminan %d componentes principales (línea %d)"
+"los headers de git diff carecen de información del nombre del archivo cuando "
+"se eliminan %d componentes principales de la ruta (línea %d)"
 
 #: apply.c:1384
 #, c-format
@@ -1074,7 +1075,7 @@
 #, c-format
 msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
 msgstr ""
-"no se puede revertir-aplicar un parche binario sin el hunk revertido a '%s'"
+"no se puede revertir-aplicar un parche binario sin el fragmento revertido a '%s'"
 
 #: apply.c:3151
 #, c-format
@@ -1196,8 +1197,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s tiene tipo %o, se esperaba %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "ruta inválida '%s'"
@@ -1288,7 +1289,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "no es posible agregar una entrada en el cache para %s"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "falló escribir a '%s'"
@@ -1380,7 +1381,7 @@
 msgstr[1] ""
 "%d líneas aplicadas después de arreglar los errores de espacios en blanco."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "No es posible escribir el archivo índice"
 
@@ -1392,7 +1393,7 @@
 msgid "apply changes matching the given path"
 msgstr "aplicar cambios que concuerden con la ruta suministrada"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "num"
 
@@ -1410,7 +1411,7 @@
 
 #: apply.c:5010
 msgid "show number of added and deleted lines in decimal notation"
-msgstr "mostrar el numero de líneas agregadas y eliminadas en notación decimal"
+msgstr "mostrar el número de líneas agregadas y eliminadas en notación decimal"
 
 #: apply.c:5012
 msgid "instead of applying the patch, output a summary for the input"
@@ -1422,7 +1423,7 @@
 
 #: apply.c:5016
 msgid "make sure the patch is applicable to the current index"
-msgstr "asegurar que el parche es aplicable al índice actual"
+msgstr "asegurar que el parche sea aplicable al índice actual"
 
 #: apply.c:5018
 msgid "mark new files with `git add --intent-to-add`"
@@ -1438,7 +1439,7 @@
 
 #: apply.c:5025
 msgid "also apply the patch (use with --stat/--summary/--check)"
-msgstr "también aplicar el parche (usar con --stat/--summary/--check"
+msgstr "también aplicar el parche (usar con --stat/--summary/--check)"
 
 #: apply.c:5027
 msgid "attempt three-way merge, fall back on normal patch if that fails"
@@ -1456,11 +1457,11 @@
 
 #: apply.c:5034
 msgid "ensure at least <n> lines of context match"
-msgstr "asegurar que al menos concuerden <n> líneas del contexto concuerden"
+msgstr "asegurar que al menos <n> líneas del contexto concuerden"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "acción"
@@ -1493,8 +1494,8 @@
 msgstr "permitir solapamiento de hunks"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ser verboso"
 
@@ -1506,9 +1507,9 @@
 
 #: apply.c:5057
 msgid "do not trust the line counts in the hunk headers"
-msgstr "no confiar en el conteo de líneas en los headers del hunk"
+msgstr "no confiar en el conteo de líneas en los headers del fragmento"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "raíz"
 
@@ -1548,9 +1549,9 @@
 #: archive-zip.c:322
 #, c-format
 msgid "path too long (%d chars, SHA1: %s): %s"
-msgstr "ruta demasiado larga (%d chars, SHA1: %s): %s"
+msgstr "ruta demasiada larga (%d chars, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "error al desinflar (%d)"
@@ -1558,7 +1559,7 @@
 #: archive-zip.c:603
 #, c-format
 msgid "timestamp too large for this system: %<PRIuMAX>"
-msgstr "timestamp demasiado largo para este sistema: %<PRIuMAX>"
+msgstr "timestamp demasiado grande para este sistema: %<PRIuMAX>"
 
 #: archive.c:14
 msgid "git archive [<options>] <tree-ish> [<path>...]"
@@ -1585,16 +1586,16 @@
 msgstr "no se puede leer %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "no se pudo leer '%s'"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
-msgstr "ruta especificada '%s' no concordó con ningun archivo"
+msgstr "ruta especificada '%s' no concordó con ningún archivo"
 
 #: archive.c:451
 #, c-format
@@ -1633,18 +1634,18 @@
 msgid "archive format"
 msgstr "formato de crónica"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "prefijo"
 
 #: archive.c:554
 msgid "prepend prefix to each pathname in the archive"
-msgstr "anteponer prefijo a cada ruta en el crónica"
+msgstr "anteponer prefijo a cada ruta en la crónica"
 
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1675,7 +1676,8 @@
 msgstr "listar los formatos de crónica soportados"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "repo"
 
@@ -1683,7 +1685,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "obtener la crónica del repositorio remoto <repo>"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "comando"
@@ -1758,7 +1760,7 @@
 "This means the bug has been fixed between %s and [%s].\n"
 msgstr ""
 "La base de fusión %s está mal.\n"
-"Esto quiere decir que el bug ha sido arreglado entre %s y [%s].\n"
+"Esto quiere decir que el bug ha sido corregido entre %s y [%s].\n"
 
 #: bisect.c:796
 #, c-format
@@ -1775,7 +1777,7 @@
 "The merge base %s is %s.\n"
 "This means the first '%s' commit is between %s and [%s].\n"
 msgstr ""
-"La base de fisión %s es %s.\n"
+"La base de fusión %s es %s.\n"
 "Esto quiere decir que el primer '%s' commit está entre %s y [%s].\n"
 
 #: bisect.c:809
@@ -1797,18 +1799,19 @@
 "We continue anyway."
 msgstr ""
 "la base de fusión entre %s y [%s] tiene que ser saltada.\n"
-"Así que no podemos estar seguros que el primer %s commit está entre%s y %s.\n"
+"Así que no podemos estar seguros que el primer %s commit esté entre %s y "
+"%s.\n"
 "Vamos a continuar de todas maneras."
 
 #: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
-msgstr "Biseccionando: una base de fisión debe ser probada\n"
+msgstr "Biseccionando: una base de fusión debe ser probada\n"
 
 #: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
-msgstr "una %s revisión es necesaria"
+msgstr "una revisión %s es necesaria"
 
 #: bisect.c:941 builtin/notes.c:177 builtin/tag.c:298
 #, c-format
@@ -1852,8 +1855,8 @@
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
-msgstr[0] "Biseccionando: falta %d revisión por probar después de esto %s\n"
-msgstr[1] "Biseccionando: faltan %d revisiones por probar después de esto %s\n"
+msgstr[0] "Biseccionando: falta %d revisión por probar después de esta %s\n"
+msgstr[1] "Biseccionando: faltan %d revisiones por probar después de esta %s\n"
 
 #: blame.c:2776
 msgid "--contents and --reverse do not blend well."
@@ -1868,13 +1871,13 @@
 msgstr ""
 "--reverse y --first-parent juntos requieren especificar el último commit"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
-msgstr "falló la configuración del camino de revisión"
+msgstr "falló la configuración del recorrido de revisiones"
 
 #: blame.c:2838
 msgid ""
@@ -1903,7 +1906,7 @@
 msgstr ""
 "\n"
 "Tras arreglar la causa del error puedes intentar arreglar\n"
-"la infamación del rastreo remoto invocando\n"
+"la información del rastreo remoto invocando\n"
 "\"git branch --set-upstream-to=%s%s%s\"."
 
 #: branch.c:67
@@ -2014,7 +2017,7 @@
 "\n"
 "Si estás planeando hacer push a una nueva rama local que\n"
 "va a rastrear a su contraparte remota, tal vez quieras usar\n"
-"\"git push -u\" para configurar tu upstream predeterminado cuando realizas "
+"\"git push -u\" para configurar tu upstream predeterminado cuando realices "
 "el push."
 
 #: branch.c:281
@@ -2042,118 +2045,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD del árbol de trabajo %s no está actualizada"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "algoritmo bundle hash desconocido %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "capacidad desconocida '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' no se ve como un archivo bundle v2 o v3"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "header no reconocido %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "no se pudo abrir '%s'"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
-msgstr "Al repositorio le falta estos commits prerrequisito:"
+msgstr "Al repositorio le faltan estos commits prerrequisitos:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "se necesita un repositorio para verificar un bundle"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "El bundle contiene esta referencia:"
 msgstr[1] "El bundle contiene estas %d referencias:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "El bundle registra una historia completa."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "El bundle requiere esta referencia:"
 msgstr[1] "El bundle requiere estas %d referencias:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "incapaz de duplicar bundle descriptor"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
-msgstr "No se pudo crear los pack-objetcts"
+msgstr "No se pudo ejecutar pack-objects"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects murió"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referencia '%s' es excluida por las opciones de rev-list"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "versión de bundle no soportada %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "no se puede escribir la versión de paquete %d con el algoritmo %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento no reconocido: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Rechazando crear un bundle vacío."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "no se puede crear '%s'"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack murió"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "terminando porque el id del chunk aparece antes de lo esperado"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "offset para chunk incorrecto %<PRIx64> y %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "se encontró ID de chuck %<PRIx32> duplicado"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "chunk final tiene un id distinto de cero %<PRIx32>"
@@ -2169,7 +2172,7 @@
 
 #: commit-graph.c:262
 msgid "commit-graph file is too small"
-msgstr "archivo commit-graph es muy pequeño"
+msgstr "archivo commit-graph es demasiado pequeño"
 
 #: commit-graph.c:355
 #, c-format
@@ -2193,7 +2196,7 @@
 
 #: commit-graph.c:482
 msgid "commit-graph has no base graphs chunk"
-msgstr "commit-graph no tiene una chunk base de graphs"
+msgstr "commit-graph no tiene un fragmento base de graphs"
 
 #: commit-graph.c:492
 msgid "commit-graph chain does not match"
@@ -2223,12 +2226,12 @@
 "commit-graph requiere datos de generación de desbordamiento pero no tiene "
 "ninguno"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "no es posible analizar el commit %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "incapaz de obtener el tipo de objeto: %s"
@@ -2271,12 +2274,12 @@
 #: commit-graph.c:1673
 #, c-format
 msgid "error adding pack %s"
-msgstr "error agregando pack %s"
+msgstr "error al agregar pack %s"
 
 #: commit-graph.c:1677
 #, c-format
 msgid "error opening index for %s"
-msgstr "error abriendo index para %s"
+msgstr "error al abrir index para %s"
 
 #: commit-graph.c:1714
 msgid "Finding commits for commit graph among packed objects"
@@ -2290,19 +2293,19 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "falló al escribir el número correcto de ids de base graph"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "no se pudo crear directorios principales para %s"
 
 #: commit-graph.c:1825
 msgid "unable to create temporary graph layer"
-msgstr "no es posible crear un una capa de gráfico temporal"
+msgstr "no es posible crear una capa de gráfico temporal"
 
 #: commit-graph.c:1830
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
-msgstr "no se pudo poner permisos a '%s'"
+msgstr "no se pudo poner permisos compartidos a '%s'"
 
 #: commit-graph.c:1887
 #, c-format
@@ -2341,85 +2344,87 @@
 msgid "too many commits to write graph"
 msgstr "demasiados commits para escribir el gráfico"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "el archivo de commit-graph tiene checksums incorrectos y probablemente está "
 "corrupto"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "commit-graph tiene un orden de OID incorrecto: %s luego %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "commit-graph tiene un valor fanout incorrecto: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "falló al analizar commit %s para commit-graph"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Verificando commits en commit graph"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "falló al analizar el commit %s de la base de datos de objetos para commit-"
 "graph"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
-msgstr "árbol raíz OID para commit %s en commit-graph es %s != %s"
+msgstr "OID del árbol raíz para commit %s en commit-graph es %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
-msgstr "lista padre de commit-graph para commit %s es muy larga"
+msgstr "lista padre de commit-graph para commit %s es demasiada larga"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "padre de commit-graph para %s es %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
-msgstr "lista padre de commit-graph para commit %s termina antes"
+msgstr "lista de padres de commit-graph para commit %s termina prematuramente"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
-"commit-graph ha generado número cero para %s, pero no-cero para los demás"
+"commit-graph tiene número de generación cero para %s, pero no cero en otro "
+"lugar"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
-"commit-graph tiene generación no-cero para %s, pero cero para los demás"
+"commit-graph tiene número de generación no cero para %s, pero cero en otro "
+"lugar"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr "generación commit-graph para commit %s es %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "fecha de commit para commit %s en commit-graph es %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "no se puede analizar %s"
@@ -2467,7 +2472,7 @@
 #: commit.c:1247
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
-msgstr "El Commit %s tiene una buena firma GPG por %s\n"
+msgstr "El commit %s tiene una buena firma GPG por %s\n"
 
 #: commit.c:1501
 msgid ""
@@ -2477,7 +2482,7 @@
 msgstr ""
 "Peligro: el mensaje del commit no se ajusta a UTF-8.\n"
 "Tal vez quieras enmendarlo después de arreglar el mensaje, o arreglar la\n"
-"variable de configuración i18n.commitencoding para la codificación que usa "
+"variable de configuración i18n.commitencoding para la codificación que use "
 "tu proyecto.\n"
 
 #: compat/obstack.c:406 compat/obstack.c:408
@@ -2526,7 +2531,7 @@
 #: config.c:405
 #, c-format
 msgid "missing environment variable '%s' for configuration '%.*s'"
-msgstr "Falta la variable de entorno '%s' para la configuración '%.*s'"
+msgstr "falta la variable de entorno '%s' para la configuración '%.*s'"
 
 #: config.c:442
 #, c-format
@@ -2623,44 +2628,44 @@
 #: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
-msgstr "mal valor de config numérica '%s' para '%s': %s"
+msgstr "mal valor de config numérico '%s' para '%s': %s"
 
 #: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
-msgstr "mal valor de config numérica '%s' para '%s' en el blob %s: %s"
+msgstr "mal valor de config numérico '%s' para '%s' en el blob %s: %s"
 
 #: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
-msgstr "mal valor de config numérica '%s' para '%s' en el archivo %s: %s"
+msgstr "mal valor de config numérico '%s' para '%s' en el archivo %s: %s"
 
 #: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
-msgstr "mal valor de config numérica '%s' para '%s' en la entrada standard: %s"
+msgstr "mal valor de config numérico '%s' para '%s' en la entrada standard: %s"
 
 #: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
-"mal valor de config numérica '%s' para '%s' en el submódulo-blob %s: %s"
+"mal valor de config numérico '%s' para '%s' en el submódulo-blob %s: %s"
 
 #: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
-"mal valor de config numérica '%s' para '%s' en la línea de comando %s: %s"
+"mal valor de config numérico '%s' para '%s' en la línea de comando %s: %s"
 
 #: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
-msgstr "mal valor de config numérica '%s' para '%s' en %s: %s"
+msgstr "mal valor de config numérico '%s' para '%s' en %s: %s"
 
 #: config.c:1257
 #, c-format
 msgid "bad boolean config value '%s' for '%s'"
-msgstr "mal valor de config booleana '%s' para '%s'"
+msgstr "mal valor de config booleano '%s' para '%s'"
 
 #: config.c:1275
 #, c-format
@@ -2705,7 +2710,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "debe ser uno de nothing, matching, simple, upstream o current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "nivel de compresión de pack erróneo %d"
@@ -2723,113 +2728,113 @@
 #: config.c:1829
 #, c-format
 msgid "unable to resolve config blob '%s'"
-msgstr "no se posible resolver configuración de blob '%s'"
+msgstr "no es posible resolver configuración de blob '%s'"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "no se pudo analizar %s"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "no es posible analizar la configuración de la línea de comando"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "error desconocido ocurrió mientras se leían los archivos de configuración"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
-msgstr "Inválido %s: '%s'"
+msgstr "%s inválido: '%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "valor splitIndex.maxPercentChange '%d' debe estar entre 0 y 100"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "no es posible analizar '%s' de la configuración de la línea de comando"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "mala variable de config '%s' en el archivo '%s' en la línea %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nombre de sección inválido '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s tiene múltiples valores"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "falló al escribir nuevo archivo de configuración %s"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "no se pudo bloquear archivo de configuración %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "abriendo %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "patrón inválido: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "archivo de configuración inválido: %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat en %s falló"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "no es posible hacer mmap '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "no es posible hacer mmap '%s'%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod en %s falló"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "no se pudo escribir el archivo de configuración %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "no se pudo configurar '%s' a '%s'"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "no se pudo desactivar '%s'"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
-msgstr "sección de nombre inválida: %s"
+msgstr "nombre de sección inválido: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "valor faltante para '%s'"
@@ -2847,8 +2852,8 @@
 msgstr ""
 "No se pudo leer del repositorio remoto.\n"
 "\n"
-"Por favor asegúrate que tienes los permisos de acceso correctos\n"
-"y que el repositorio existe."
+"Por favor asegúrate de que tengas los permisos de acceso correctos\n"
+"y que el repositorio exista."
 
 #: connect.c:81
 #, c-format
@@ -2880,7 +2885,7 @@
 
 #: connect.c:308
 msgid "repository on the other end cannot be shallow"
-msgstr "el repositorio en el otro final no puede ser superficial"
+msgstr "el repositorio en el otro lado no puede ser superficial"
 
 #: connect.c:347
 msgid "invalid packet"
@@ -2899,7 +2904,7 @@
 #: connect.c:526
 #, c-format
 msgid "invalid ls-refs response: %s"
-msgstr "respuesta de referencias ls-refs inválida: %s"
+msgstr "respuesta de ls-refs inválida: %s"
 
 #: connect.c:530
 msgid "expected flush after ref listing"
@@ -2980,7 +2985,7 @@
 #: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
-"no hay ruta especificada; vea 'git help pull' para sintaxis de url válidas"
+"no hay ruta especificada; vea 'git help pull' para sintaxis válida de url"
 
 #: connect.c:1190
 msgid "newline is forbidden in git:// hosts and repo paths"
@@ -3007,13 +3012,13 @@
 msgid "unable to fork"
 msgstr "no es posible hacer fork"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Verificando conectividad"
 
 #: connected.c:120
 msgid "Could not run 'git rev-list'"
-msgstr "No se pudo correr 'git rev-list'"
+msgstr "No se pudo ejecutar 'git rev-list'"
 
 #: connected.c:144
 msgid "failed write to rev-list"
@@ -3067,8 +3072,8 @@
 "The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
 "working-tree-encoding."
 msgstr ""
-"El archivo '%s' contiene una marca de byte (BOM). Por favor usa UTF-%.*s "
-"como working-tree-encoding."
+"El archivo '%s' contiene una marca de orden de bytes (BOM). Por favor usa "
+"UTF-%.*s como working-tree-encoding."
 
 #: convert.c:293
 #, c-format
@@ -3081,8 +3086,9 @@
 "The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
 "%sLE (depending on the byte order) as working-tree-encoding."
 msgstr ""
-"Al archivo '%s' le falta una marca de byte (BOM). Por favor usa UTF-%sBE o "
-"UTF-%sLE (dependiendo en el orden de byte) como working-tree-encoding."
+"Al archivo '%s' le falta una marca de orden de bytes (BOM). Por favor usa "
+"UTF-%sBE o UTF-%sLE (dependiendo del orden de bytes) como working-tree-"
+"encoding."
 
 #: convert.c:408 convert.c:479
 #, c-format
@@ -3125,9 +3131,9 @@
 
 #: convert.c:837
 msgid "path name too long for external filter"
-msgstr "nombre de ruta muy largo para filtro externo"
+msgstr "nombre de ruta demasiado largo para filtro externo"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3136,16 +3142,16 @@
 "filtro externo '%s' ya no está disponible aunque no todas las rutas han sido "
 "filtradas"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false no son working-tree-encodings válidos"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: falló al limpiar filtro '%s'"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: filtro smudge %s falló"
@@ -3153,20 +3159,20 @@
 #: credential.c:96
 #, c-format
 msgid "skipping credential lookup for key: credential.%s"
-msgstr "saltando revisión de credenciales para llave: credencial. %s"
+msgstr "saltando revisión de credenciales para llave: credential.%s"
 
 #: credential.c:112
 msgid "refusing to work with credential missing host field"
-msgstr "rehusando trabajar con credenciales faltantes en el campo host"
+msgstr "rehusando trabajar con campo host faltante en la credencial"
 
 #: credential.c:114
 msgid "refusing to work with credential missing protocol field"
-msgstr "rehusando trabajar con credenciales faltantes en el campo protocolo"
+msgstr "rehusando trabajar con campo protocolo faltante en la credencial"
 
 #: credential.c:394
 #, c-format
 msgid "url contains a newline in its %s component: %s"
-msgstr "url contiene un espace de línea en su componente %s: %s"
+msgstr "url contiene una nueva línea en su componente %s: %s"
 
 #: credential.c:438
 #, c-format
@@ -3176,7 +3182,7 @@
 #: credential.c:511
 #, c-format
 msgid "credential url cannot be parsed: %s"
-msgstr "url credencial no puede ser analizada: %s"
+msgstr "url de credencial no puede ser analizada: %s"
 
 #: date.c:138
 msgid "in the future"
@@ -3258,48 +3264,48 @@
 #: delta-islands.c:334
 #, c-format
 msgid "failed to load island regex for '%s': %s"
-msgstr "falló al cargar isla de regex para '%s': %s"
+msgstr "falló al cargar regex isla para '%s': %s"
 
 #: delta-islands.c:390
 #, c-format
 msgid "island regex from config has too many capture groups (max=%d)"
-msgstr "regex isla de config tiene muchos grupos de captura (max=%d)"
+msgstr "regex isla de config tiene demasiados grupos de captura (max=%d)"
 
 #: delta-islands.c:467
 #, c-format
 msgid "Marked %d islands, done.\n"
 msgstr "%d islas marcadas, listo.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "valor desconocido para --diff-merges: %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base no funciona con rangos"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base solo funciona con confirmaciones"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "no es posible obtener HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "no se encontró base de fusión"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "múltiples bases de fusión encontradas"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<opciones>] <path> <path>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3310,12 +3316,12 @@
 #: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
-msgstr "  Falló al analizar dirstat porcentaje de corte '%s'\n"
+msgstr "  Falló al analizar porcentaje de corte de dirstat '%s'\n"
 
 #: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
-msgstr "  parámetro '%s' de dirstat desconocido\n"
+msgstr "  Parámetro '%s' de dirstat desconocido\n"
 
 #: diff.c:297
 msgid ""
@@ -3323,7 +3329,7 @@
 "'dimmed-zebra', 'plain'"
 msgstr ""
 "opción de color tiene que ser una de 'no', 'default', 'blocks', 'zebra', "
-"'dimmed_zebra', 'plain'"
+"'dimmed-zebra', 'plain'"
 
 #: diff.c:325
 #, c-format
@@ -3358,35 +3364,49 @@
 "Errores en la variable de config 'diff.dirstat' encontrados:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "diff externo murió, deteniendo en %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check y -s son mutuamente exclusivas"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S y --find-object son mutuamente exclusivas"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G y --pickaxe-regex son mutuamente exclusivos, use --pickaxe-regex con -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all y --find-object son mutuamente exclusivas, use --pickaxe-all "
+"con -G y -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requiere exactamente un pathspec"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valor --stat inválido: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s espera un valor numérico"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3395,42 +3415,42 @@
 "Falló al analizar parámetro de opción --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "cambio de clase desconocido '%c' en --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valor desconocido luego de ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "no se puede resolver '%s'"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s espera forma <n>/<m>"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s esperaba un char, se obtuvo '%s'"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mal argumento --color-moved: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "modo inválido '%s' en --color-moved-ws"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3438,159 +3458,159 @@
 "opción diff-algorithm acepta \"myers\", \"minimal\", \"patience\" e "
 "\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argumento inválido para %s"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "regex inválido para -I: '%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "falló al analizar parámetro de opción --submodule: '%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mal argumento --word-diff: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Opciones de formato de salida para diff"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "generar parche"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "suprimir salida de diff"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "genera diffs con <n> líneas de contexto"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "genera el diff en formato raw"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
-msgstr "sinónimo para '-p --stat'"
+msgstr "sinónimo para '-p --raw'"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "sinónimo para '-p --stat'"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "--stat amigable para máquina"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "mostrar solo la última línea para --stat"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
-"muestra la distribución de cantidades de cambios relativa para cada "
+"muestra la distribución de cantidades de cambios relativas para cada "
 "subdirectorio"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinónimo para --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "sinonimo para --dirstat=archivos,param1,param2..."
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "advierte si cambios introducen conflictos de markers o errores de espacios "
 "en blanco"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "resumen condensado de creaciones, cambios de nombres y cambios de modos"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "mostrar solo nombres de archivos cambiados"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "mostrar solo nombres y estados de archivos cambiados"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
-msgstr "<ancho>[,<nombre-ancho>[,<cantidad>]]"
+msgstr "<ancho>[,<ancho-de-nombre>[,<cantidad>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "generar diffstat"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<ancho>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "genera diffstat con un ancho dado"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
-msgstr "genera diffstat con un nombre de ancho dado"
+msgstr "genera diffstat con un ancho de nombre dado"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "genera diffstat con un ancho de graph dado"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<cantidad>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "genera diffstat con líneas limitadas"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "genera un resumen compacto de diffstat"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "muestra un diff binario que puede ser aplicado"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "mostrar todo un pre- y post-image de nombres de objetos en las líneas \"index"
 "\""
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "mostrar diff colorido"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<tipo>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3598,7 +3618,7 @@
 "resaltar errores de espacios en blanco en las líneas 'context', 'old' o "
 "'new' del diff"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3606,327 +3626,330 @@
 "no consolidar los pathnames y usar NULs como terminadores de campos en --raw "
 "o --numstat"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<prefijo>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "mostrar el prefijo de fuente dado en lugar de \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
-msgstr "mostrar el prefijo de destino en lugar de \"b/\""
+msgstr "mostrar el prefijo de destino dado en lugar de \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "anteponer un prefijo adicional a cada línea mostrada"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "no mostrar ningún prefijo de fuente o destino"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "muestra el contexto entre hunks de diff hasta el número especificado de "
 "líneas"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<char>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "especifica el char para indicar una nueva línea en lugar de '+'"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "especifica el char para indicar una línea vieja en lugar de '-'"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "especifica el char para indicar un contexto en lugar de ' '"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Opciones de diff rename"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "descomponer los cambios de reescritura en pares de borrar y crear"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "detectar renombrados"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "omite la preimage para borrados"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "detectar copias"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "usa archivos no modificados como fuente para encontrar copias"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
-msgstr "deshabilita detección de renombres"
+msgstr "deshabilita detección de renombrados"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
-msgstr "usa blobs vacíos como fuente de renombre"
+msgstr "usa blobs vacíos como fuente de renombramiento"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
-msgstr "continua listando el historial de un archivo más allá de renombres"
+msgstr ""
+"continua listando el historial de un archivo más allá de renombramientos"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
-"previene detección de renombre/copias si el número de objetivos para "
-"renombres/copias excede el límite dado"
+"previene detección de renombramientos/copias si el número de destinos para "
+"renombramientos/copias excede el límite dado"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Opciones de algoritmos de diff"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "produce el diff más pequeño posible"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorar espacios en blanco cuando comparando líneas"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorar cambios en la cantidad de líneas en blanco"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorar cambios en espacios en blanco en EOL"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "ignora carrier-return al final de la línea"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "ignora cambios cuyas líneas son todas en blanco"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignora cambios cuyas líneas concuerdan con <regex>"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heurística para cambiar los límites de hunk para una fácil lectura"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"patience diff\""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"histogram diff\""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<algoritmo>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "escoge un algoritmo para diff"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<texto>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"anchored diff\""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<modo>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "muestra diff por palabras usando <modo> para delimitar las palabras cambiadas"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
-msgstr "usa <regex> para decidir que palabra es"
+msgstr "usa <regex> para decidir qué es una palabra"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "equivalente a --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "líneas movidas de código están coloreadas diferente"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "como espacios en blanco son ignorados en --color-moved"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Otras opciones de diff"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "cuando ejecutado desde un subdir, excluye cambios del exterior y muestra "
 "paths relativos"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "tratar todos los archivos como texto"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "cambia dos inputs, invierte el diff"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "termina con 1 si hubieron diferencias, de lo contrario con 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
-msgstr "deshabilita todo el output del programa"
+msgstr "deshabilita todo el salida del programa"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "permite la ejecución de un diff helper externo"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "ejecuta filtros de conversión de texto externos cuando comparando binarios"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<cuando>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorar cambios a submódulos en la generación de diff"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<formato>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "especifica como son mostradas las diferencias en submódulos"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
-msgstr "ocultar entradas 'git add -N' del index"
+msgstr "ocultar entradas 'git add -N' del índice"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
-msgstr "trata entradas 'git add -N' como reales en el index"
+msgstr "trata entradas 'git add -N' como reales en el índice"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<string>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
-"busca por diferencias que cambien el número de ocurrencias para el string "
+"busca diferencias que cambien el número de ocurrencias del string "
 "especificado"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
-"busca por diferencias que cambien el número de ocurrencias para el regex "
+"busca por diferencias que cambien el número de ocurrencias del regex "
 "especificado"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "mostrar todos los cambios en el changeset con -S o -G"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "tratar <string> en -S como una expresión regular extendida de POSIX"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "controlar el orden en el que los archivos aparecen en la salida"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<ruta>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "mostrar el cambio en la ruta especificada primero"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
-msgstr "saltar el output de la ruta especificada"
+msgstr "saltar el salida de la ruta especificada"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
-msgstr "<id-objeto>"
+msgstr "<id-de-objeto>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
-"busca por diferencias que cambien el número de ocurrencias para el objeto "
+"busca diferencias que cambien el número de ocurrencias para el objeto "
 "especificado"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "selecciona archivos por tipo de diff"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<archivo>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Output a un archivo específico"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"detección de cambio de nombre inexacta fue saltada por haber muchos archivos."
+"detección exhaustiva de cambio de nombre fue saltada por haber demasiados "
+"archivos."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
-"solo se encontraron copias de rutas modificadas por haber muchos archivos."
+"solo se encontraron copias de rutas modificadas por haber demasiados "
+"archivos."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3937,9 +3960,9 @@
 #: diffcore-order.c:24
 #, c-format
 msgid "failed to read orderfile '%s'"
-msgstr "falló al leer orden de archivos '%s'"
+msgstr "falló al leer archivo de orden '%s'"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Realizando una detección de cambios de nombre inexacta"
 
@@ -3948,61 +3971,60 @@
 msgid "No such path '%s' in the diff"
 msgstr "No hay ruta '%s' en el diff"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
-msgstr ""
-"ruta especificada '%s' no concordó con ningún archivo(s) conocido por git"
+msgstr "ruta especificada '%s' no concordó con ningún archivo conocido por git"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "patrón desconocido: '%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "patrón negativo no reconocido: '%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "tu archivo sparse-checkout tal vez tenga errores: patrón '%s' está repetido"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
-msgstr "deshabilitar coincidencia de patrónes cono"
+msgstr "deshabilitar coincidencia de patrónes cónica"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "no se puede usar %s como archivo de exclusión"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "no se pudo abrir el directorio '%s'"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
-msgstr "falló al conseguir la información y nombre del kernel"
+msgstr "falló al conseguir el nombre y la información del kernel"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "untracked cache está desactivado en este sistema o ubicación"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "archivo índice corrompido en repositorio %s"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "no se pudo crear directorios para %s"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "no se pudo migrar el directorio git de '%s' a '%s'"
@@ -4012,21 +4034,21 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "ayuda: Esperando que tu editor cierre el archivo ...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Filtrando contenido"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
-msgstr "no se pudo establecer el archivo '%s'"
+msgstr "no se pudo hacer stat en el archivo '%s'"
 
 #: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr "ruta de namespace de git mala \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "no se pudo configurar GIT_DIR a '%s'"
@@ -4034,16 +4056,17 @@
 #: exec-cmd.c:363
 #, c-format
 msgid "too many args to run %s"
-msgstr "demasiados argumentos para correr %s"
+msgstr "demasiados argumentos para ejecutar %s"
 
 #: fetch-pack.c:182
 msgid "git fetch-pack: expected shallow list"
-msgstr "git fetch-pack: lista poco profunda esperada"
+msgstr "git fetch-pack: lista de superficiales esperada"
 
 #: fetch-pack.c:185
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr ""
-"git fetch-pack: se esperaba un flush packet luego de la lista superficial"
+"git fetch-pack: se esperaba un flush packet luego de la lista de "
+"superficiales"
 
 #: fetch-pack.c:196
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
@@ -4065,12 +4088,12 @@
 #: fetch-pack.c:383 fetch-pack.c:1423
 #, c-format
 msgid "invalid shallow line: %s"
-msgstr "línea poco profunda inválida: %s"
+msgstr "línea shallow inválida: %s"
 
 #: fetch-pack.c:389 fetch-pack.c:1429
 #, c-format
 msgid "invalid unshallow line: %s"
-msgstr "línea superficial inválida: %s"
+msgstr "línea unshallow inválida: %s"
 
 #: fetch-pack.c:391 fetch-pack.c:1431
 #, c-format
@@ -4085,7 +4108,7 @@
 #: fetch-pack.c:396 fetch-pack.c:1436
 #, c-format
 msgid "no shallow found: %s"
-msgstr "superficie no encontrada: %s"
+msgstr "shallow no encontrado: %s"
 
 #: fetch-pack.c:399 fetch-pack.c:1440
 #, c-format
@@ -4127,20 +4150,20 @@
 
 #: fetch-pack.c:849
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
-msgstr "fetch-pack: no se puede extraer un demultiplexor de banda lateral"
+msgstr "fetch-pack: no se puede ejecutar un demultiplexor de banda lateral"
 
 #: fetch-pack.c:857
 msgid "protocol error: bad pack header"
-msgstr "error de protocolo: paquete de header erróneo"
+msgstr "error de protocolo: header de paquete erróneo"
 
 #: fetch-pack.c:951
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
-msgstr "fetch-pack: no se puede quitar %s"
+msgstr "fetch-pack: no se puede ejecutar %s"
 
 #: fetch-pack.c:957
 msgid "fetch-pack: invalid index-pack output"
-msgstr "fetch-pack: salida de paquete de índice no válida"
+msgstr "fetch-pack: salida de index-pack no válida"
 
 #: fetch-pack.c:974
 #, c-format
@@ -4170,11 +4193,11 @@
 
 #: fetch-pack.c:1089
 msgid "Server does not support --shallow-since"
-msgstr "El servidor no soporta --shalow-since"
+msgstr "El servidor no soporta --shallow-since"
 
 #: fetch-pack.c:1094
 msgid "Server does not support --shallow-exclude"
-msgstr "El servidor no soporta --shalow-exclude"
+msgstr "El servidor no soporta --shallow-exclude"
 
 #: fetch-pack.c:1098
 msgid "Server does not support --deepen"
@@ -4192,7 +4215,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "el repositorio fuente es superficial, rechazando clonado."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch falló."
 
@@ -4204,7 +4227,7 @@
 #: fetch-pack.c:1246
 #, c-format
 msgid "the server does not support algorithm '%s'"
-msgstr "servidor no soporta el algoritmo '%s'"
+msgstr "el servidor no soporta el algoritmo '%s'"
 
 #: fetch-pack.c:1279
 msgid "Server does not support shallow requests"
@@ -4212,16 +4235,16 @@
 
 #: fetch-pack.c:1286
 msgid "Server supports filter"
-msgstr "El servidor soporta filtro"
+msgstr "El servidor soporta filtración"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "no se puede escribir request al remoto"
 
 #: fetch-pack.c:1347
 #, c-format
 msgid "error reading section header '%s'"
-msgstr "error leyendo sección header '%s'"
+msgstr "error al leer header de sección '%s'"
 
 #: fetch-pack.c:1353
 #, c-format
@@ -4236,20 +4259,20 @@
 #: fetch-pack.c:1392
 #, c-format
 msgid "error processing acks: %d"
-msgstr "error procesando acks: %d"
+msgstr "error al procesar acks: %d"
 
 #: fetch-pack.c:1402
 msgid "expected packfile to be sent after 'ready'"
-msgstr "espere que el packfile sea mandado luego del 'listo'"
+msgstr "se esperaba que el packfile fuera enviado luego del 'listo'"
 
 #: fetch-pack.c:1404
 msgid "expected no other sections to be sent after no 'ready'"
-msgstr "espere que ninguna otra sección sea enviada luego del 'listo'"
+msgstr "se esperaba que ninguna otra sección fuera enviada luego del 'listo'"
 
 #: fetch-pack.c:1445
 #, c-format
 msgid "error processing shallow info: %d"
-msgstr "error procesando información superficial: %d"
+msgstr "error al procesar información de superficiales: %d"
 
 #: fetch-pack.c:1494
 #, c-format
@@ -4264,30 +4287,30 @@
 #: fetch-pack.c:1504
 #, c-format
 msgid "error processing wanted refs: %d"
-msgstr "error procesando refs deseadas: %d"
+msgstr "error al procesar refs deseadas: %d"
 
 #: fetch-pack.c:1534
 msgid "git fetch-pack: expected response end packet"
-msgstr "git fetch-pack: se espera un paquete final de respuesta"
+msgstr "git fetch-pack: se esperaba un paquete final de respuesta"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "no concuerda el head remoto"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
-msgstr "remoto no mando todos los objetos necesarios"
+msgstr "remoto no mandó todos los objetos necesarios"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "'listo' inesperado del remoto"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "no existe ref remota %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "El servidor no permite solicitudes de objetos inadvertidos %s"
@@ -4303,33 +4326,33 @@
 
 #: gpg-interface.c:470
 msgid "gpg failed to sign the data"
-msgstr "gpg falló al firmar la data"
+msgstr "gpg falló al firmar los datos"
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
-msgstr "ignora color inválido '%.*s' en log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "ignorado color inválido '%.*s' en log.graphColors"
 
 #: grep.c:531
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
 msgstr ""
-"el patrón provisto contiene bytes NULL (via -f <archivo>). Esto solo es "
+"el patrón provisto contiene bytes NULL (vía -f <archivo>). Esto solo es "
 "soportado con -P bajo PCRE v2"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': no es posible leer %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
-msgstr "falló al marcar '%s'"
+msgstr "falló al hacer stat en '%s'"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': lectura corta"
@@ -4402,7 +4425,7 @@
 #: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
-msgstr "comando de listado de tipos no soportado '%s'"
+msgstr "tipo de listado de comandos no soportado '%s'"
 
 #: help.c:405
 msgid "The Git concept guides are:"
@@ -4432,7 +4455,7 @@
 #: help.c:543 help.c:631
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
-msgstr "git: '%s'no es un comando de git. Mira 'git --help'."
+msgstr "git: '%s' no es un comando de git. Mira 'git --help'."
 
 #: help.c:591
 msgid "Uh oh. Your system reports no Git commands at all."
@@ -4451,7 +4474,7 @@
 #: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
-msgstr "Continuando en %0.1f segundos, asumiendo que tu dijiste '%s'."
+msgstr "Continuando en %0.1f segundos, asumiendo que quisiste decir '%s'."
 
 #: help.c:635
 msgid ""
@@ -4469,7 +4492,7 @@
 
 #: help.c:675
 msgid "git version [<options>]"
-msgstr "git versión [<opciones>]"
+msgstr "git version [<opciones>]"
 
 #: help.c:730
 #, c-format
@@ -4515,7 +4538,7 @@
 "\n"
 "*** Por favor cuéntame quién eres.\n"
 "\n"
-"Corre\n"
+"Ejecuta\n"
 "\n"
 "  git config --global user.email \"you@example.com\"\n"
 "  git config --global user.name \"Tu Nombre\"\n"
@@ -4526,7 +4549,7 @@
 
 #: ident.c:397
 msgid "no email was given and auto-detection is disabled"
-msgstr "no se entrego ningún email y la detección automática está desactivada"
+msgstr "no se entregó ningún email y la detección automática está desactivada"
 
 #: ident.c:402
 #, c-format
@@ -4535,7 +4558,7 @@
 
 #: ident.c:419
 msgid "no name was given and auto-detection is disabled"
-msgstr "no se entrego ningún nombre y la detección automática está desactivada"
+msgstr "no se entregó ningún nombre y la detección automática está desactivada"
 
 #: ident.c:425
 #, c-format
@@ -4545,7 +4568,7 @@
 #: ident.c:433
 #, c-format
 msgid "empty ident name (for <%s>) not allowed"
-msgstr "no se puede tener un nombre vacío (para <%s>)"
+msgstr "no se puede tener un nombre de identidad vacío (para <%s>)"
 
 #: ident.c:439
 #, c-format
@@ -4567,13 +4590,13 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "'%s' para 'object:type=<type>' no es un objeto válido"
 
 #: list-objects-filter-options.c:124
 #, c-format
 msgid "invalid filter-spec '%s'"
-msgstr "filtro -spec inválido '%s'"
+msgstr "especificación de filtro inválida '%s'"
 
 #: list-objects-filter-options.c:140
 #, c-format
@@ -4591,7 +4614,7 @@
 #: list-objects-filter-options.c:376
 msgid "unable to upgrade repository format to support partial clone"
 msgstr ""
-"no es posible actualizar el formato del repositorio para soportar clonado "
+"no es posible actualizar el formato del repositorio para soportar clonación "
 "parcial"
 
 #: list-objects-filter.c:532
@@ -4607,14 +4630,14 @@
 #: list-objects.c:127
 #, c-format
 msgid "entry '%s' in tree %s has tree mode, but is not a tree"
-msgstr "entrada '%s' en árbol %s tiene modo árbol, pero no es uno"
+msgstr "entrada '%s' en árbol %s tiene modo árbol, pero no lo es"
 
 #: list-objects.c:140
 #, c-format
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
-msgstr "entrada '%s' en árbol %s tiene modo blob, pero no es uno"
+msgstr "entrada '%s' en árbol %s tiene modo blob, pero no lo es"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "no se puede cargar árbol raíz para commit %s"
@@ -4632,10 +4655,10 @@
 msgstr ""
 "No se puede crear '%s.lock': %s.\n"
 "\n"
-"Otro proceso git parece estar corriendo en el repositorio, es decir\n"
+"Otro proceso git parece estar ejecutando en el repositorio, es decir\n"
 "un editor abierto con 'git commit'. Por favor asegúrese de que todos los "
 "procesos\n"
-"están terminados y vuelve a intentar. Si el fallo permanece, un proceso git\n"
+"estén terminados y vuelve a intentar. Si el fallo permanece, un proceso git\n"
 "puede haber roto el repositorio antes:\n"
 "borra el archivo manualmente para continuar."
 
@@ -4662,32 +4685,32 @@
 msgid "bad action '%s' for '%s'"
 msgstr "mala acción '%s' para '%s'"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Falló al fusionar el submódulo %s (no revisado)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Falló al fusionar el submódulo %s (commits no presentes)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
-msgstr "Falló el fusionar submódulo %s (commits no siguen la fusión base)"
+msgstr "Falló el fusionar submódulo %s (commits no siguen la base de fusión)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Nota: Fast-forward de submódulo %s a %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
-msgstr "falló al fusionar el submódulo %s"
+msgstr "Falló al fusionar el submódulo %s"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4697,7 +4720,7 @@
 "fusión:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4714,7 +4737,7 @@
 "\n"
 "el cual aceptará esta sugerencia.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4723,21 +4746,21 @@
 "Falló al fusionar el submódulo %s, pero existen múltipes fusiones posibles:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Falló al ejecutar la fusión interna"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "No es posible agregar %s a la base de datos"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Auto-fusionando %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4747,27 +4770,27 @@
 "existente en %s se interpone con el cambio de nombres implícito, poniendo "
 "la(s) siguiente(s) ruta(s) aquí: %s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
 "implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"CONFLICTO (cambio de nombre implícito): No se puede mapear más de una ruta "
-"para %s; cambio de nombre implícito intentó poner estas rutas: %s"
+"CONFLICTO (cambio de nombre de directorio implícito): No se puede mapear más "
+"de una ruta para %s; cambio de nombre implícito intentó poner estas rutas: %s"
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
 "renamed to multiple other directories, with no destination getting a "
 "majority of the files."
 msgstr ""
-"CONFLICTO (división de cambio de nombre de directorio): No está claro dónde "
+"CONFLICTO (división de cambio de nombre de directorio): No está claro a qué "
 "cambiar el nombre de %s; se le cambió el nombre a varios otros directorios, "
-"sin que ningún destino obtenga la mayoría de los archivos."
+"sin que ningún destino obtuviera la mayoría de los archivos."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4776,7 +4799,7 @@
 "PELIGRO: Evitando aplicar %s -> %s renombrado a %s, porque %s mismo fue "
 "renombrado."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4785,7 +4808,7 @@
 "Path actualizado: %s agregado en %s dentro de un directorio que fue "
 "renombrado en %s; moviéndolo a %s."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4794,7 +4817,7 @@
 "Path actualizado: %s renombrado a %s en %s, dentro de un directorio que fue "
 "renombrado en %s; moviéndolo a %s."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4803,7 +4826,7 @@
 "CONFLICTO (ubicación de archivo): %s agregado en %s dentro de un directorio "
 "que fue renombrado en %s, sugerimos que debería ser movido a %s."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4813,87 +4836,87 @@
 "directorio que fue renombrado en %s, sugiriendo que tal vez debería ser "
 "movido a %s."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "CONFLICTO (renombrar / renombrar): %s renombrado a %s en %s y %s en %s."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
 "conflicts AND collides with another path; this may result in nested conflict "
 "markers."
 msgstr ""
-"CONFLICTO (cambio de nombre involucrado en colisión): cambio de nombre de%s -"
-">%s tiene conflictos de contenido Y colisiona con otra ruta; esto puede "
+"CONFLICTO (cambio de nombre involucrado en colisión): cambio de nombre de %s "
+"->%s tiene conflictos de contenido Y colisiona con otra ruta; esto puede "
 "resultar en marcadores de conflicto anidados."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "CONFLICTO (renombrar / eliminar): %s renombrado a %s en %s, pero eliminado "
 "en %s."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "no se pudo leer el objeto %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objeto %s no es un blob"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
 "%s instead."
 msgstr ""
-"CONFLICTO (archivo / directorio): directorio en el camino de%s de%s; "
-"moviéndolo a%s en su lugar."
+"CONFLICTO (archivo / directorio): directorio en el camino de %s de %s; "
+"moviéndolo a %s en su lugar."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
 "of them so each can be recorded somewhere."
 msgstr ""
-"CONFLICTO (tipos distintos):%s tenía tipos diferentes en cada lado; "
-"renombrado ambos para que cada uno pueda ser grabado en algún lugar "
+"CONFLICTO (tipos distintos): %s tenía tipos diferentes en cada lado; ambos "
+"fueron renombrados para que cada uno pueda ser grabado en algún lugar "
 "diferente."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
 "of them so each can be recorded somewhere."
 msgstr ""
-"CONFLICTO (tipos distintos):%s tenía tipos diferentes en cada lado; "
-"renombrado uno de ellos para que cada uno pueda ser grabado en algún lugar "
+"CONFLICTO (tipos distintos): %s tenía tipos diferentes en cada lado; uno de "
+"ellos fue renombrado para que cada uno pueda ser grabado en algún lugar "
 "diferente."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "contenido"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "agregar/agregar"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "submódulo"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "CONFLICTO (%s): Conflicto de fusión en %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4902,7 +4925,7 @@
 "CONFLICTO (modificar / eliminar): %s eliminado en %s y modificado en %s. "
 "Versión %s de %s restante en el árbol."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4914,13 +4937,13 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr ""
-"La recopilación de información de fusión falló para los árboles %s, %s, %s"
+"la recopilación de información de fusión falló para los árboles %s, %s, %s"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4930,115 +4953,115 @@
 "merge:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Ya está actualizado."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(commit erróneo)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr "add_cacheinfo falló para la ruta '%s'; abortando fusión."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo falló para refrescar la ruta '%s'; abortando fusión."
+msgstr "add_cacheinfo falló al refrescar la ruta '%s'; abortando fusión."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "falló al crear la ruta '%s'%s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
-msgstr "Removiendo %s para hacer espacio para un subdirectorio\n"
+msgstr "Quitando %s para hacer espacio para un subdirectorio\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": ¿tal vez un conflicto D/F?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
-msgstr "rehusando perder el archivo rastreado en '%s'"
+msgstr "rehusando perder el archivo no rastreado en '%s'"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "no se puede leer el objeto %s '%s'"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "se esperaba blob para %s '%s'"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "falló al abrir '%s': %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "falló al crear el enlace simbólico '%s': %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
-msgstr "no se que hacer con %06o %s '%s'"
+msgstr "no sé qué hacer con %06o %s '%s'"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Haciendo fast-forward a submódulo %s para el siguiente commit:"
+msgstr "Haciendo fast-forward a submódulo %s hasta el siguiente commit:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Avance rápido en submódulo %s"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "Falló al fusionar submódulo %s (los siguentes commits no fueron encontrados)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Falló al fusionar el submódulo %s (no es posible avance rápido)"
+msgstr "Falló al fusionar el submódulo %s (avance rápido no es posible)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Se encontró una posible solución de fusión para el submódulo:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Falló al fusionar el submódulo %s (fusiones múltiples encontradas)"
+msgstr "Falló al fusionar el submódulo %s (múltiples fusiones encontradas)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 "Error: Rehusando perder el archivo no rastreado en %s; escribiéndolo a %s en "
 "cambio."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree."
 msgstr ""
-"CONFLICTO (%s/borrar): %s borrado en %s y %s en %s. Falta versión %s de %s "
-"en el árbol."
+"CONFLICTO (%s/borrar): %s borrado en %s y %s en %s. Se dejó la versión %s de "
+"%s en el árbol."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5047,7 +5070,7 @@
 "CONFLICTO (%s/borrar): %s borrado en %s y %s para %s en %s. Versión %s de %s "
 "permanece en el árbol."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5056,7 +5079,7 @@
 "CONFLICTO (%s/eliminar): %s eliminado en %s y %s en %s. Versión %s de %s "
 "dejada en el árbol, en %s."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5065,44 +5088,44 @@
 "CONFLICTO (%s/borrar): %s borrado en %s y %s para %s en %s. Versión %s de %s "
 "permanece en el árbol en %s."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "renombrar"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "renombrado"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Rehusando perder el archivo sucio en %s"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 "Rehusando perder el archivo no rastreado en %s, incluso aunque se está "
 "interponiendo."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "CONFLICTO (renombrar/agregar): Renombrar %s->%s en %s.  %s agregado en %s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s es un directorio en %s agregando como %s más bien"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 "Rehusando perder el archivo no rastreado en %s; agregándolo como %s en cambio"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5111,18 +5134,18 @@
 "CONFLICTO (renombrar/renombrar): Renombrar \"%s\"->\"%s\" en la rama \"%s\" "
 "renombrar \"%s\"->\"%s\" en \"%s\"%s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (dejado sin resolver)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "CONFLICTO (renombrar/renombrar): Renombrar %s->%s en %s. Renombrar %s->%s en "
 "%s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5130,10 +5153,10 @@
 "getting a majority of the files."
 msgstr ""
 "CONFLICTO (división de cambio de nombre de directorio): No es claro dónde "
-"colocar %s porque el directorio %s fue renombrado a otros múltiples "
+"colocar %s porque el directorio %s fue renombrado a múltiples otros "
 "directorios, sin ningún que contenga la mayoría de archivos."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5142,80 +5165,80 @@
 "CONFLICTO (renombrar/renombrar): Renombrar directorio %s->%s en %s. "
 "Renombrar directorio %s->%s en %s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "modificar"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "modificado"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Saltado %s (fusionado como existente)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Agregando más bien como %s"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "Eliminando %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "archivo/directorio"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "directorio/archivo"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "CONFLICTO (%s): Hay un directorio con el nombre %s en %s. Agregando %s como "
 "%s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "Agregando %s"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLICTO (add/add): Conflicto de merge en %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "falló la fusión de los árboles %s y %s"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Fusionando:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "se encontró %u ancestro común:"
 msgstr[1] "se encontraron %u ancestros comunes:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "la fusión no devolvió ningún commit"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "No se pudo analizar el objeto '%s'"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Incapaz de escribir el índice."
@@ -5224,8 +5247,8 @@
 msgid "failed to read the cache"
 msgstr "falló al leer la cache"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "no es posible escribir el archivo índice"
@@ -5233,12 +5256,12 @@
 #: midx.c:74
 msgid "multi-pack-index OID fanout is of the wrong size"
 msgstr ""
-"El abanico de OID de índice de paquetes múltiples es del tamaño incorrecto"
+"el abanico de OID de índice de paquetes múltiples es del tamaño incorrecto"
 
 #: midx.c:105
 #, c-format
 msgid "multi-pack-index file %s is too small"
-msgstr "archivo multi-pack-index %s es muy pequeño"
+msgstr "el archivo multi-pack-index %s es demasiado pequeño"
 
 #: midx.c:121
 #, c-format
@@ -5254,29 +5277,30 @@
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
-"La versión de hash de índice de paquetes múltiples %u no coincide con la "
+"la versión de hash de índice de paquetes múltiples %u no coincide con la "
 "versión %u"
 
 #: midx.c:148
 msgid "multi-pack-index missing required pack-name chunk"
-msgstr "multi-pack-index le falta el conjunto pack-name requerido"
+msgstr "a multi-pack-index le falta el conjunto pack-name requerido"
 
 #: midx.c:150
 msgid "multi-pack-index missing required OID fanout chunk"
-msgstr "multi-pack-index le falta el conjunto OID fanout requerido"
+msgstr "a multi-pack-index le falta el conjunto OID fanout requerido"
 
 #: midx.c:152
 msgid "multi-pack-index missing required OID lookup chunk"
-msgstr "multi-pack-index le falta el conjunto OID fanout requerido"
+msgstr "a multi-pack-index le falta el conjunto OID fanout requerido"
 
 #: midx.c:154
 msgid "multi-pack-index missing required object offsets chunk"
-msgstr "multi-pack-index le falta el conjunto de offset del objeto requerido"
+msgstr "a multi-pack-index le falta el conjunto de offset del objeto requerido"
 
 #: midx.c:170
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
-msgstr "multi-pack-index nombres de paquete fuera de orden:'%s' antes '%s'"
+msgstr ""
+"nombres de paquete de multi-pack-index fuera de orden: '%s' antes de '%s'"
 
 #: midx.c:214
 #, c-format
@@ -5285,7 +5309,8 @@
 
 #: midx.c:264
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
-msgstr "multi-pack-index guarda un offset de 64-bit, pero off_t es muy pequeño"
+msgstr ""
+"multi-pack-index guarda un offset de 64-bit, pero off_t es demasiado pequeño"
 
 #: midx.c:490
 #, c-format
@@ -5302,110 +5327,118 @@
 msgid "failed to locate object %d in packfile"
 msgstr "falló al ubicar objeto %d en packfile"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "no se puede almacenar el archivo de índice inverso"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "ignorando el actual multi-pack-index; checksum no concuerda"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Agregando packfiles a multi-pack-index"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
-msgstr "no se vió pack-file %s caer"
+msgstr "no se vió el pack-file que abandonar %s"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "pack preferido desconocido: '%s'"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "pack de referencia '% s' ha expirado"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "no hay archivos pack para indexar."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "falló al borrar %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "falló al limpiar multi-pack-index en %s"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
-"El archivo de índice de paquetes múltiples existe, pero no se pudo analizar"
+"el archivo de índice de paquetes múltiples existe, pero no se pudo analizar"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "checksum incorrecto"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
-msgstr "Buscando por packfiles referidos"
+msgstr "Buscando packfiles referidos"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 "oid fanout fuera de orden: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "el midx no contiene oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Verificando orden de OID en multi-pack-index"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid lookup fuera de orden: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Ordenando objetos por packfile"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Verificando offsets de objetos"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "fallo al cargar entrada pack para oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "falló al cargar el pack-index para packfile %s"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "offset para objeto incorrecto oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Contando objetos no referenciados"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Encontrando y borrando packfiles sin referencias"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
-msgstr "no se pudo empezar los pack-objetcts"
+msgstr "no se pudo iniciar pack-objects"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
-msgstr "no se pudo finalizar pack-objetcts"
+msgstr "no se pudo finalizar pack-objects"
 
 #: name-hash.c:542
 #, c-format
@@ -5429,21 +5462,20 @@
 "Please, use 'git notes merge --commit' or 'git notes merge --abort' to "
 "commit/abort the previous merge before you start a new notes merge."
 msgstr ""
-"No has concluido tus notas previas de fusión (%s existe).\n"
+"No has concluido tu fusión preia de notas (%s existe).\n"
 "Por favor, usa 'git notes merge --commit' o 'git notes merge --abort' para "
-"confirmar/abortar la fusión previa antes de que puedas comenzar una nueva "
-"nota de fusión."
+"confirmar/abortar la fusión previa antes de comenzar una nueva fusión de "
+"notas."
 
 #: notes-merge.c:284
 #, c-format
 msgid "You have not concluded your notes merge (%s exists)."
-msgstr "No has terminado tus notas de fusión (%s existe)."
+msgstr "No has terminado tu fusión de notas (%s existe)."
 
 #: notes-utils.c:46
 msgid "Cannot commit uninitialized/unreferenced notes tree"
 msgstr ""
-"No se puede realizar commit, notas del árbol no inicializadas o no "
-"referenciadas"
+"No se puede realizar commit, árbol de notas no inicializado o no referenciado"
 
 #: notes-utils.c:105
 #, c-format
@@ -5467,271 +5499,273 @@
 #: object-file.c:526
 #, c-format
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "objeto directorio %s no existe; revisa .git/objects/info/alternates"
+msgstr ""
+"directorio de objetos %s no existe; revisa .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "incapaz de normalizar la ruta de objeto alterno: %s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: ignorando espacios de objetos alternos, anidado muy profundo"
+msgstr "%s: ignorando espacios de objetos alternos, anidado demasiado profundo"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
-msgstr "incapaz de normalizar directorio de objeto: %s"
+msgstr "incapaz de normalizar directorio de objetos: %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "no es posible hacer fdopen en lockfile alternos"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
-msgstr "no es posible leer archivos alternos"
+msgstr "no es posible leer el archivo de alternativos"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
-msgstr "no es posible mover archivos alternos en el lugar"
+msgstr "no es posible mover el nuevo archivo de alternativos al lugar"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "ruta '%s' no existe"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "repositorio de referencia '%s' como un checkout vinculado no es soportado "
 "todavía."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "repositorio de referencia '%s' no es un repositorio local."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "repositorio de referencia '%s' es superficial (shallow)"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "repositorio de referencia '% s' está injertado"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "línea inválida mientras se analizaban refs alternas: %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "intentando usar mmap %<PRIuMAX> sobre límite %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap falló"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap falló %s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "archivo de objeto %s está vacío"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
-msgstr "objeto perdido corrupto '%s'"
+msgstr "objeto suelto corrupto '%s'"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
-msgstr "basura al final del objeto perdido '%s'"
+msgstr "basura al final del objeto suelto '%s'"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "tipo de objeto inválido"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "no es posible desempacar header %s con --allow-unknown-type"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "incapaz de desempaquetar header %s"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "no es posible analizar header %s con --allow-unknown-type"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "incapaz de analizar header %s"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "falló al leer objeto %s"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "reemplazo %s no encontrado para %s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
-msgstr "objeto perdido %s (guardado en %s) está corrompido"
+msgstr "objeto suelto %s (guardado en %s) está corrompido"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
-msgstr "paquete de objeto %s (guardado en %s) está corrompido"
+msgstr "objeto empaquetado %s (guardado en %s) está corrompido"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "no es posible escribir archivo %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "no se pudo poner permisos a '%s'"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "falló de escritura"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
-msgstr "error cerrando el archivo de objeto suelto"
+msgstr "error al cerrar el archivo de objeto suelto"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 "permisos insuficientes para agregar un objeto a la base de datos del "
 "repositorio %s"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "no es posible crear un archivo temporal"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "no es posible escribir el archivo de objeto suelto"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "no es posible desinflar el objeto nuevo %s (%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "deflateEnd en objeto %s falló (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "confundido por fuente de data de objetos inestable para %s"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "falló utime() en %s"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "no se pudo leer el objeto para %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "commit corrupto"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "tag corrupto"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
-msgstr "error leyendo al indexar %s"
+msgstr "error de lectura al indexar %s"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "lectura corta al indexar %s"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s: falló al insertar en la base de datos"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s: tipo de archivo no soportado"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s no es objeto válido"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s no es un objeto '%s' válido"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "no es posible abrir %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "hash no concuerda para %s (se esperaba %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "no es posible hacer mmap a %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "incapaz de desempaquetar header de %s"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "incapaz de analizar header de %s"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "no es posible desempaquetar contenidos de %s"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
-msgstr "El ID de objeto corto %s es ambiguo"
+msgstr "el ID de objeto corto %s es ambiguo"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Los candidatos son:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5754,22 +5788,22 @@
 "examina estas refs y tal vez bórralas. Silencia este mensaje\n"
 "ejecutando \"git config advice.objectNameWarning false\""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "log para '%.*s' solo va hasta %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "log para '%.*s' solo tiene %d entradas"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "la ruta '%s' existe en disco, pero no en '%.*s'"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5778,45 +5812,45 @@
 "ruta '%s' existe, pero no '%s'\n"
 "ayuda: ¿Quisiste decir '%.*s:%s' o '%.*s:./%s'?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "ruta '%s' no existe en '%.*s'"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
 "hint: Did you mean ':%d:%s'?"
 msgstr ""
-"ruta '%s' está en el index, pero no en stage %d\n"
-"ayuda:¿Quisiste decir: '%d:%s'?"
+"ruta '%s' está en el índice, pero no en stage %d\n"
+"ayuda: ¿Quisiste decir: '%d:%s'?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
 "hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
-"ruta '%s' está en el index, pero no '%s'\n"
-"ayuda:¿Quisiste decir ':%d:%s' o ':%d:./%s'?"
+"ruta '%s' está en el índice, pero no '%s'\n"
+"ayuda: ¿Quisiste decir ':%d:%s' o ':%d:./%s'?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
-msgstr "ruta '%s' existe en el disco, pero no en el index"
+msgstr "ruta '%s' existe en el disco, pero no en el índice"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "ruta '%s' no existe (ni en disco ni en el index)"
+msgstr "ruta '%s' no existe (ni en disco ni en el índice)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr ""
 "la sintaxis de ruta relativa no se puede usar fuera del directorio de trabajo"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "nombre de objeto no válido: '%.*s'."
@@ -5831,27 +5865,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "objeto %s es un %s, no un %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "el objeto %s tiene un id de tipo desconocido %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "incapaz de analizar objeto: %s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "hash no concuerda %s"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "no se pudo obtener el tamaño de %s"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "no se puede obtener el uso de disco de %s"
@@ -5859,17 +5893,17 @@
 #: pack-revindex.c:221
 #, c-format
 msgid "reverse-index file %s is too small"
-msgstr "El archivo de índice inverso %s es demasiado pequeño"
+msgstr "el archivo de índice inverso %s es demasiado pequeño"
 
 #: pack-revindex.c:226
 #, c-format
 msgid "reverse-index file %s is corrupt"
-msgstr "El archivo de índice inverso %s está dañado"
+msgstr "el archivo de índice inverso %s está dañado"
 
 #: pack-revindex.c:234
 #, c-format
 msgid "reverse-index file %s has unknown signature"
-msgstr "El archivo de índice inverso %s tiene una firma desconocida"
+msgstr "el archivo de índice inverso %s tiene una firma desconocida"
 
 #: pack-revindex.c:238
 #, c-format
@@ -5888,7 +5922,7 @@
 #: pack-write.c:271
 #, c-format
 msgid "could not stat: %s"
-msgstr "no se pudo estad: %s"
+msgstr "no se pudo hacer stat: %s"
 
 #: pack-write.c:283
 #, c-format
@@ -5902,15 +5936,20 @@
 
 #: packfile.c:625
 msgid "offset before end of packfile (broken .idx?)"
-msgstr "offset antes del final del paquete (broken .idx?)"
+msgstr "offset antes del final del paquete (¿.idx roto?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "objeto %s no puede ser mapeado %s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 "offset antes del comienzo del índice del paquete para %s (¿índice corrupto?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5924,7 +5963,7 @@
 #: parse-options-cb.c:41
 #, c-format
 msgid "malformed expiration date '%s'"
-msgstr "fecha de expiración mal formada: '%s'"
+msgstr "fecha de caducidad mal formada: '%s'"
 
 #: parse-options-cb.c:54
 #, c-format
@@ -6034,11 +6073,11 @@
 
 #: pathspec.c:169
 msgid "Only one 'attr:' specification is allowed."
-msgstr "Solo una especificación 'attr' es permitida."
+msgstr "Solo se permite una única especificación 'attr'."
 
 #: pathspec.c:172
 msgid "attr spec must not be empty"
-msgstr "especificación attr no puede estar vacía"
+msgstr "la especificación attr no puede estar vacía"
 
 #: pathspec.c:215
 #, c-format
@@ -6060,22 +6099,22 @@
 
 #: pathspec.c:327
 msgid "invalid parameter for pathspec magic 'prefix'"
-msgstr "parámetro no válido para el prefijo 'magic pathspec'"
+msgstr "parámetro no válido para la magia de pathspec 'prefix'"
 
 #: pathspec.c:348
 #, c-format
 msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Magic pathspec inválido '%.*s' en '%s'"
+msgstr "Magia de pathspec inválida '%.*s' en '%s'"
 
 #: pathspec.c:353
 #, c-format
 msgid "Missing ')' at the end of pathspec magic in '%s'"
-msgstr "Falta ')' al final del magic pathspec en '%s'"
+msgstr "Falta ')' al final de la magia de pathspec en '%s'"
 
 #: pathspec.c:391
 #, c-format
 msgid "Unimplemented pathspec magic '%c' in '%s'"
-msgstr "Magic pathspec '%c' no implementado en '%s'"
+msgstr "Magia de pathspec '%c' no implementada en '%s'"
 
 #: pathspec.c:450
 #, c-format
@@ -6095,7 +6134,7 @@
 #: pathspec.c:552
 #, c-format
 msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: magic pathspec no soportado por este comando: %s"
+msgstr "%s: magia de pathspec no soportada por este comando: %s"
 
 #: pathspec.c:619
 #, c-format
@@ -6105,7 +6144,7 @@
 #: pathspec.c:664
 #, c-format
 msgid "line is badly quoted: %s"
-msgstr "la línea está mál citada: %s"
+msgstr "la línea está mál entrecomillada: %s"
 
 #: pkt-line.c:92
 msgid "unable to write flush packet"
@@ -6116,8 +6155,8 @@
 msgstr "no es posible escribir delim packet"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "no es posible escribir un paquete separador sin estado (stateless)"
+msgid "unable to write response end packet"
+msgstr "no es posible escribir paquete de respuesta final"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6174,21 +6213,21 @@
 
 #: pretty.c:988
 msgid "unable to parse --pretty format"
-msgstr "incapaz de analizar el formato --pretty"
+msgstr "incapaz de analizar el formato de --pretty"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote: no se puede bifurcar el subproceso de recuperación"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "proiso-remote: no se pudo escribir para recuperar el subproceso"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr "promisor-remote: no se pudo cerrar stdin para recuperar el subproceso"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "nombre remoto promisor no puede comenzar con '/': %s"
@@ -6199,7 +6238,7 @@
 
 #: prune-packed.c:35
 msgid "Removing duplicate objects"
-msgstr "Removiendo objetos duplicados"
+msgstr "Quitando objetos duplicados"
 
 #: range-diff.c:78
 msgid "could not start `log`"
@@ -6207,9 +6246,9 @@
 
 #: range-diff.c:80
 msgid "could not read `log` output"
-msgstr "no se pudo leer output de `log`"
+msgstr "no se pudo leer salida de `log`"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "no se pudo analizar commit '%s'"
@@ -6220,72 +6259,73 @@
 "could not parse first line of `log` output: did not start with 'commit ': "
 "'%s'"
 msgstr ""
-"no se pudo leer la primera línea de salida `log`: no comienza con 'commit ': "
-"'%s'"
+"no se pudo leer la primera línea de salida de `log`: no comienza con 'commit "
+"': '%s'"
 
 #: range-diff.c:140
 #, c-format
 msgid "could not parse git header '%.*s'"
 msgstr "no se puede analizar git header '%.*s'"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "falló al generar diff"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only y --right-only son mutuamente exclusivas"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "no se pudo leer el log para '%s'"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
-msgstr "no agregará alias de archivo '%s' ('%s' ya existe en el index)"
+msgstr "no agregará alias de archivo '%s' ('%s' ya existe en el índice)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "no se puede crear un blob vacío en la base de datos de objetos"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
-"%s: solo puede agregar archivos regulares, symbolic links o git-directories"
+"%s: solo se pueden agregar archivos regulares, symbolic links o git-"
+"directories"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' no tiene un commit checked out"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "no es posible indexar archivo '%s'"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "no es posible agregar '%s' al index"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
-msgstr "incapaz de correr stat en '%s'"
+msgstr "incapaz de hacer stat en '%s'"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' parece ser un directorio y un archivo a la vez"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Refrescar index"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6294,7 +6334,7 @@
 "index.version configurado, pero el valor no es válido.\n"
 "Usando versión %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6303,146 +6343,146 @@
 "GIT_INDEX_VERSION configurado, pero el valor no es válido.\n"
 "Usando versión %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "mala firma 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
-msgstr "mala versión del índice %d"
+msgstr "mala versión de índice %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "mala firma sha1 del archivo index"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
-msgstr "index usa %.4s extensiones, cosa que no entendemos"
+msgstr "index usa la extensión %.4s, cosa que no entendemos"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "ignorando extensión %.4s"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
-msgstr "formato de index desconocido 0x%08x"
+msgstr "formato de índice desconocido 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
-msgstr "campo nombre malformado en el index, cerca a ruta '%s'"
+msgstr "campo nombre malformado en el índice, cerca de ruta '%s'"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "entradas en stage desordenadas en index"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
-msgstr "múltiples entradas extrañas para archivo fusionado '%s'"
+msgstr "múltiples entradas de stage para archivo fusionado '%s'"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "entradas de stage desordenadas para '%s'"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "archivo índice corrompido"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "no es posible crear hilo load_cache_entries: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
-msgstr "no es posible unir hilo load_cache_entires: %s"
+msgstr "no es posible unir hilo load_cache_entries: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: falló al abrir el archivo index"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
-msgstr "%s: no se puede hacer stat del index abierto"
+msgstr "%s: no se puede hacer stat en el índice abierto"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: archivo index más pequeño de lo esperado"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: no se pudo mapear el archivo index"
+msgid "%s: unable to map index file%s"
+msgstr "%s: no se pudo mapear el archivo index %s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "no es posible crear hilo load_index_extensions: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "no es posible unir hilo load_index_extensions: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
-msgstr "no se pudo refrescar el index compartido '%s'"
+msgstr "no se pudo refrescar el índice compartido '%s'"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "index roto, se esperaba %s en %s, se obtuvo %s"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "no se pudo cerrar '%s'"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "falló al convertir a un índice sparse"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
-msgstr "no se pudo definir '%s'"
+msgstr "no se pudo hacer stat en '%s'"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "no es posible abrir el directorio de git: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "no es posible eliminar el vinculo: %s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "no se pudo arreglar bits de permisos en '%s'"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
-msgstr "%s: no se puede eliminar a stage #0"
+msgstr "%s: no se puede eliminar hasta stage #0"
 
 #: rebase-interactive.c:11
 msgid ""
@@ -6496,7 +6536,7 @@
 "\t, a menos que se use -C, en cuyo caso\n"
 "\tmantiene solo el mensaje del commit; -c es lo mismo que -C\n"
 "\tpero abre el editor\n"
-"x, exec <commit> = ejecuta comando ( el resto de la línea) usando un shell\n"
+"x, exec <commit> = ejecuta comando (el resto de la línea) usando un shell\n"
 "b, break = parar aquí (continuar rebase luego con 'git rebase --continue')\n"
 "d, drop <commit> = eliminar commit\n"
 "l, label <label> = poner label al HEAD actual con un nombre\n"
@@ -6522,7 +6562,7 @@
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 "\n"
-"No eliminar ninguna línea. Usa 'drop' explícitamente para borrar un commit\n"
+"No elimines ninguna línea. Usa 'drop' explícitamente para borrar un commit.\n"
 
 #: rebase-interactive.c:78 git-rebase--preserve-merges.sh:222
 msgid ""
@@ -6556,8 +6596,8 @@
 "Como sea, si quieres borrar todo, el rebase será abortado.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "no se pudo escribir '%s'"
@@ -6574,8 +6614,8 @@
 "Warning: some commits may have been dropped accidentally.\n"
 "Dropped commits (newer to older):\n"
 msgstr ""
-"Peligro: algunos commits pueden haber sido botados de forma accidental.\n"
-"Commits botados (empezando con el más nuevo):\n"
+"Peligro: algunos commits pueden haber sido descartados de forma accidental.\n"
+"Commits descartados (empezando con el más nuevo):\n"
 
 #: rebase-interactive.c:203
 #, c-format
@@ -6592,7 +6632,7 @@
 "\n"
 "Use 'git config rebase.missingCommitsCheck' para cambiar el nivel de "
 "advertencias.\n"
-"Los posibles comportamientos son: ignore,warn,error.\n"
+"Los posibles comportamientos son: ignore, warn, error.\n"
 "\n"
 
 #: rebase-interactive.c:236 rebase-interactive.c:241 sequencer.c:2597
@@ -6602,7 +6642,7 @@
 msgid "could not read '%s'."
 msgstr "no se puede leer '%s'."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "desaparecido"
 
@@ -6621,248 +6661,249 @@
 msgid "ahead %d, behind %d"
 msgstr "delante %d, detrás %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "formato esperado: %%(color:<color>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "color no reconocido: %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Valor entero esperado refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valor entero esperado refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
-msgstr "argumento: %s no reconocido %%(%s)"
+msgstr "argumento %%(%s) no reconocido: %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) no toma ningún argumento"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "%%(objectsize) no reconocido argumento: %s"
+msgstr "argumento %%(objectsize) no reconocido: %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) no toma argumentos"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) no toma ningún argumento"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
-msgstr "argumento %%(sujeto) no reconocido: %s"
+msgstr "argumento %%(subject) no reconocido: %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "se esperaba %%(trailers:key=<value>)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
-msgstr "%%(trailers) desconocidos, argumento: %s"
+msgstr "argumento %%(trailers) desconocido: %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valor positivo esperado contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
-msgstr "argumento %s no reconocido %%(contents)"
+msgstr "argumento %%(contents) no reconocido: %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
-msgstr "valor positivo esperado '%s' en %% (%s)"
+msgstr "valor positivo esperado '%s' en %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
-msgstr "argumento no reconocido:'%s' en %%(%s)"
+msgstr "argumento '%s' no reconocido en %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "opción de email desconocida: %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "formato esperado: %%(align:<ancho>,<posición>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "posición desconocida: %s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "ancho desconocido: %s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argumento no reconocido para %%(align): %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "se esperaba un ancho positivo con el átomo %%(align)"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
-msgstr "argumento: %s no reconocido %%(if)"
+msgstr "argumento %%(if) no reconocido: %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nombre mal formado de campo: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nombre de campo desconocido: %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
-"no es un repositorio git, pero el campo '%.*s' requiere acceso al objeto data"
+"no es un repositorio git, pero el campo '%.*s' requiere acceso a los datos "
+"de objeto"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(if) usado sin un átomo %%(then)"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(then) usado sin átomo %%(if)"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "formato: átomo %%(then) usado más de una vez"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "formato: átomo %%(then) usado después de %%(else)"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(if)"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(then)"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "formato: átomo %%(else) usado más de una vez"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "formato: átomo %%(end) usado sin átomo correspondiente"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "formato de cadena mal formado %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(no hay rama, rebasando %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
-msgstr "(no una rama, rebasando con HEAD desacoplado %s)"
+msgstr "(no hay rama, rebasando con HEAD desacoplado %s)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(no hay rama, comenzando biseccón en %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD desacoplado en %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD desacoplado de %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(sin rama)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "falta objeto %s para %s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer falló en %s para %s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objeto mal formado en '%s'"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorando referencia con nombre roto %s"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorando referencia rota %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "formato: falta átomo %%(end)"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "nombre de objeto mal formado %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "opción '%s' debe apuntar a un commit"
@@ -6890,13 +6931,12 @@
 "predeterminado\n"
 "está sujeto a cambios. Para configurar el nombre de la rama inicial para "
 "usar en todos\n"
-"de sus nuevos repositorios, que suprimirán esta advertencia, llame a:\n"
+"de sus nuevos repositorios, reprimiendo esta advertencia, llame a:\n"
 "\n"
 "\tgit config --global init.defaultBranch <nombre>\n"
 "\n"
-"Los nombres comúnmente elegidos en lugar de 'maestro' son 'principal', "
-"'troncal' y\n"
-"'desarrollo'. Se puede cambiar el nombre de la rama recién creada mediante "
+"Los nombres comúnmente elegidos en lugar de 'master' son 'main', 'trunk' y\n"
+"'development'. Se puede cambiar el nombre de la rama recién creada mediante "
 "este comando:\n"
 "\n"
 "\tgit branch -m <nombre>\n"
@@ -6914,7 +6954,7 @@
 #: refs.c:674
 #, c-format
 msgid "ignoring dangling symref %s"
-msgstr "ignorando referencia rota %s"
+msgstr "ignorando referencia symbólica rota %s"
 
 #: refs.c:922
 #, c-format
@@ -6944,7 +6984,7 @@
 #: refs.c:2051
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
-msgstr "múltiples actualizaciones para ref '%s' no permitidas"
+msgstr "no se permiten múltiples actualizaciones para ref '%s'"
 
 #: refs.c:2131
 msgid "ref updates forbidden inside quarantine environment"
@@ -6952,7 +6992,7 @@
 
 #: refs.c:2142
 msgid "ref updates aborted by hook"
-msgstr "ref update abortado por el hook"
+msgstr "ref updates abortados por el hook"
 
 #: refs.c:2242 refs.c:2272
 #, c-format
@@ -6978,7 +7018,7 @@
 #: refs/files-backend.c:1245 refs/packed-backend.c:1555
 #, c-format
 msgid "could not delete references: %s"
-msgstr "no se pudo eliminar la referencia: %s"
+msgstr "no se pudo eliminar las referencias: %s"
 
 #: refspec.c:170
 #, c-format
@@ -7026,7 +7066,7 @@
 #: remote.c:1083
 #, c-format
 msgid "src refspec %s does not match any"
-msgstr "src refsoec %s: no concuerda con ninguno"
+msgstr "src refspec %s no concuerda con ninguno"
 
 #: remote.c:1088
 #, c-format
@@ -7050,8 +7090,8 @@
 "\n"
 "Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
-"El destino que provees no es un full refname (i.e.,\n"
-"comienza con \"refs/\"). Intentamos adivinar lo que quisiste decir:\n"
+"El destino que has provisto no es un full refname (i.e.,\n"
+"uno que comience con \"refs/\"). Intentamos adivinar lo que quisiste decir:\n"
 "\n"
 "- Buscando un ref que concuerde con '%s' en el lado remoto.\n"
 "- Revisando si el <src> es usado en el push('%s')\n"
@@ -7079,8 +7119,8 @@
 "Did you mean to create a new tag by pushing to\n"
 "'%s:refs/tags/%s'?"
 msgstr ""
-"The <src> part of the refspec is a tag object.\n"
-"Did you mean to create a new tag by pushing to\n"
+"La parte <src> del refspec es un objeto etiqueta.\n"
+"¿Quisiste crear una etiqueta nueva mediante un push a\n"
 "'%s:refs/tags/%s'?"
 
 #: remote.c:1133
@@ -7092,7 +7132,7 @@
 msgstr ""
 "La parte <src> del refspec es un objeto tree.\n"
 "¿Quisiste crear un tag nuevo mediante un push a\n"
-"'%s:refs/heads/%s'?"
+"'%s:refs/tags/%s'?"
 
 #: remote.c:1138
 #, c-format
@@ -7103,12 +7143,12 @@
 msgstr ""
 "La parte <src> del refspec es un objeto blob.\n"
 "¿Quisiste crear un tag nuevo mediante un push a\n"
-"'%s:refs/heads/%s'?"
+"'%s:refs/tags/%s'?"
 
 #: remote.c:1174
 #, c-format
 msgid "%s cannot be resolved to branch"
-msgstr "%s no puede ser resolver a un branch"
+msgstr "%s no puede ser resuelto a un branch"
 
 #: remote.c:1185
 #, c-format
@@ -7142,7 +7182,7 @@
 #: remote.c:1742
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
-msgstr "la rama '%s' de upstream no es guardad como rama de rastreo remoto"
+msgstr "la rama '%s' de upstream no es guardada como rama de rastreo remoto"
 
 #: remote.c:1757
 #, c-format
@@ -7162,7 +7202,7 @@
 
 #: remote.c:1792
 msgid "push has no destination (push.default is 'nothing')"
-msgstr "push no tiene destino (push.default es 'nada')"
+msgstr "push no tiene destino (push.default es 'nothing')"
 
 #: remote.c:1814
 msgid "cannot resolve 'simple' push to a single destination"
@@ -7171,12 +7211,12 @@
 #: remote.c:1943
 #, c-format
 msgid "couldn't find remote ref %s"
-msgstr "no se puedo encontrar ref remota %s"
+msgstr "no se pudo encontrar ref remota %s"
 
 #: remote.c:1956
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
-msgstr "* Ignorando ref graciosa '%s' localmente"
+msgstr "* Ignorando ref extraña '%s' localmente"
 
 #: remote.c:2119
 #, c-format
@@ -7237,7 +7277,7 @@
 "and have %d and %d different commits each, respectively.\n"
 msgstr[0] ""
 "Tu rama y '%s' han divergido,\n"
-"y se tiene %d y %d commit diferentes en cada una respectivamente.\n"
+"y tienen %d y %d commits diferentes cada una respectivamente.\n"
 msgstr[1] ""
 "Tu rama y '%s' han divergido,\n"
 "y tienen %d y %d commits diferentes cada una respectivamente.\n"
@@ -7264,7 +7304,7 @@
 #: replace-object.c:82
 #, c-format
 msgid "replace depth too high for object %s"
-msgstr "remplazar profundiad muy elevada para objeto %s"
+msgstr "profundiad de reemplazo demasiada para objeto %s"
 
 #: rerere.c:201 rerere.c:210 rerere.c:213
 msgid "corrupt MERGE_RR"
@@ -7322,10 +7362,10 @@
 #: rerere.c:791
 #, c-format
 msgid "Recorded preimage for '%s'"
-msgstr "Resolución precargada para '%s'"
+msgstr "Preimagen grabada para '%s'"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "no se pudo crear el directorio '%s'"
@@ -7348,7 +7388,7 @@
 #: rerere.c:1071
 #, c-format
 msgid "Updated preimage for '%s'"
-msgstr "Actualizada preimagen para '%s'"
+msgstr "Preimagen actualizada para '%s'"
 
 #: rerere.c:1080
 #, c-format
@@ -7363,46 +7403,45 @@
 msgid "could not determine HEAD revision"
 msgstr "no se pudo determinar revisión HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "falló al encontrar árbol de %s"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
-msgstr "--unpacked=<packfile>  ya no es soportado"
+msgstr "--unpacked=<packfile> ya no es soportado"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "tu rama actual parece estar rota"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "tu rama actual '%s' no tiene ningún commit todavía"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L no soporta todavía formatos de diff fuera de -p y -s"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "falló al abrir /dev/null"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "no es posible crear hilo async: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
 "El hook '%s' fue ignorado porque no ha sido configurado como ejecutable.\n"
-"Puedes desactivar esta advertencias con `git config advice.ignoredHook "
-"false`."
+"Puedes desactivar esta advertencia con `git config advice.ignoredHook false`."
 
 #: send-pack.c:150
 msgid "unexpected flush packet while reading remote unpack status"
@@ -7432,27 +7471,27 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "negociación push falló; procediendo con el push de todas formas"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "el destino no soporta el algoritmo de hash de este repositorio"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
-msgstr "el final receptor no soporta --signed push"
+msgstr "el final receptor no soporta push --signed"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr ""
 "no se manda un certificado de push ya que el destino no soporta push firmado "
-"(--signed )"
+"(--signed)"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
-msgstr "el destino no soporta push atómicos (--atomic)"
+msgstr "el destino no soporta push atómico (--atomic)"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "el destino no soporta opciones de push"
 
@@ -7469,7 +7508,7 @@
 #: sequencer.c:344 builtin/rebase.c:757 builtin/rebase.c:1592 builtin/rm.c:402
 #, c-format
 msgid "could not remove '%s'"
-msgstr "no se pudo eliminar'%s'"
+msgstr "no se pudo eliminar '%s'"
 
 #: sequencer.c:354
 msgid "revert"
@@ -7512,7 +7551,7 @@
 msgstr "no se pudo bloquear '%s'"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "no se pudo escribir en '%s'"
@@ -7523,7 +7562,7 @@
 msgstr "no se pudo escribir EOL en '%s'"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "falló al finalizar '%s'"
@@ -7535,7 +7574,7 @@
 
 #: sequencer.c:490
 msgid "commit your changes or stash them to proceed."
-msgstr "realiza un commit con tus cambios o aplica un stash para proceder."
+msgstr "realiza un commit con tus cambios o haz un stash para proceder."
 
 #: sequencer.c:522
 #, c-format
@@ -7557,7 +7596,7 @@
 
 #: sequencer.c:685
 msgid "unable to update cache tree"
-msgstr "no es posible actualizar el árbol de la caché"
+msgstr "no es posible actualizar el árbol de caché"
 
 #: sequencer.c:699
 msgid "could not resolve HEAD commit"
@@ -7571,10 +7610,10 @@
 #: sequencer.c:790
 #, c-format
 msgid "unable to dequote value of '%s'"
-msgstr "no es posible dequote para '%s'"
+msgstr "no es posible dequote valor de '%s'"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "no se pudo abrir '%s' para lectura"
@@ -7657,8 +7696,8 @@
 "    git commit --amend --reset-author\n"
 msgstr ""
 "Tu nombre y correo fueron configurados automáticamente basados\n"
-"en tu usuario y nombre de host. Por favor verifica que son correctos.\n"
-"Tu puedes suprimir este mensaje configurándolos de forma explicita. Ejecuta "
+"en tu usuario y nombre de host. Por favor verifica que sean correctos.\n"
+"Tú puedes suprimir este mensaje configurándolos de forma explícita. Ejecuta "
 "el\n"
 "siguiente comando y sigue las instrucciones de tu editor\n"
 " para modificar tu archivo de configuración:\n"
@@ -7683,8 +7722,8 @@
 "    git commit --amend --reset-author\n"
 msgstr ""
 "Tu nombre y correo fueron configurados automáticamente basados\n"
-"en tu usuario y nombre de host. Por favor verifica que son correctos.\n"
-"Tu puedes suprimir este mensaje configurándolos de forma explicita:\n"
+"en tu usuario y nombre de host. Por favor verifica que sean correctos.\n"
+"Tú puedes suprimir este mensaje configurándolos de forma explícita:\n"
 "\n"
 "    git config --global user.name \"Tu nombre\"\n"
 "    git config --global user.email you@example.com\n"
@@ -7722,7 +7761,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "¡HEAD %s no es un commit!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "no se pudo analizar el commit de HEAD"
 
@@ -7730,7 +7769,7 @@
 msgid "unable to parse commit author"
 msgstr "no es posible analizar el autor del commit"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree falló al escribir el árbol"
 
@@ -7746,14 +7785,15 @@
 
 #: sequencer.c:1491
 msgid "corrupt author: missing date information"
-msgstr "autor corrupto: falta información"
+msgstr "autor corrupto: falta información de fecha"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "falló al escribir el objeto commit"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "no se puede actualizar %s"
@@ -7805,7 +7845,7 @@
 msgid "need a HEAD to fixup"
 msgstr "se necesita un HEAD para arreglar"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "no se pudo leer HEAD"
 
@@ -7866,7 +7906,7 @@
 #: sequencer.c:2287
 #, c-format
 msgid "dropping %s %s -- patch contents already upstream\n"
-msgstr "botando $%s %s -- contenidos del parche ya están en upstream\n"
+msgstr "descartando $%s %s -- contenidos del parche ya están en upstream\n"
 
 #: sequencer.c:2345
 #, c-format
@@ -7881,12 +7921,12 @@
 #: sequencer.c:2425
 #, c-format
 msgid "%s does not accept arguments: '%s'"
-msgstr "%s no acepta los argumentos: '%s'"
+msgstr "%s no acepta argumentos: '%s'"
 
 #: sequencer.c:2434
 #, c-format
 msgid "missing arguments for %s"
-msgstr "faltan argumentos para para %s"
+msgstr "faltan argumentos para %s"
 
 #: sequencer.c:2477
 #, c-format
@@ -7901,7 +7941,7 @@
 #: sequencer.c:2549
 #, c-format
 msgid "cannot '%s' without a previous commit"
-msgstr "no se puede  '%s' sin un commit previo"
+msgstr "no se puede '%s' sin un commit previo"
 
 #: sequencer.c:2635
 msgid "cancelling a cherry picking in progress"
@@ -7946,7 +7986,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "hoja de opciones mal formada: '%s'"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "conjunto de commits vacío entregado"
 
@@ -7957,7 +7997,7 @@
 #: sequencer.c:3031
 #, c-format
 msgid "try \"git revert (--continue | %s--abort | --quit)\""
-msgstr "intenta \"git revert (--continue | --quit | %s --abort)\""
+msgstr "intenta \"git revert (--continue | %s--abort | --quit)\""
 
 #: sequencer.c:3034
 msgid "cherry-pick is already in progress"
@@ -7966,7 +8006,7 @@
 #: sequencer.c:3036
 #, c-format
 msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
-msgstr "intenta \"git cherry-pick (--continue | --quit | %s --abort)\""
+msgstr "intenta \"git cherry-pick (--continue | %s--abort | --quit)\""
 
 #: sequencer.c:3050
 #, c-format
@@ -7977,7 +8017,7 @@
 msgid "could not lock HEAD"
 msgstr "no se pudo bloquear HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "ningún cherry-pick o revert en progreso"
 
@@ -7989,7 +8029,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "no se puede abortar de una rama por nacer"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "no se puede abrir '%s'"
@@ -8006,7 +8046,7 @@
 #: sequencer.c:3168
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr "archivo HEAD de pre-cherry-pick guardado '%s' está corrupto"
+msgstr "archivo HEAD '%s' guardado antes de cherry-pick está corrupto"
 
 #: sequencer.c:3179
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
@@ -8037,7 +8077,7 @@
 "¿ya has hecho el commit?\n"
 "intenta \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "no se puede leer HEAD"
 
@@ -8059,11 +8099,11 @@
 msgstr ""
 "Puedes enmendar el commit ahora, con\n"
 "\n"
-"\tgit commit --amend %s\n"
+"  git commit --amend %s\n"
 "\n"
 "Una vez que estés satisfecho con los cambios, ejecuta\n"
 "\n"
-"\tgit rebase --continue\n"
+"  git rebase --continue\n"
 
 #: sequencer.c:3446
 #, c-format
@@ -8121,90 +8161,90 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "nombre de label ilegal: '%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "escribiendo commit raíz falso"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "escribiendo squash-onto"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "no se pudo resolver '%s'"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "no se puede fusionar sin una versión actual"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "no se puede analizar '%.*s'"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "nada para fusionar: '%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "fusión octopus no puede ser ejecutada en la punta de un [nuevo root]"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "no se puede leer el mensaje del commit '%s'"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
-msgstr "no se pudo intentar fusionar '%.*s'"
+msgstr "ni se pudo intentar fusionar '%.*s'"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "fusión: No se puede escribir el nuevo archivo índice"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "No se puede ejecutar autostash"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Respuesta de stash inesperada: '%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "No se pudo crear el directorio para '%s'"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Autostash creado: %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "no se pudo reset --hard"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Autostash aplicado.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "no se puede guardar %s"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8216,29 +8256,29 @@
 "Puedes ejecutar \"git stash pop\" o \"git stash drop\" en cualquier "
 "momento.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
-msgstr "Apicar autostash resultó en conflictos."
+msgstr "Aplicar autostash resultó en conflictos."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Autostash existe; creando una nueva entrada stash."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
-msgstr "no se puede desacoplar HEAD"
+msgstr "no se pudo desacoplar HEAD"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Detenido en HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Detenido en %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8259,58 +8299,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Aplicando rebase (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Detenido en %s...  %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "comando desconocido %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
-msgstr "no se puede leer orig-head"
+msgstr "no se pudo leer orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
-msgstr "no se puede leer 'onto'"
+msgstr "no se pudo leer 'onto'"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
-msgstr "no se puede actualizar HEAD a %s"
+msgstr "no se pudo actualizar HEAD a %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Rebase aplicado satisfactoriamente y actualizado %s.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "no se puede realizar rebase: Tienes cambios fuera del área de stage."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "no se puede arreglar un commit no existente"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "archivo inválido: '%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "contenido inválido: '%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8321,50 +8361,50 @@
 "un commit con estos\n"
 "primero y luego ejecuta 'git rebase --continue' de nuevo."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "no se pudo escribir el archivo: '%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "no se puede eliminar CHERRY_PICK_HEAD"
+msgstr "no se pudo eliminar CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "no se pudo realizar el commit con los cambios en el área de stage."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: no se puede aplicar cherry-pick a un %s"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: revisión errónea"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "no se puede revertir como commit inicial"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: opciones desconocidas"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
-msgstr "make_script: error preparando revisiones"
+msgstr "make_script: error al preparar revisiones"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "nada que hacer"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "no se pudo saltar los comandos pick innecesarios"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "este script ya fue reorganizado."
 
@@ -8417,103 +8457,107 @@
 "no es posible configurar el directorio de trabajo usando una configuración "
 "inválida"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "esta operación debe ser realizada en un árbol de trabajo"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
-msgstr "Se esperaba versión de git repo  <= %d, encontrada %d"
+msgstr "Se esperaba versión de git repo <= %d, se encontró %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "se encontró extensión de repositorio desconocida:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "se encontró extensión de repositorio desconocida:"
+msgstr[1] "se encontraron extensiones de repositorio desconocidas:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "versión de repo es 0, pero extensión v1-only encontrada:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "versión de repo es 0, pero se encontró extensión v1-only:"
+msgstr[1] "versión de repo es 0, pero se encontraron extensiones v1-only:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
-msgstr "error abriendo '%s'"
+msgstr "error al abrir '%s'"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
-msgstr "muy grande para ser un archivo .git: '%s'"
+msgstr "demasiado grande para ser un archivo .git: '%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
-msgstr "error leyendo %s"
+msgstr "error al leer %s"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "formato gitfile inválido: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "no hay ruta en gitfile: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "no es un repositorio git: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
-msgstr "'$%s' muy grande"
+msgstr "'$%s' demasiado grande"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "no es un repositorio git: '%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "no se puede aplicar chdir a '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "no se puede volver a cwd"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "falló al determinar '%*s%s%s'"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Incapaz de leer el directorio de trabajo actual"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "no se puede cambiar a '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 "no es un repositorio git (ni ninguno de los directorios superiores): %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"no es un repositorio git ( o ningún padre en el punto de montado %s)\n"
-"Parando en el límite del sistema de archivos "
+"no es un repositorio git (ni ningún padre en el punto de montaje %s)\n"
+"Parando a la frontera del sistema de archivos "
 "(GIT_DISCOVERY_ACROSS_FILESYSTEM no establecido)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8522,27 +8566,27 @@
 "problema con el valor del modo de archivo core.sharedRepository (0%.3o).\n"
 "El dueño de los archivos tiene que tener permisos de lectura y escritura."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
-msgstr "falló al abrir /dev/null o dup"
+msgstr "falló al abrir /dev/null o hacer dup"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "falló fork"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "falló setsid"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "intentando usar sparse-index sin modo cono"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "no es posible actualizar el cache del árbol, manteniendo full"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "la entrada de índice es un directorio, pero no escazo (%08x)"
@@ -8599,7 +8643,7 @@
 msgstr[0] "%u bytes/s"
 msgstr[1] "%u bytes/s"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8613,7 +8657,7 @@
 #: submodule-config.c:237
 #, c-format
 msgid "ignoring suspicious submodule name: %s"
-msgstr "ignorando submódulo sospechoso: %s"
+msgstr "ignorando nombre de submódulo sospechoso: %s"
 
 #: submodule-config.c:304
 msgid "negative values not allowed for submodule.fetchjobs"
@@ -8639,7 +8683,8 @@
 #: submodule.c:114 submodule.c:143
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
-"No se puede cambiar .gitmodules no fusionados, resuelva este problema primero"
+"No se puede cambiar .gitmodules no fusionados, primero resuelva los "
+"conflictos de fusión"
 
 #: submodule.c:118 submodule.c:147
 #, c-format
@@ -8670,21 +8715,21 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "mal argumento --ignore-submodules: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr ""
-"Submódulo en el commit %s en ruta: '%s' colisiona con un submódulo llamado "
-"igual. Saltandolo."
+"Submódulo en el commit %s en la ruta: '%s' colisiona con un submódulo "
+"llamado igual. Saltándolo."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "entrada de submódulo '%s' (%s) es un %s, no un commit"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8693,36 +8738,36 @@
 "No se pudo ejecutar comando 'git rev-list <commits> --not --remotes -n 1' en "
 "el submódulo %s"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "proceso para submódulo '%s' falló"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Falló al resolver HEAD como un ref válido."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Empujando submódulo '%s'\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "No es posible hacer push al submódulo '%s'\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Haciendo fetch al submódulo %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
-msgstr "No pudo acceder al submódulo '%s'\n"
+msgstr "No se pudo acceder al submódulo '%s'\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8731,61 +8776,62 @@
 "Errores durante el fetch del submódulo:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' no reconocido como un repositorio git"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
-msgstr "No se pudo ejecutar 'git status --procelain=2' en el submódulo %s"
+msgstr "No se pudo ejecutar 'git status --porcelain=2' en el submódulo %s"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
-msgstr "'git status --procelain=2' falló en el submódulo %s"
+msgstr "'git status --porcelain=2' falló en el submódulo %s"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "no se pudo comenzar 'git status' en el submódulo '%s'"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "no se pudo ejecutar 'git status' en el submódulo '%s'"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "No se pudo quitar configuración core.worktree en submódulo '%s'"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
-msgstr "no pudo recursar en el submódulo '%s'"
+msgstr "no se pudo recursar en el submódulo '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
-msgstr "no se pudo reiniciar el index del submódulo"
+msgstr "no se pudo reiniciar el índice del submódulo"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "submódulo '%s' tiene un índice corrupto"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Submódulo '%s' no pudo ser actualizado."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
-msgstr "submódulo git dir '%s' esta dentro de git dir '%.*s'"
+msgstr ""
+"directorio de git del submódulo '%s' está dentro del directorio de git '%.*s'"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8793,17 +8839,17 @@
 "relocate_gitdir para el submódulo '%s' con más de un árbol de trabajo no "
 "soportado"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "no se pudo resolver el nombre para el submódulo '%s'"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "rechazando mover '%s' dentro de un directorio git existente"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8814,11 +8860,11 @@
 "'%s' hacia\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "no se pudo comenzar ls-files en .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree devolvió un código %d inesperado"
@@ -8855,14 +8901,14 @@
 msgid "could not read input file '%s'"
 msgstr "no se pudo leer el archivo de entrada '%s'"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "no se pudo leer desde stdin"
 
 #: trailer.c:1024 wrapper.c:676
 #, c-format
 msgid "could not stat %s"
-msgstr "no se pudo definir %s"
+msgstr "no se pudo hacer stat en %s"
 
 #: trailer.c:1026
 #, c-format
@@ -8894,7 +8940,7 @@
 
 #: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
-msgstr "no se puede duplicar output de fd del helper"
+msgstr "no se puede duplicar fd de salida del helper"
 
 #: transport-helper.c:214
 #, c-format
@@ -8935,17 +8981,17 @@
 #: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
-msgstr "respuesta para conectar desconocida: %s"
+msgstr "respuesta al conectar desconocida: %s"
 
 #: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
-msgstr "configurando servicio de ruta remota no soportado por el protocolo"
+msgstr "configurar servicio de ruta remota no soportado por el protocolo"
 
 #: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "ruta de servicio remoto inválida"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "operación no soportada por protocolo"
 
@@ -8954,7 +9000,7 @@
 msgid "can't connect to subservice %s"
 msgstr "no se puede conectar al subservicio %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only requiere protocolo v2"
 
@@ -9031,7 +9077,7 @@
 #: transport-helper.c:1224
 #, c-format
 msgid "unsupported object format '%s'"
-msgstr "formado de objeto no soportado '%s'"
+msgstr "formato de objeto no soportado '%s'"
 
 #: transport-helper.c:1233
 #, c-format
@@ -9041,12 +9087,12 @@
 #: transport-helper.c:1385
 #, c-format
 msgid "read(%s) failed"
-msgstr "leer(%s) falló"
+msgstr "read(%s) falló"
 
 #: transport-helper.c:1412
 #, c-format
 msgid "write(%s) failed"
-msgstr "escribir(%s) falló"
+msgstr "write(%s) falló"
 
 #: transport-helper.c:1461
 #, c-format
@@ -9087,46 +9133,46 @@
 msgid "could not read bundle '%s'"
 msgstr "no se pudo leer el conjunto '%s'"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
-msgstr "transport: opción inválida '%s'"
+msgstr "transport: opción de profundidad inválida '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "ver protocol.version en 'git help config' para más información"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "opciones del servidor requieren protocolo versión 2 o posterior"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "el servidor no soporta wait-for-done"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "no se pudo analizar valor de configuración transport.color.*"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "soporte para protocolo v2 no implementado todavía"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valor desconocido para configuración '%s': %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transporte '%s' no permitido"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync ya no es soportado"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9135,7 +9181,7 @@
 "La siguiente ruta de submódulo contiene cambios que no\n"
 "pueden ser encontrados en ningún remoto:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9162,17 +9208,17 @@
 "para hacer un push al remoto.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Abortando."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "falló al hacer push a todos los submódulos necesarios"
 
 #: tree-walk.c:33
 msgid "too-short tree object"
-msgstr "objeto de árbol muy corto"
+msgstr "objeto de árbol demasiado corto"
 
 #: tree-walk.c:39
 msgid "malformed mode in tree entry"
@@ -9184,7 +9230,7 @@
 
 #: tree-walk.c:118
 msgid "too-short tree file"
-msgstr "archivo de árbol muy corto"
+msgstr "archivo de árbol demasiado corto"
 
 #: unpack-trees.c:115
 #, c-format
@@ -9195,7 +9241,7 @@
 "Los cambios locales de los siguientes archivos serán sobrescritos por "
 "checkout:\n"
 "%%sPor favor realiza un commit con los cambios o un stash antes de cambiar "
-"ramas."
+"de rama."
 
 #: unpack-trees.c:117
 #, c-format
@@ -9263,7 +9309,7 @@
 msgstr ""
 "Los siguientes archivos sin seguimiento en el árbol de trabajo serán "
 "eliminados al actualizar el árbol de trabajo:\n"
-"%%sPor favor, muévelos o elimínalos antes de intercambiar ramas."
+"%%sPor favor, muévelos o elimínalos antes de cambiar de rama."
 
 #: unpack-trees.c:138
 #, c-format
@@ -9272,7 +9318,7 @@
 "%%s"
 msgstr ""
 "Los siguientes archivos sin seguimiento del árbol de trabajo serán "
-"eliminadosal actualizar el árbol de trabajo:\n"
+"eliminados al actualizar el árbol de trabajo:\n"
 "%%s"
 
 #: unpack-trees.c:141
@@ -9291,8 +9337,8 @@
 "The following untracked working tree files would be removed by merge:\n"
 "%%s"
 msgstr ""
-"Los siguientes archivos sin seguimiento de árbol de trabajo serán "
-"eliminadosal fusionar:\n"
+"Los siguientes archivos sin seguimiento de árbol de trabajo serán eliminados "
+"al fusionar:\n"
 "%%s"
 
 #: unpack-trees.c:146
@@ -9324,7 +9370,7 @@
 msgstr ""
 "Los siguientes archivos sin seguimiento en el árbol de trabajo serán "
 "sobrescritos al actualizar el árbol de trabajo:\n"
-"%%sPor favor, muévelos o elimínalos antes de intercambiar ramas."
+"%%sPor favor, muévelos o elimínalos antes de cambiar de rama."
 
 #: unpack-trees.c:156
 #, c-format
@@ -9374,13 +9420,13 @@
 "%%s"
 msgstr ""
 "Los siguientes archivos no rastreados en el árbol de trabajo serán "
-"eliminadospor %s:\n"
+"eliminados por %s:\n"
 "%%s"
 
 #: unpack-trees.c:174
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
-msgstr "Entrada '%s' se superpone con '%s'.  No se pueden unir."
+msgstr "Entrada '%s' se solapa con '%s'.  No se pueden unir."
 
 #: unpack-trees.c:177
 #, c-format
@@ -9388,7 +9434,7 @@
 "Cannot update submodule:\n"
 "%s"
 msgstr ""
-"No se puede actualizar le submódulo:\n"
+"No se puede actualizar el submódulo:\n"
 "%s"
 
 #: unpack-trees.c:180
@@ -9398,8 +9444,8 @@
 "patterns:\n"
 "%s"
 msgstr ""
-"La siguientes rutas no están actualizadas y fueron dejadas a pesar del "
-"patrón especificado:\n"
+"Las siguientes rutas no están actualizadas y fueron dejadas a pesar de los "
+"patrones sparse:\n"
 "%s"
 
 #: unpack-trees.c:182
@@ -9420,7 +9466,7 @@
 "%s"
 msgstr ""
 "Las siguientes rutas ya estaban presentes y por eso no fueron actualizadas a "
-"pesar del patrón especificado:\n"
+"pesar de los patrones sparse:\n"
 "%s"
 
 #: unpack-trees.c:264
@@ -9447,15 +9493,15 @@
 "on a case-insensitive filesystem) and only one from the same\n"
 "colliding group is in the working tree:\n"
 msgstr ""
-"las siguientes rutas han colisionado (p.e. rutas con case-sensitive\n"
+"las siguientes rutas han colisionado (p.e. rutas case-sensitive\n"
 "en un filesystem case-insensitive) y solo una del grupo\n"
 "colisionando está en el árbol de trabajo:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
-msgstr "Actualizando flags del index"
+msgstr "Actualizando flags del índice"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -9480,7 +9526,7 @@
 
 #: urlmatch.c:232
 msgid "a 'file:' URL may not have a port number"
-msgstr "un 'archivo:' URL puede no tener un número de puerto"
+msgstr "un URL de 'file:' no puede tener número de puerto"
 
 #: urlmatch.c:247
 msgid "invalid characters in host name"
@@ -9488,7 +9534,7 @@
 
 #: urlmatch.c:292 urlmatch.c:303
 msgid "invalid port number"
-msgstr "numero de puerto inválido"
+msgstr "número de puerto inválido"
 
 #: urlmatch.c:371
 msgid "invalid '..' path segment"
@@ -9498,104 +9544,104 @@
 msgid "Fetching objects"
 msgstr "Haciendo fetch a objetos"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "falló al leer '%s'"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 "'%s' en el árbol de trabajo principal no es el directorio del repositorio"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "archivo '%s' no contiene una ruta absoluta a la ubicación del árbol de "
 "trabajo"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' no existe"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' no es un archivo .git, código de error %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' no apunta de vuelta a '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "no es un directorio"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git no es un archivo"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr "archivo .git roto"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr "archivo .git incorrecto"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "no es una ruta válida"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "no es posible ubicar el repositorio; .git no es un archivo"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr ""
-"incapaz de localizar el repositorio; El archivo .git no hace referencia a un "
+"incapaz de localizar el repositorio; el archivo .git no hace referencia a un "
 "repositorio"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "no es posible ubicar el repositorio; archivo .git roto"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir ilegible"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir incorrecto"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "no en un directorio válido"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "archivo gitdir no existe"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "no es posible leer archivo gitdir (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "lectura corta (se esperaba %<PRIuMAX> bytes, se leyó %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "archivo gitdir inválido"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "archivo gitdir apunta a una ubicación inexistente"
 
@@ -9640,18 +9686,18 @@
 #: wt-status.c:199 wt-status.c:203
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
-"  (usa \"git add/rm <archivo>...\" como una forma apropiada de marcar la "
+"  (usa \"git add/rm <archivo>...\" como sea apropiado para marcar la "
 "resolución)"
 
 #: wt-status.c:201
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (usa \"git rm <file>...\" para marcar la resolución)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Cambios a ser confirmados:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Cambios no rastreados para el commit:"
 
@@ -9687,11 +9733,11 @@
 
 #: wt-status.c:266
 msgid "both deleted:"
-msgstr "ambos borrados:"
+msgstr "borrados por ambos:"
 
 #: wt-status.c:268
 msgid "added by us:"
-msgstr "agregado por nosotros:"
+msgstr "agregados por nosotros:"
 
 #: wt-status.c:270
 msgid "deleted by them:"
@@ -9699,43 +9745,43 @@
 
 #: wt-status.c:272
 msgid "added by them:"
-msgstr "agregado por ellos:"
+msgstr "agregados por ellos:"
 
 #: wt-status.c:274
 msgid "deleted by us:"
-msgstr "borrado por nosotros:"
+msgstr "borrados por nosotros:"
 
 #: wt-status.c:276
 msgid "both added:"
-msgstr "ambos agregados:"
+msgstr "agregados por ambos:"
 
 #: wt-status.c:278
 msgid "both modified:"
-msgstr "ambos modificados:"
+msgstr "modificados por ambos:"
 
 #: wt-status.c:288
 msgid "new file:"
-msgstr "nuevo archivo:"
+msgstr "nuevos archivos:"
 
 #: wt-status.c:290
 msgid "copied:"
-msgstr "copiado:"
+msgstr "copiados:"
 
 #: wt-status.c:292
 msgid "deleted:"
-msgstr "borrado:"
+msgstr "borrados:"
 
 #: wt-status.c:294
 msgid "modified:"
-msgstr "modificado:"
+msgstr "modificados:"
 
 #: wt-status.c:296
 msgid "renamed:"
-msgstr "renombrado:"
+msgstr "renombrados:"
 
 #: wt-status.c:298
 msgid "typechange:"
-msgstr "cambio de tipo:"
+msgstr "cambios de tipo:"
 
 #: wt-status.c:300
 msgid "unknown:"
@@ -9743,7 +9789,7 @@
 
 #: wt-status.c:302
 msgid "unmerged:"
-msgstr "des-fusionado:"
+msgstr "sin fusión:"
 
 #: wt-status.c:382
 msgid "new commits, "
@@ -9757,30 +9803,30 @@
 msgid "untracked content, "
 msgstr "contenido no rastreado, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Tu stash actualmente tiene %d entrada"
 msgstr[1] "Tu stash actualmente tiene %d entradas"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Submódulos cambiados pero no actualizados:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Submódulos cambiados listos para realizar commit:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr ""
-"No modifique o borre la línea de encima.\n"
-"Todo lo que este por abajo será eliminado."
+"No modifique ni borre la línea de encima.\n"
+"Todo lo que esté por abajo será ignorado."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9791,107 +9837,107 @@
 "Tomó %.2f segundos para calcular los valores anterior/posterior del branch.\n"
 "Puedes usar '--no-ahead-behind' para evitar esto.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Tienes rutas no fusionadas."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
-msgstr "  (arregla los conflictos y corre \"git commit\""
+msgstr "  (arregla los conflictos y ejecuta \"git commit\""
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (usa \"git merge --abort\" para abortar la fusion)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Todos los conflictos resueltos pero sigues fusionando."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (usa \"git commit\" para concluir la fusión)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Estás en medio de una sesión am."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "El parche actual está vacío."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
-msgstr "  (arregla los conflictos y luego corre \"git am --continue\""
+msgstr "  (arregla los conflictos y luego ejecuta \"git am --continue\""
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (usa \"git am --skip\" para saltar este parche)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (usa \"git am --abort\" para restaurar la rama original)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo no está presente."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "No se realizaron los comandos."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "El último comando realizado (%d comando realizado):"
 msgstr[1] "Los últimos comandos realizados (%d comandos realizados):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (ver más en el archivo %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "No quedan más comandos."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Siguiente comando a realizar (%d comando restante):"
-msgstr[1] "Siguiente comandos a realizar (%d comandos faltantes):"
+msgstr[1] "Siguientes comandos a realizar (%d comandos faltantes):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (usa \"git rebase --edit-todo\" para ver y editar)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
-msgstr "Estás aplicando un rebase de la rama '%s' en '%s."
+msgstr "Estás aplicando un rebase de la rama '%s' sobre '%s."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Estás aplicando un rebase."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git rebase --continue\")"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (usa \"git rebase --skip\" para omitir este parche)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (usa \"git rebase --abort\" para volver a tu rama original)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (todos los conflictos corregidos: ejecuta \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9899,157 +9945,161 @@
 "Estás dividiendo un commit mientras aplicas un rebase de la rama '%s' en "
 "'%s'."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Estás dividiendo un commit durante un rebase."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Una vez que tu directorio de trabajo esté limpio, ejecuta \"git rebase --"
 "continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
-"Estás editando un commit mientras se aplica un rebase de la rama '%s' en "
+"Estás editando un commit mientras se aplica un rebase de la rama '%s' sobre "
 "'%s'."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Estás editando un commit durante un rebase."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (usa \"git commit --amend\" para enmendar el commit actual)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (usa \"git rebase --continue\" una vez que estés satisfecho con tus "
 "cambios)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick en progreso actualmente."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Estás realizando un cherry-picking en el commit %s."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (ejecuta \"git cherry-pick --continue\" para continuar)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (todos los conflictos corregidos: ejecuta \"git cherry-pick --continue\")"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (usa \"git cherry-pick --skip\" para saltar este parche)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (use \"git cherry-pick --abort\" para cancelar la operación cherry-pick)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
-msgstr "Revierte el estado en progreso actual."
+msgstr "Reversión en progreso actualmente."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Estás revirtiendo el commit %s."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (ejecuta \"git revert --continue\" para continuar)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (todos los conflictos corregidos: ejecuta \"git revert --continue\")"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (usa \"git revert --skip\" para omitir este parche)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (usa \"git revert --abort\" para cancelar la operación de revertir)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Estás aplicando un bisect, comenzando en la rama '%s'."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Estás aplicando un bisect."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (usa \"git bisect reset\" para volver a la rama original)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Estás en un sparse checkout."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "Estas en un checkout de sparse con %d%% archivos rastreados presentes."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "En la rama "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
-msgstr "rebase interactivo en progreso; en "
+msgstr "rebase interactivo en progreso; sobre "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
-msgstr "rebase en progreso; en "
+msgstr "rebase en progreso; sobre "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD desacoplada en "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD desacoplada de "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Actualmente no estás en ninguna rama."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Confirmación inicial"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "No hay commits todavía"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Archivos sin seguimiento"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Archivos ignorados"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10060,31 +10110,31 @@
 "puede acelerarlo, pero tienes que ser cuidadoso de no olvidar agregar\n"
 "nuevos archivos tú mismo (vea 'git help status')."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
-msgstr "Archivos no rastreados no son mostrados %s"
+msgstr "Archivos no rastreados no son mostrados%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (usa la opción -u para mostrar los archivos sin seguimiento)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Sin cambios"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "sin cambios agregados al commit (usa \"git add\" y/o \"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "no se agregaron cambios al commit\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10093,85 +10143,85 @@
 "no hay nada agregado al commit pero hay archivos sin seguimiento presentes "
 "(usa \"git add\" para hacerles seguimiento)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 "no hay nada agregado para confirmar, pero hay archivos sin seguimiento "
 "presentes\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "no hay nada para confirmar (crea/copia archivos y usa \"git add\" para "
 "hacerles seguimiento)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nada para hacer commit\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "nada para hacer commit (usa -u para mostrar los archivos no rastreados)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nada para hacer commit, el árbol de trabajo está limpio\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "No hay commits todavía en "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (sin rama)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "diferente"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "detrás "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "adelante "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "no se puede %s: Tienes cambios sin marcar."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "adicionalmente, tu índice contiene cambios que no están en un commit."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "no se puede %s: Tu índice contiene cambios que no están en un commit."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "no se pudo enviar el comando IPC"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "no se pudo leer la respuesta IPC"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "no se pudo iniciar el accept_thread '%s'"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "no se pudo iniciar el worker[0] para '%s'"
@@ -10183,7 +10233,7 @@
 
 #: builtin/add.c:26
 msgid "git add [<options>] [--] <pathspec>..."
-msgstr "git add [<opción>] [--] <especificación-de-ruta>..."
+msgstr "git add [<opciones>] [--] <especificación-de-ruta>..."
 
 #: builtin/add.c:61
 #, c-format
@@ -10197,7 +10247,7 @@
 
 #: builtin/add.c:104 builtin/commit.c:297
 msgid "updating files failed"
-msgstr "falló la actualización de carpetas"
+msgstr "falló la actualización de archivos"
 
 #: builtin/add.c:114
 #, c-format
@@ -10208,7 +10258,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Cambios fuera del área de stage tras refrescar el índice:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "No se pudo leer el índice"
 
@@ -10228,7 +10278,7 @@
 #: builtin/add.c:328
 #, c-format
 msgid "Could not stat '%s'"
-msgstr "No se pudo definir '%s'"
+msgstr "No se pudo hacer stat en '%s'"
 
 #: builtin/add.c:330
 msgid "Empty patch. Aborted."
@@ -10244,19 +10294,19 @@
 msgstr ""
 "Las siguientes rutas son ignoradas por uno de tus archivos .gitignore:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
-msgstr "dry run ( ejecución en seco)"
+msgstr "dry run (ejecución en seco)"
 
 #: builtin/add.c:366
 msgid "interactive picking"
 msgstr "selección interactiva"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
-msgstr "elegir hunks de forma interactiva"
+msgstr "elegir fragmentos de forma interactiva"
 
 #: builtin/add.c:368
 msgid "edit current diff and apply"
@@ -10264,11 +10314,11 @@
 
 #: builtin/add.c:369
 msgid "allow adding otherwise ignored files"
-msgstr "permitir agregar caso contrario ignorar archivos"
+msgstr "permitir agregar archivos que de otro modo se ignoren"
 
 #: builtin/add.c:370
 msgid "update tracked files"
-msgstr "actualizado las carpetas rastreadas"
+msgstr "actualizar los archivos rastreados"
 
 #: builtin/add.c:371
 msgid "renormalize EOL of tracked files (implies -u)"
@@ -10276,11 +10326,11 @@
 
 #: builtin/add.c:372
 msgid "record only the fact that the path will be added later"
-msgstr "grabar solo el hecho de que la ruta será agregada después"
+msgstr "grabar solo el hecho de que la ruta será agregada luego"
 
 #: builtin/add.c:373
 msgid "add changes from all tracked and untracked files"
-msgstr "agregar los cambios de todas las carpetas con y sin seguimiento"
+msgstr "agregar los cambios de todos los archivos con y sin seguimiento"
 
 #: builtin/add.c:376
 msgid "ignore paths removed in the working tree (same as --no-all)"
@@ -10293,11 +10343,12 @@
 
 #: builtin/add.c:379
 msgid "just skip files which cannot be added because of errors"
-msgstr "saltar las carpetas que no pueden ser agregadas a causa de errores"
+msgstr "saltar los archivos que no pueden ser agregados a causa de errores"
 
 #: builtin/add.c:380
 msgid "check if - even missing - files are ignored in dry run"
-msgstr "comprobar si - incluso los archivos que faltan - se ignoran en dry run"
+msgstr ""
+"comprobar si los archivos - incluso los que faltan - se ignoran en dry run"
 
 #: builtin/add.c:382 builtin/update-index.c:1006
 msgid "override the executable bit of the listed files"
@@ -10330,12 +10381,12 @@
 msgstr ""
 "Se ha agregado otro repositorio de git dentro del repositorio actual.\n"
 "Clones del repositorio exterior no tendrán el contenido del\n"
-"repositorio embebido y no sabrán como obtenerla.\n"
+"repositorio embebido y no sabrán como obtenerlo.\n"
 "Si querías agregar un submódulo, usa:\n"
 "\n"
 "\tgit submodule add <url> %s\n"
 "\n"
-"Si se agrego esta ruta por error, puedes eliminar desde el índice\n"
+"Si se agregó esta ruta por error, puedes eliminarla del índice\n"
 "usando:\n"
 "\n"
 "\tgit rm --cached %s\n"
@@ -10345,7 +10396,7 @@
 #: builtin/add.c:432
 #, c-format
 msgid "adding embedded git repository: %s"
-msgstr "agregando repositorio embebido: %s"
+msgstr "agregando repositorio de git embebido: %s"
 
 #: builtin/add.c:451
 msgid ""
@@ -10384,15 +10435,15 @@
 #: builtin/add.c:526
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
-msgstr "El parámetro '%s' para --chmod debe ser -x ó +x"
+msgstr "El parámetro '%s' para --chmod debe ser -x o +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file es incompatible con argumentos de pathspec"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul requiere --pathspec-from-file"
 
@@ -10407,140 +10458,140 @@
 "Turn this message off by running\n"
 "\"git config advice.addEmptyPathspec false\""
 msgstr ""
-"¿Tal vez quisiste decir 'git add.'?\n"
+"¿Tal vez quisiste decir 'git add .'?\n"
 "Desactiva este mensage ejecutando\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "no se pudo analizar el script del autor"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' fue borrado por el hook de applypatch-msg"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
-msgstr "Línea mal formada: '%s'."
+msgstr "Línea de entrada mal formada: '%s'."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Falló al copiar notas de '%s' a '%s'"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
-msgstr "fall de fseek"
+msgstr "fallo de fseek"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "no se pudo analizar el parche '%s'"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
-msgstr "Solo un parche StGIT puede ser aplicado de una vez"
+msgstr "Solo un parche StGIT puede ser aplicado a la vez"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "timestamp inválido"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "línea Date inválida"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "offset de zona horaria inválido"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Falló al detectar el formato del parche."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "falló al crear el directorio '%s'"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Falló al dividir parches."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Cuando hayas resuelto este problema, ejecuta \"%s --continue\"."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Si prefieres saltar este parche, ejecuta \"%s --skip\"."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
-"Para restaurar la rama original y detener el parchado, ejecutar \"%s --abort"
+"Para restaurar la rama original y detener el parcheo, ejecutar \"%s --abort"
 "\"."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
-"Parche mandado con formato=flowed; espacios al final de las líneas tal vez "
+"Parche enviado con format=flowed; espacios al final de las líneas tal vez "
 "desaparezcan."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "El parche está vacío."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
-msgstr "falta línea autor en commit %s"
+msgstr "falta línea de autor en commit %s"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
-msgstr "sangría no válida: %.*s"
+msgstr "línea de identificación no válida: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "Repositorio carece de los blobs necesarios para retroceder en una fusión de "
-"3-vías."
+"3 vías."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "Usando la información del índice para reconstruir un árbol base..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
 msgstr ""
 "¿Editaste el parche a mano?\n"
-"No aplica a blobs guardados en su índice."
+"No aplica a los blobs registrados en su índice."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
-msgstr "Retrocediendo para parchar base y fusión de 3-vías..."
+msgstr "Retrocediendo para parchar base y fusionar de 3 vías..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
-msgstr "Falló al fusionar en los cambios."
+msgstr "Falló al fusionar los cambios."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "aplicando a un historial vacío"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "no se puede continuar: %s no existe."
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Cuerpo de commit es:"
 
@@ -10548,49 +10599,49 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "¿Aplicar? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
-msgstr "no es posible escribir en el archivo índice"
+msgstr "no es posible escribir el archivo índice"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Índice sucio: no se puede aplicar parches (sucio: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Aplicando: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
-msgstr "Sin cambios -- parche ya aplicado."
+msgstr "Sin cambios -- Parche ya aplicado."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "El parche falló en %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr "Use 'git am --show-current-patch=diff' para ver el parche fallido"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
 "already introduced the same changes; you might want to skip this patch."
 msgstr ""
 "Sin cambios - ¿olvidaste usar 'git add'?\n"
-"Si no hay nada en el área de stage, las posibilidad es que algo mas\n"
-"ya haya introducido el mismo cambio; tal vez quieras omitir este parche."
+"Si no hay nada en el área de stage, lo más probable es que algo más\n"
+"ya ha introducido el mismo cambio; tal vez quieras omitir este parche."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10598,22 +10649,22 @@
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 "Todavía tienes rutas sin fusionar en tu índice.\n"
-"Debes realizar 'git add' cada archivo con conflictos resueltos y marcarlos "
-"como tal.\n"
+"Debes realizar 'git add' en cada archivo con conflictos resueltos para "
+"marcarlos como tal.\n"
 "Se puede ejecutar `git rm` en el archivo para aceptar \"borrado por ellos\" "
 "en él."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "No se pudo analizar el objeto '%s'."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "falló al limpiar el índice"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10621,91 +10672,91 @@
 "Parece haber movido HEAD desde el último falló 'am'.\n"
 "No rebobinando a ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Valor inválido para --patch-format: %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Valor inválido para --show-current-patch: %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s es incompatible con --show-current-patch=%s"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<opciones>] [(<mbox> | <Directorio-de-correo>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<opciones>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "ejecutar de manera interactiva"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "opción histórica -- no-op"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
-msgstr "permitir retroceso en fusión de 3-vías si es necesario"
+msgstr "permitir retroceso en fusión de 3 vías si es necesario"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "ser silencioso"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
-msgstr "agregar una línea \"Firmado-por\" al mensaje del commit"
+msgstr "agregar una línea \"Signed-off-by\" al mensaje del commit"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "recodificar en utf8 (default)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "pasar flag -k a git-mailinfo"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "pasar flag -b a git-mailinfo"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "pasar flag -m a git-mailinfo"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "pasar flag --keep-cr a git-mailsplit para formato mbox"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "no pasar flag --keep-cr a git-mailsplit independientemente de am.keepcr"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "descubrir todo antes de una línea de tijeras"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "pasarlo a través de git-mailinfo"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "pasarlo a través de git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10714,67 +10765,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "formato"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
-msgstr "formatear el parche(s)"
+msgstr "formato de los parches"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
-msgstr "sobrescribir mensajes de error cuando fallos de parchado ocurran"
+msgstr "sobrescribir mensaje de error cuando fallos de parcheo ocurran"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "continuar aplicando los parches tras resolver conflictos"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "sinónimos para --continue"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "saltar el parche actual"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "restaurar la rama original y abortar la operación de parcheo"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "abortar la operación de parcheo pero mantener HEAD donde está"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "muestra el parche siendo aplicado"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "mentir sobre la fecha del committer"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "usar el timestamp actual para la fecha del autor"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
-msgstr "Commits con firma GPG"
+msgstr "firmar los commits con GPG"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(uso interno para git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10782,16 +10833,16 @@
 "La opción -b/--binary ha estado deshabilitada por mucho tiempo, y\n"
 "será eliminada. Por favor no la use más."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "falló al leer el índice"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
-msgstr "directorio de rebase previo %s todavía existe en el mbox dado."
+msgstr "directorio de rebase previo %s todavía existe pero un mbox fue dado."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10800,11 +10851,11 @@
 "Directorio extraviado %s encontrado.\n"
 "Use \"git am --abort\" para borrarlo."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Operación de resolución no está en progreso, no vamos a continuar."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "modo interactivo requiere parches en la línea de comando"
 
@@ -10815,11 +10866,11 @@
 #: builtin/archive.c:17
 #, c-format
 msgid "could not create archive file '%s'"
-msgstr "no se pudo crear el archivo comprimido '%s'"
+msgstr "no se pudo crear el archivo de crónica '%s'"
 
 #: builtin/archive.c:20
 msgid "could not redirect output"
-msgstr "no se pudo direccionar la salida"
+msgstr "no se pudo redirigir la salida"
 
 #: builtin/archive.c:37
 msgid "git archive: Remote with no URL"
@@ -10882,7 +10933,7 @@
 
 #: builtin/bisect--helper.c:31
 msgid "git bisect--helper --bisect-replay <filename>"
-msgstr "git bisect--helper --bisect-replay <archivio>"
+msgstr "git bisect--helper --bisect-replay <archivo>"
 
 #: builtin/bisect--helper.c:32
 msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
@@ -10898,36 +10949,36 @@
 msgid "could not write to file '%s'"
 msgstr "no se pudo escribir al archivo '%s'"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' no es un término válido"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "no se puede usar el comando nativo '%s' como un término"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "no se puede cambiar el significado del término '%s'"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "por favor use dos términos diferentes"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "No estamos bisecando.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' no es un commit válido"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10935,36 +10986,36 @@
 "no se pudo hacer check out al HEAD original '%s'. Intenta 'git bisect reset "
 "<commit>'."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Mal argumento bisect_write: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
-msgstr "no se puede obtener el oid de la rev '%s'"
+msgstr "no se pudo obtener el oid de la rev '%s'"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "no se pudo abrir el archivo '%s'"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Comando inválido: actualmente se encuentra en un bisect %s/%s"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
-"Tienes que dar al menos un %s y un %s revision.\n"
+"Tienes que dar al menos una revisión %s y una %s.\n"
 "Se puede ver \"git bisect %s\" y \"git bisect %s\" para eso."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10972,10 +11023,10 @@
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 "Tienes que comenzar por \"git bisect start\".\n"
-"Después tienes que entregar al menos un %s y una revision %s.\n"
+"Después tienes que entregar al menos una revisión %s y una %s.\n"
 "Puedes usar \"git bisect %s\" y \"git bisect %s\" para eso."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "haciendo bisect solo con un commit %s"
@@ -10984,15 +11035,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "¿Estás seguro [Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "no hay términos definidos"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -11001,7 +11052,7 @@
 "Tus términos actuales son %s para el estado viejo\n"
 "y %s para el estado nuevo.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -11010,53 +11061,53 @@
 "argumento inválido %s para 'git bisect terms'.\n"
 "Las opciones soportadas son: --term-good|--term-old y --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
-msgstr "la configuración del recorrido de revisión falló\n"
+msgstr "la configuración del recorrido de revisiones falló\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "no se pudo abrir '%s' en modo append"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' no es un término válido"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "opción desconocida: '%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' no parece ser una revisión válida"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "mal HEAD - Necesito un HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "error al hacer checkout '%s'. Intente 'git bisect start <rama-válida>'."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "no se bisecará en un árbol con cg-seek"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mal HEAD - ref simbólico extraño"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ref inválido: '%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Debes iniciar con \"git bisect start\"\n"
 
@@ -11064,114 +11115,114 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "¿Quieres que lo haga por ti [Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Llame a `--bisect-state` con al menos un argumento"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' solo puede tomar un argumento."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Mala entrada rev: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Mala entrada rev (no es un commit): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "No estamos bisecando."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
-msgstr "'%s'?? ¿De qué estás hablando?"
+msgstr "¿¿'%s'?? ¿De qué estás hablando?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "no se puede leer '%s' para reproducir"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "reiniciar el estado de bisect"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "revisar si existen términos malos o buenos"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "imprimir los terms del bisect"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "comenzar la sesión de bisect"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "encontrar el siguiente commit de bisección"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "marcar el estado de ref (o refs)"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "listar los pasos de bisección hasta ahora"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "reproducir el proceso de bisección del archivo dado"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "saltar algunos commits para checkout"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "no hay log para BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
-msgstr "--bisect-reset requiere un commit o ningún argumento"
+msgstr "--bisect-reset requiere o un commit o ningún argumento"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check requiere 2 o 3 argumentos"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms requiere 0 o 1 argumentos"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next requiere 0 argumentos"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log requiere 0 argumentos"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "ningún logfile proporcionado"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
-msgstr "git blame [<opciones>] [<opciones-rev>] [<revision>] [--] <archivo>"
+msgstr "git blame [<opciones>] [<opciones-de-rev>] [<revisión>] [--] <archivo>"
 
 #: builtin/blame.c:37
 msgid "<rev-opts> are documented in git-rev-list(1)"
-msgstr "<rev-opts> están documentadas en git-rev-list(1)"
+msgstr "<opciones-de-rev> están documentadas en git-rev-list(1)"
 
 #: builtin/blame.c:410
 #, c-format
@@ -11194,7 +11245,7 @@
 #: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
-msgstr "no se pudo encontrar revision %s para ignorar"
+msgstr "no se pudo encontrar revisión %s para ignorar"
 
 #: builtin/blame.c:867
 msgid "show blame entries as we find them, incrementally"
@@ -11212,10 +11263,10 @@
 msgid "show work cost statistics"
 msgstr "mostrar estadísticas de costo de trabajo"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "forzar el reporte de progreso"
 
@@ -11241,7 +11292,7 @@
 
 #: builtin/blame.c:877
 msgid "use the same output mode as git-annotate (Default: off)"
-msgstr "usar el mismo modo salida como git-annotate (Default: off)"
+msgstr "usar el mismo modo de salida como git-annotate (Default: off)"
 
 #: builtin/blame.c:878
 msgid "show raw timestamp (Default: off)"
@@ -11257,13 +11308,13 @@
 
 #: builtin/blame.c:881
 msgid "show author email instead of name (Default: off)"
-msgstr "mostrar en cambio el email del autor (Default: off)"
+msgstr "mostrar el email del autor en cambio de su nombre (Default: off)"
 
 #: builtin/blame.c:882
 msgid "ignore whitespace differences"
 msgstr "ignorar diferencias de espacios en blanco"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "rev"
 
@@ -11285,11 +11336,11 @@
 
 #: builtin/blame.c:887
 msgid "spend extra cycles to find better match"
-msgstr "ocupar más ciclos para encontrar mejoras resultados"
+msgstr "ocupar más ciclos para encontrar mejores resultados"
 
 #: builtin/blame.c:888
 msgid "use revisions from <file> instead of calling git-rev-list"
-msgstr "use revisiones desde <archivo> en lugar de llamar git-rev-list"
+msgstr "use revisiones en <archivo> en lugar de llamar git-rev-list"
 
 #: builtin/blame.c:889
 msgid "use <file>'s contents as the final image"
@@ -11314,11 +11365,13 @@
 #: builtin/blame.c:893
 msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr ""
-"Procesar solo el rango de líneas <inicio>,<fin> o función: <nombre-función>"
+"procesar solo el rango de líneas <inicio>,<fin> o función :<nombre-de-"
+"función>"
 
 #: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
-msgstr "--progress no puede ser usado con --incremental o formatos porcelana"
+msgstr ""
+"--progress no puede ser usado con --incremental o formatos de porcelana"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -11386,8 +11439,8 @@
 "not deleting branch '%s' that is not yet merged to\n"
 "         '%s', even though it is merged to HEAD."
 msgstr ""
-"no borrando rama '%s' que todavía no ha sido fusionada\n"
-"\ta '%s', aunque se fusione con HEAD."
+"no borrando rama '%s' que todavía no ha sido fusionada a\n"
+"         '%s', aunque se ha fusionado con HEAD."
 
 #: builtin/branch.c:172
 #, c-format
@@ -11409,7 +11462,7 @@
 
 #: builtin/branch.c:223
 msgid "cannot use -a with -d"
-msgstr "no se puede usar-a con -d"
+msgstr "no se puede usar -a con -d"
 
 #: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
@@ -11438,7 +11491,7 @@
 #: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
-msgstr "Eliminada la rama %s (era %s)..\n"
+msgstr "Eliminada la rama %s (era %s).\n"
 
 #: builtin/branch.c:440 builtin/tag.c:63
 msgid "unable to parse format string"
@@ -11482,7 +11535,7 @@
 
 #: builtin/branch.c:557
 msgid "Branch copy failed"
-msgstr "Copiado de rama fallido"
+msgstr "Duplicación de rama fallida"
 
 #: builtin/branch.c:561
 #, c-format
@@ -11560,15 +11613,15 @@
 
 #: builtin/branch.c:642
 msgid "act on remote-tracking branches"
-msgstr "actuar en ramas de traqueo remoto"
+msgstr "actuar en ramas de rastreo remoto"
 
 #: builtin/branch.c:644 builtin/branch.c:646
 msgid "print only branches that contain the commit"
-msgstr "mostrar solo ramas que contienen el commit"
+msgstr "mostrar solo ramas que contengan el commit"
 
 #: builtin/branch.c:645 builtin/branch.c:647
 msgid "print only branches that don't contain the commit"
-msgstr "mostrar solo ramas que no contienen el commit"
+msgstr "mostrar solo ramas que no contengan el commit"
 
 #: builtin/branch.c:650
 msgid "Specific git-branch actions:"
@@ -11600,7 +11653,7 @@
 
 #: builtin/branch.c:658
 msgid "copy a branch, even if target exists"
-msgstr "copiar una rama, incluso si el objetivo existe"
+msgstr "copiar una rama, incluso si el destino existe"
 
 #: builtin/branch.c:659
 msgid "list branch names"
@@ -11620,11 +11673,11 @@
 
 #: builtin/branch.c:664
 msgid "force creation, move/rename, deletion"
-msgstr "fuerza la creación,movimiento/renombrado,borrado"
+msgstr "fuerza la creación, movimiento/renombramiento, eliminación"
 
 #: builtin/branch.c:665
 msgid "print only branches that are merged"
-msgstr "muestra solo ramas que han sido fusionadas"
+msgstr "muestra solo ramas que hayan sido fusionadas"
 
 #: builtin/branch.c:666
 msgid "print only branches that are not merged"
@@ -11642,11 +11695,11 @@
 
 #: builtin/branch.c:670
 msgid "print only branches of the object"
-msgstr "imprimir sólo las ramas del objeto"
+msgstr "imprimir solo las ramas del objeto"
 
 #: builtin/branch.c:671 builtin/for-each-ref.c:50 builtin/tag.c:484
 msgid "sorting and filtering are case insensitive"
-msgstr "ordenamiento y filtrado son case-insensitive"
+msgstr "ordenamiento y filtración son case-insensitive"
 
 #: builtin/branch.c:672 builtin/for-each-ref.c:40 builtin/tag.c:482
 #: builtin/verify-tag.c:38
@@ -11655,7 +11708,7 @@
 
 #: builtin/branch.c:695 builtin/clone.c:794
 msgid "HEAD not found below refs/heads!"
-msgstr "¡HEAD no encontrado abajo de refs/heads!"
+msgstr "¡HEAD no encontrado dentro de refs/heads!"
 
 #: builtin/branch.c:719
 msgid "--column and --verbose are incompatible"
@@ -11685,11 +11738,11 @@
 
 #: builtin/branch.c:796
 msgid "too many branches for a copy operation"
-msgstr "demasiadas ramas para una operación de copiado"
+msgstr "demasiadas ramas para una operación de duplicación"
 
 #: builtin/branch.c:805
 msgid "too many arguments for a rename operation"
-msgstr "demasiados argumentos para una operación de renombrado"
+msgstr "demasiados argumentos para una operación de renombramiento"
 
 #: builtin/branch.c:810
 msgid "too many arguments to set new upstream"
@@ -11789,7 +11842,7 @@
 "You can delete any lines you don't wish to share.\n"
 msgstr ""
 "¡Gracias por prepara un reporte de bug de Git!\n"
-"Por favor responde las siguientes preguntas para ayudarnos a entender el "
+"Por favor conteste las siguientes preguntas para ayudarnos a entender el "
 "problema.\n"
 "\n"
 "¿Qué hiciste antes de que sucediera el bug? (Pasos para reproducir el "
@@ -11799,7 +11852,7 @@
 "\n"
 "¿Qué sucedio en lugar de eso? (Comportamiento real)\n"
 "\n"
-"¿Qué es diferente entre lo que esperabas y lo que pasó?\n"
+"¿Qué es diferente entre lo que esperabas y lo que pasó de verdad?\n"
 "\n"
 "Cualquier cosa que quieras agregar:\n"
 "\n"
@@ -11812,7 +11865,8 @@
 
 #: builtin/bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
-msgstr "especificar el sufijo formato strftime para el nombre del archivo"
+msgstr ""
+"especificar el sufijo de formato de strftime para el nombre del archivo"
 
 #: builtin/bugreport.c:160
 #, c-format
@@ -11825,12 +11879,12 @@
 
 #: builtin/bugreport.c:170
 msgid "Enabled Hooks"
-msgstr "Activar Hooks"
+msgstr "Hooks habilitados"
 
 #: builtin/bugreport.c:177
 #, c-format
 msgid "couldn't create a new file at '%s'"
-msgstr "no se pudo crear un archivo en '%s'"
+msgstr "no se pudo crear un archivo nuevo en '%s'"
 
 #: builtin/bugreport.c:180
 #, c-format
@@ -11858,19 +11912,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <archivo> [<nombre-de-ref>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "no mostrar medidor de progreso"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "mostrar medidor de progreso"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "mostrar medidor de progreso durante la fase de escritura de objeto"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similar a --all-progress cuando medidor de progreso es mostrado"
 
@@ -11882,29 +11936,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "Se necesita un repositorio para agrupar."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "no mostrar detalles del bundle"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s está bien\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Se necesita un repositorio para desagrupar."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ser verboso; tiene que ser agregado antes de un subcomando"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Sub-comando desconocido: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11912,7 +11966,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <tipo> | --textconv | --filters) [--path=<ruta>] <objeto>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11920,74 +11974,74 @@
 "git cat-file (--batch[=<formato>] | --batch-check[=<formato>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "solo se puede especificar una opción batch"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<tipo> puede ser: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "mostrar el tipo del objeto"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "mostrar el tamaño del objeto"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "salir con cero cuando no haya error"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "realizar pretty-print del contenido del objeto"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "para objetos blob, ejecuta textconv en el contenido del objeto"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "para objetos blob, ejecuta filters en el contenido del objeto"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "use una ruta específica para --textconv/--filters"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "permita -s y -t para trabajar con objetos rotos o corruptos"
+msgstr "permita que -s y -t funcionen con objetos rotos o corruptos"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "salida buffer --batch"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "mostrar info y content de los objetos alimentados por standard input"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "mostrar info de los objetos alimentados por standard input"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "seguir los enlaces simbólicos en el árbol (usado con --batch o --batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "mostrar todos los objetos con --batch o --batch-check"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
-msgstr "no ordenar el output de --batch-all-objects"
+msgstr "no ordenar el salida de --batch-all-objects"
 
 #: builtin/check-attr.c:13
 msgid "git check-attr [-a | --all | <attr>...] [--] <pathname>..."
@@ -12013,14 +12067,14 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "terminar registros de entrada y salida con un carácter NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "suprimir el reporte de progreso"
 
 #: builtin/check-ignore.c:29
 msgid "show non-matching input paths"
-msgstr "mostrar rutas de entrada que no concuerdan"
+msgstr "mostrar rutas de entrada que no concuerden"
 
 #: builtin/check-ignore.c:31
 msgid "ignore index when checking"
@@ -12032,7 +12086,7 @@
 
 #: builtin/check-ignore.c:168
 msgid "-z only makes sense with --stdin"
-msgstr "-z sólo tiene sentido con --stdin"
+msgstr "-z solo tiene sentido con --stdin"
 
 #: builtin/check-ignore.c:170
 msgid "no path specified"
@@ -12048,7 +12102,7 @@
 
 #: builtin/check-ignore.c:179
 msgid "--non-matching is only valid with --verbose"
-msgstr "--non-matching sólo es válida con --verbose"
+msgstr "--non-matching solo es válida con --verbose"
 
 #: builtin/check-mailmap.c:9
 msgid "git check-mailmap [<options>] <contact>..."
@@ -12072,9 +12126,11 @@
 msgstr "git checkout--worker [<opciones>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "string"
 
@@ -12170,68 +12226,68 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Incapaz de agregar resultados de fusión a '%s'"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "Recreado %d conflicto de merge"
 msgstr[1] "Recreados %d conflictos de merge"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
-msgstr[0] "Actualizada %d ruta para %s"
-msgstr[1] "Actualizadas %d rutas para %s"
+msgstr[0] "Actualizada %d ruta desde %s"
+msgstr[1] "Actualizadas %d rutas desde %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
-msgstr[0] "Actualizada %d ruta desde el index"
-msgstr[1] "Actualizadas %d rutas desde el index"
+msgstr[0] "Actualizada %d ruta desde el índice"
+msgstr[1] "Actualizadas %d rutas desde el índice"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' no puede ser usada con rutas actualizadas"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' no puede ser usado con %s"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "No se puede actualizar rutas y cambiar a la rama '%s' al mismo tiempo."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
-msgstr "ni '%s' o '%s' están especificados"
+msgstr "ni '%s' ni '%s' están especificados"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s' tiene que ser usado cuando '%s' no es especificado"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' o '%s' no puede ser usado con %s"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
-msgstr "ruta '%s' no esta fusionada"
+msgstr "ruta '%s' no está fusionada"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "necesitas resolver tu índice actual primero"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12240,50 +12296,50 @@
 "no se puede continuar con los cambios en stage en los siguientes archivos:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "No se puede hacer reflog para '%s': %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD está ahora en"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
-msgstr "no es posible actualizar  HEAD"
+msgstr "no es posible actualizar HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Reiniciar rama '%s'\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Ya en '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Rama reiniciada y cambiada a '%s'\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Cambiado a nueva rama '%s'\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Cambiado a rama '%s'\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... y %d más.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12296,17 +12352,17 @@
 "\n"
 "%s\n"
 msgstr[0] ""
-"Peligro: estás saliendo %d commit atrás, no está conectado\n"
+"Peligro: estás dejando %d commit atrás, no está conectado\n"
 "a ninguna rama:\n"
 "\n"
 "%s\n"
 msgstr[1] ""
-"Peligro: estás saliendo %d commits atrás, no está conectado\n"
+"Peligro: estás dejando %d commits atrás, no están conectados\n"
 "a ninguna rama:\n"
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12333,19 +12389,19 @@
 " git branch <nombre-de-rama> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
-msgstr "error interno en camino de revisión"
+msgstr "error interno en recorrido de revisiones"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "La posición previa de HEAD era"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Estás en una rama por nacer"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12354,7 +12410,7 @@
 "'%s' puede ser tanto un archivo local como una rama de rastreo.\n"
 "Por favor use -- (y opcionalmente --no-guess) para desambiguar"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12370,56 +12426,55 @@
 "\n"
 "    git checkout --track origin/<nombre>\n"
 "\n"
-"Si quisieras que siempre los checkouts de nombres ambiguos prefieran una "
-"rama\n"
-"de nombre <nombre> remota, como 'origin', considera configurar\n"
+"Si quisieras que siempre los checkouts de nombres ambiguos prefieran\n"
+"un remoto particular, como 'origin', considera configurar\n"
 "checkout.defaultRemote=origin en tu configuración."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
-msgstr "'%s' concordó con multiples (%d) ramas de rastreo remoto"
+msgstr "'%s' concordó con múltiples (%d) ramas de rastreo remoto"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "solo una referencia esperada"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "solo una referencia esperada, %d entregadas."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referencia inválida: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
-msgstr "la referencia no es n árbol: %s"
+msgstr "la referencia no es un árbol: %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "se esperaba un branch, se obtuvo tag '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "se espera una rama, se obtuvo una rama remota '%s'"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
-msgstr "se esperaba branch, se obuto '%s'"
+msgstr "se esperaba branch, se obtuvo '%s'"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "se espera una rama, se obtuvo commit '%s'"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12427,7 +12482,7 @@
 "no se puede cambiar de branch durante un merge\n"
 "Considera \"git merge --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12435,7 +12490,7 @@
 "no se puede cambiar de branch en medio de una sesión de am\n"
 "Considera \"git am --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12443,7 +12498,7 @@
 "no se puede cambiar de branch durante un rebase\n"
 "Considera \"git rebase --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12451,7 +12506,7 @@
 "no se puede cambiar de branch durante un cherry-pick\n"
 "Considera \"git cherry-pick --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12459,137 +12514,137 @@
 "no se puede cambiar de branch durante un revert\n"
 "Considera \"git revert --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
-msgstr "estás cambiando ramas durante un bisect"
+msgstr "estás cambiando de rama durante un bisect"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "rutas no pueden ser usadas con cambios de rama"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' no puede ser usado con cambios de ramas"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' no puede ser usado con '%s'"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' no puede tomar <punto de partida>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "No se puede cambiar rama a un '%s' sin commits"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "falta branch o commit como argumento"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "realizar una fusión de tres vías con la rama nueva"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
-msgstr "conflicto de estilos (merge o diff3)"
+msgstr "estilo de conflictos (merge o diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "desacoplar HEAD en el commit nombrado"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "configurar info de upstream para una rama nueva"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "forzar el checkout (descartar modificaciones locales)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "nueva-rama"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "nueva rama no emparentada"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "actualizar archivos ignorados (default)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
-msgstr "no revise si otro árbol de trabajo contiene la ref entregada"
+msgstr "no averiguar si otro árbol de trabajo contiene la ref entregada"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
-msgstr "hacer checkout a  nuestra versión para archivos sin fusionar"
+msgstr "hacer checkout a nuestra versión para archivos sin fusionar"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "hacer checkout a su versión para los archivos sin fusionar"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
-msgstr "no limitar pathspecs a dispersar entradas solamente"
+msgstr "no limitar pathspecs a entradas escasas solamente"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c y --orphan son mutuamente exclusivas"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p y --overlay son mutuamente exclusivas"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track necesita el nombre de una rama"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "falta nombre de rama; prueba -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "no se pudo resolver %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "especificación de ruta inválida"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' no es un commit y una rama '%s' no puede ser creada desde este"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach no toma un argumento de ruta '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file es incompatible con --detach"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file es incompatible con --patch"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12597,70 +12652,71 @@
 "git checkout: --ours/--theirs, --force y --merge son incompatibles cuando\n"
 "se revisa fuera del índice."
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "debes especificar path(s) para restaurar"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "rama"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "crear y hacer checkout a una nueva rama"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "crear/reiniciar y hacer checkout a una rama"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "crear un reflog para una nueva rama"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>' (default)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "usar modo overlay (default)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "crear y hacer switch a una nueva rama"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "crear/reiniciar y hacer switch a una rama"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "descartar modificaciones locales"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "de qué árbol hacer el checkout"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
-msgstr "restaurar el index"
+msgstr "restaurar el índice"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "restaurar el árbol de trabajo (default)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "ignorar entradas no fusionadas"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "usar modo overlay"
 
@@ -12678,7 +12734,7 @@
 #: builtin/clean.c:34
 #, c-format
 msgid "Would remove %s\n"
-msgstr "Sera borrado %s\n"
+msgstr "Será borrado %s\n"
 
 #: builtin/clean.c:35
 #, c-format
@@ -12688,14 +12744,14 @@
 #: builtin/clean.c:36
 #, c-format
 msgid "Would skip repository %s\n"
-msgstr "Se saltara repositorio %s\n"
+msgstr "Se saltará repositorio %s\n"
 
 #: builtin/clean.c:38
 #, c-format
 msgid "could not lstat %s\n"
 msgstr "no se pudo lstat %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12703,12 +12759,12 @@
 "foo        - select item based on unique prefix\n"
 "           - (empty) select nothing\n"
 msgstr ""
-"Ayuda rápida:\n"
-"1          - selecciona un objeto por numero\n"
+"Ayuda de comandos:\n"
+"1          - selecciona un objeto por número\n"
 "foo        - selecciona un objeto basado en un prefijo único\n"
 "           - (vacío) no elegir nada\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12720,7 +12776,7 @@
 "*          - choose all items\n"
 "           - (empty) finish selecting\n"
 msgstr ""
-"Ayuda rápida:\n"
+"Ayuda de comandos:\n"
 "1          - selecciona un objeto único\n"
 "3-5        - selecciona un rango de objetos\n"
 "2-3,6-9    - selecciona múltiples rangos\n"
@@ -12729,33 +12785,33 @@
 "*          - escoger todos los objetos\n"
 "           - (vacío) terminar selección\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "¿Ahh (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
-msgstr "Input ignora los patrones >> "
+msgstr "Ingresa los patrones que ignorar>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "PELIGRO: No se puede encontrar objetos que concuerden con: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Seleccionar objetos para borrar"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "¿Borrar %s [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12766,75 +12822,75 @@
 "?                   - help for prompt selection"
 msgstr ""
 "clean               - comenzar la limpieza\n"
-"filtrar por patrón   - excluye objetos del borrado\n"
-"elegir por números   - selecciona objetos a ser borrados por numero\n"
-"preguntar cada uno     - confirmar cada borrado (como \"rm -i\")\n"
+"filter by pattern   - excluye objetos de la eliminación\n"
+"select by numbers   - selecciona objetos a ser borrados por número\n"
+"ask each            - confirmar cada eliminación (como \"rm -i\")\n"
 "quit                - parar limpieza\n"
-"help                - esta ventana\n"
+"help                - esta pantalla\n"
 "?                   - ayuda para selección de opciones"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Se eliminará el siguiente objeto:"
 msgstr[1] "Se eliminarán los siguientes objetos:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "No hay más archivos para limpiar, saliendo."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "no imprimir nombres de archivos borrados"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "forzar"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "limpieza interactiva"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "borrar directorios completos"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "patrón"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
-msgstr "agregar <patrón> para ignorar reglas"
+msgstr "agregar <patrón> a las reglas de ignorancia"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "borrar archivos ignorados, también"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "borrar solo archivos ignorados"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
 msgstr ""
-"clean.requireForce configurado como true y ninguno -i, -n, ni -f entregados; "
-"rehusando el clean"
+"clean.requireForce configurado como true y ninguno de -i, -n, ni -f "
+"entregado; rehusando el clean"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr ""
-"clean.requireForce default en true y ninguno -i, -n, ni -f entregados; "
+"clean.requireForce default en true y ninguno de -i, -n, ni -f entregado; "
 "rehusando el clean"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x y -X no pueden ser usadas juntas"
 
@@ -12850,13 +12906,13 @@
 msgid "don't create a checkout"
 msgstr "no crear checkout"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "crear un repositorio vacío"
 
 #: builtin/clone.c:103
 msgid "create a mirror repository (implies bare)"
-msgstr "crear un repositorio espejo (implica vacío)"
+msgstr "crear un repositorio espejo (implica bare)"
 
 #: builtin/clone.c:105
 msgid "to clone from a local repository"
@@ -12876,32 +12932,32 @@
 
 #: builtin/clone.c:111
 msgid "initialize submodules in the clone"
-msgstr "inicializar submódulos en el clonado"
+msgstr "inicializar submódulos en el clon"
 
 #: builtin/clone.c:115
 msgid "number of submodules cloned in parallel"
-msgstr "numero de submódulos clonados en paralelo"
+msgstr "número de submódulos clonados en paralelo"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "directorio-template"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "directorio del cual los templates serán usados"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "repositorio de referencia"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
-msgstr "usa--reference  solamente si estás clonado"
+msgstr "usa --reference solamente si estás clonando"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "nombre"
@@ -12918,16 +12974,16 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "ruta para git-upload-pack en el remoto"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "profundidad"
 
 #: builtin/clone.c:131
 msgid "create a shallow clone of that depth"
-msgstr "crear un clon superficial para esa profundidad"
+msgstr "crear un clon superficial de esa profundidad"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tiempo"
@@ -12939,16 +12995,16 @@
 #: builtin/clone.c:134 builtin/fetch.c:184 builtin/fetch.c:207
 #: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1318
 msgid "revision"
-msgstr "revision"
+msgstr "revisión"
 
 #: builtin/clone.c:135 builtin/fetch.c:185 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
-msgstr "ahondando historia de clon superficial, excluyendo rev"
+msgstr "ahondar historia de clon superficial, excluyendo rev"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
-msgstr "clonar solo una rama,HEAD o --branch"
+msgstr "clonar solo una rama, HEAD o --branch"
 
 #: builtin/clone.c:139
 msgid "don't clone any tags, and make later fetches not to follow them"
@@ -12958,11 +13014,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "cualquier submódulo clonado será superficial"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "separa git dir del árbol de trabajo"
 
@@ -12975,22 +13031,22 @@
 msgstr "configurar config dentro del nuevo repositorio"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
-msgstr "especifico-de-servidor"
+msgstr "específico-al-servidor"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "opción para trasmitir"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "solo usar direcciones IPv4"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "solo usar direcciones IPv6"
 
@@ -13052,7 +13108,7 @@
 "You can inspect what was checked out with 'git status'\n"
 "and retry with 'git restore --source=HEAD :/'\n"
 msgstr ""
-"Clonado exitoso, pero falló el checkout.\n"
+"Clonación exitosa, pero falló el checkout.\n"
 "Puedes inspeccionar a qué se hizo checkout con 'git status'\n"
 "y volver a intentarlo con 'git restore --source=HEAD :/'\n"
 
@@ -13089,11 +13145,11 @@
 
 #: builtin/clone.c:959
 msgid "cannot unlink temporary alternates file"
-msgstr "no se puede desvincular archivos alternos temporales"
+msgstr "no se puede desvincular archivo de alternos temporal"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
-msgstr "Muchos argumentos."
+msgstr "Demasiados argumentos."
 
 #: builtin/clone.c:1005
 msgid "You must specify a repository to clone."
@@ -13113,10 +13169,10 @@
 msgid "repository '%s' does not exist"
 msgstr "repositorio '%s' no existe"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
-msgstr "profundidad %s no es un numero positivo"
+msgstr "profundidad %s no es un número positivo"
 
 #: builtin/clone.c:1049
 #, c-format
@@ -13126,7 +13182,7 @@
 #: builtin/clone.c:1055
 #, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
-msgstr "La ruta del repositorio '%s' ya existe y no es un directorio vacío."
+msgstr "la ruta del repositorio '%s' ya existe y no es un directorio vacío."
 
 #: builtin/clone.c:1069
 #, c-format
@@ -13134,7 +13190,7 @@
 msgstr "directorio de trabajo '%s' ya existe."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "no se pudo crear directorios principales de '%s'"
@@ -13173,15 +13229,18 @@
 
 #: builtin/clone.c:1231
 msgid "--shallow-since is ignored in local clones; use file:// instead."
-msgstr "--shallow-since es ignorado en el clon local; use file:// ."
+msgstr ""
+"--shallow-since es ignorado en clonaciones locales; use file:// en su lugar."
 
 #: builtin/clone.c:1233
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
-msgstr "--shallow-exclude es ignorado en clones locales; use file://."
+msgstr ""
+"--shallow-exclude es ignorado en clonaciones locales; use file:// en su "
+"lugar."
 
 #: builtin/clone.c:1235
 msgid "--filter is ignored in local clones; use file:// instead."
-msgstr "--filter es ignorado en clones locales; usa file:// en su lugar."
+msgstr "--filter es ignorado en clonaciones locales; usa file:// en su lugar."
 
 #: builtin/clone.c:1240
 msgid "source repository is shallow, ignoring --local"
@@ -13191,12 +13250,16 @@
 msgid "--local is ignored"
 msgstr "--local es ignorado"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "transporte remoto reportó error"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Rama remota %s no encontrada en upstream %s"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Pareces haber clonado un repositorio sin contenido."
 
@@ -13206,11 +13269,11 @@
 
 #: builtin/column.c:27
 msgid "lookup config vars"
-msgstr "revisa las variables de configuraciones"
+msgstr "revisa las variables de configuración"
 
 #: builtin/column.c:28 builtin/column.c:29
 msgid "layout to use"
-msgstr "capa a usar"
+msgstr "disposición a usar"
 
 #: builtin/column.c:30
 msgid "maximum width"
@@ -13218,15 +13281,15 @@
 
 #: builtin/column.c:31
 msgid "padding space on left border"
-msgstr "realizando padding en el borde izquierdo"
+msgstr "espacio padding en el borde izquierdo"
 
 #: builtin/column.c:32
 msgid "padding space on right border"
-msgstr "realizando padding en el borde derecho"
+msgstr "espacio padding en el borde derecho"
 
 #: builtin/column.c:33
 msgid "padding space between columns"
-msgstr "realizando padding entre columnas"
+msgstr "espacio padding entre columnas"
 
 #: builtin/column.c:51
 msgid "--command must be the first argument"
@@ -13251,21 +13314,21 @@
 #: builtin/commit-graph.c:64
 #, c-format
 msgid "could not find object directory matching %s"
-msgstr "no se pudo entoncrar el objeto directorio concordante con %s"
+msgstr "no se pudo encontrar el directorio de objetos concordante con %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "dir"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
 msgid "the object directory to store the graph"
-msgstr "el directorio de objetos para guardar el gráfico"
+msgstr "el directorio de objetos en que guardar el gráfico"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
-msgstr "si el commit-graph está cortado, solo verifica la punta del archivo"
+msgstr "si el commit-graph está cortado, solo verifica el archivo tope"
 
 #: builtin/commit-graph.c:106
 #, c-format
@@ -13280,7 +13343,7 @@
 #: builtin/commit-graph.c:155
 #, c-format
 msgid "unexpected non-hex object ID: %s"
-msgstr "ID de objeto no hex inesperado:%s"
+msgstr "ID de objeto no hex inesperado: %s"
 
 #: builtin/commit-graph.c:160
 #, c-format
@@ -13289,7 +13352,7 @@
 
 #: builtin/commit-graph.c:213
 msgid "start walk at all refs"
-msgstr "comenzar caminata en todas las refs"
+msgstr "comenzar recorrido en todas las refs"
 
 #: builtin/commit-graph.c:215
 msgid "scan pack-indexes listed by stdin for commits"
@@ -13297,11 +13360,11 @@
 
 #: builtin/commit-graph.c:217
 msgid "start walk at commits listed by stdin"
-msgstr "comenzar a caminar a los commits listados por stdin"
+msgstr "comenzar recorrido a los commits listados por stdin"
 
 #: builtin/commit-graph.c:219
 msgid "include all commits already in the commit-graph file"
-msgstr "inclye todos los commits que ya están en el archivo commit-graph"
+msgstr "incluye todos los commits que ya están en el archivo commit-graph"
 
 #: builtin/commit-graph.c:221
 msgid "enable computation for changed paths"
@@ -13313,15 +13376,15 @@
 
 #: builtin/commit-graph.c:228
 msgid "maximum number of commits in a non-base split commit-graph"
-msgstr "máximo número de commits en un commit-graph sin base cortada"
+msgstr "número máximo de commits en un commit-graph sin base cortada"
 
 #: builtin/commit-graph.c:230
 msgid "maximum ratio between two levels of a split commit-graph"
-msgstr "radio máximo entre dos niveles de corte de commit-graph"
+msgstr "razón máxima entre dos niveles de corte de commit-graph"
 
 #: builtin/commit-graph.c:232
 msgid "only expire files older than a given date-time"
-msgstr "expirar objetos más viejos a una fecha dada"
+msgstr "solo caducar objetos más viejos a una fecha dada"
 
 #: builtin/commit-graph.c:234
 msgid "maximum number of changed-path Bloom filters to compute"
@@ -13348,7 +13411,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "padre duplicado %s ignorado"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "no es un nombre de objeto válido %s"
@@ -13376,13 +13439,13 @@
 msgid "id of a parent commit object"
 msgstr "id del objeto commit padre"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "mensaje"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "mensaje del commit"
 
@@ -13390,7 +13453,7 @@
 msgid "read commit log message from file"
 msgstr "leer mensaje de commit desde un archivo"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Firmar commit con GPG"
@@ -13418,7 +13481,7 @@
 "remove the commit entirely with \"git reset HEAD^\".\n"
 msgstr ""
 "Has solicitado un amend en tu commit más reciente, pero hacerlo lo\n"
-"vaciaría. Puedes repetir el comando con --alow-empty, o puedes eliminar\n"
+"vaciaría. Puedes repetir el comando con --allow-empty, o puedes eliminar\n"
 "el commit completamente con \"git reset HEAD^\".\n"
 
 #: builtin/commit.c:56
@@ -13476,7 +13539,7 @@
 
 #: builtin/commit.c:374
 msgid "No paths with --include/--only does not make sense."
-msgstr "No hay rutas con --include/--only no tiene sentido."
+msgstr "--include/--only sin ruta no tiene sentido."
 
 #: builtin/commit.c:386
 msgid "unable to create temporary index"
@@ -13492,7 +13555,7 @@
 
 #: builtin/commit.c:412
 msgid "Failed to update main cache tree"
-msgstr "Falló al actualizar el cache principal del árbol"
+msgstr "Falló al actualizar el árbol de caché principal"
 
 #: builtin/commit.c:437 builtin/commit.c:460 builtin/commit.c:508
 msgid "unable to write new_index file"
@@ -13537,10 +13600,10 @@
 "unable to select a comment character that is not used\n"
 "in the current commit message"
 msgstr ""
-"no es posible seleccionar un carácter de comentario que no es usado\n"
+"no es posible seleccionar un carácter de comentario que no sea usado\n"
 "en el mensaje de commit actual"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "no se pudo revisar el commit %s"
@@ -13576,7 +13639,48 @@
 msgid "could not write commit template"
 msgstr "no se pudo escribir el template del commit"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
+" líneas que comiencen con '%c' serán ignoradas.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
+" líneas que comiencen con '%c' serán ignoradas, y un mensaje\n"
+" vacío aborta el commit.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
+" líneas que comiencen con '%c' serán guardadas; puede eliminarlas\n"
+" usted mismo si lo desea.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
+" líneas que comiencen con '%c' serán guardadas; puede eliminarlas\n"
+" usted mismo si lo desea.\n"
+"Un mensaje vacío aborta el commit.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13590,7 +13694,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "e intenta de nuevo.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13599,100 +13703,78 @@
 "and try again.\n"
 msgstr ""
 "\n"
-"Parece que puede estar cometiendo una selección de cerebros.\n"
+"Parece que puede estar cometiendo una selección de cerezas.\n"
 "Si esto no es correcto, ejecute\n"
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "e intenta de nuevo.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
-" líneas que comiencen con '%c' serán ignoradas, y un mensaje\n"
-" vacío aborta el commit.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Por favor ingresa el mensaje del commit para tus cambios. Las\n"
-" líneas que comiencen con '%c' serán guardadas; puede eliminarlas\n"
-" usted mismo si lo desea.\n"
-"Un mensaje vacío aborta el commit.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAutor:     %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sFecha:     %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sCommitter: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "No se puede leer el índice"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "no se puede pasar trailers a --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Error al construir los árboles"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Por favor suministra el mensaje usando las opciones -m o -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' no está en el formato 'Name <email>' y no concuerda con ningún "
 "autor existente"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
-msgstr "Modo ignorado inválido '%s'"
+msgstr "Modo de ignorancia inválido '%s'"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
-msgstr "Modo inválido de los archivos no rastreados '%s'"
+msgstr "Modo inválido de archivos no rastreados '%s'"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long y -z son incompatibles"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Estás en medio de una fusión -- no puedes renombrar."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "Está en medio de un cherry-pick -- no se puede renombrar."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr "no se puede combinar opción de renombrar de --fixup con ruta '%s'"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
@@ -13700,103 +13782,103 @@
 "opción de refraseado de --fixup es mutuamente exclusiva con --patch/--"
 "interactive/--all/--include/--only"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Usar ambos --reset-author y --author no tiene sentido"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "No tienes nada que enmendar."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Estás en medio de una fusión -- no puedes enmendar."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Está en medio de un cherry-pick -- no se puede enmendar."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "Estás en medio de una fusión -- no puedes enmendar."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Opciones --squash y --fixup no pueden ser usadas juntas"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Solo uno de -c/-C/-F/--fixup puede ser usado."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "La opción -m no puede ser combinada con -c/-C/-F."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
-msgstr "--reset-author sólo puede ser usada con -C, -c o --amend."
+msgstr "--reset-author solo puede ser usada con -C, -c o --amend."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Solo uno de --include/--only/--all/--interactive/--patch puede ser usado."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "opción desconocida: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "paths '%s ...' con -a no tiene sentido"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "mostrar status de manera concisa"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "mostrar información de la rama"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "mostrar información del stash"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "calcular todos los valores delante/atrás"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
-msgstr "output formato-maquina"
+msgstr "output en formato de máquina"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "mostrar status en formato largo (default)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "terminar entradas con NUL"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "modo"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "mostrar archivos sin seguimiento, modos opcionales: all, normal, no. "
 "(Predeterminado: all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13804,215 +13886,215 @@
 "mostrar archivos ignorados, modos opcionales: traditional, matching, no. "
 "(Predeterminado: traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "cuando"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
-"ignorar cambios en submódulos, opcional cuando: all,dirty,untracked. "
+"ignorar cambios en submódulos, opcional cuando: all, dirty, untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "listar en columnas los archivos sin seguimiento"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "no detectar renombrados"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
-msgstr "detectar renombres, opcionalmente configurar similaridad de índice"
+msgstr "detectar renombrados, opcionalmente configurar similaridad de índice"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Combinación de argumentos de archivos ignorados y no rastreados no soportada"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "suprime summary tras un commit exitoso"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "mostrar diff en el template del mensaje de commit"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Opciones para el mensaje del commit"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "leer mensaje desde un archivo"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "autor"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "sobrescribe el autor del commit"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "fecha"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "sobrescribe la fecha del commit"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "confirmar"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
-msgstr "reusar y editar el mensaje de un commit especifico"
+msgstr "reusar y editar el mensaje de un commit específico"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
-msgstr "reusar el mensaje de un commit especifico"
+msgstr "reusar el mensaje de un commit específico"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]commit"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "usar mensaje de formato autosquash para arreglar el amend/renombrado del "
 "commit especificado"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
-"usar el mensaje de formato autosquash para realizar squash  al commit "
+"usar el mensaje de formato autosquash para realizar squash al commit "
 "especificado"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "el autor del commit soy yo ahora (usado con -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "trailer"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "agregando trailer(s) personalizados"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
-msgstr "agregar un firmado por al final"
+msgstr "agregar una línea Signed-off-by al final"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "usar archivo de template especificado"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "forzar la edición del commit"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "incluir status en el template del mensaje de commit"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Opciones para el contenido del commit"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "confirmar todos los archivos cambiados"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "agregar archivos específicos al índice para confirmar"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "agregar archivos interactivamente"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "agregar cambios interactivamente"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
-msgstr "sólo confirmar archivos específicos"
+msgstr "solo confirmar archivos específicos"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "evitar los capturadores (hooks) de pre-commit y commit-msg"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "mostrar lo que sería incluido en el commit"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "enmendar commit previo"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
-msgstr "gancho bypass post reescritura"
+msgstr "salta el gancho de postreescritura"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
-msgstr "ok al grabar un cambio vacío"
+msgstr "vale grabar un cambio vacío"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
-msgstr "ok al grabar un cambio con un mensaje vacío"
+msgstr "vale grabar un cambio con un mensaje vacío"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Archivo MERGE_HEAD (%s) corrupto"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "no se pudo leer MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "no se pudo leer el mensaje de commit: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Abortando commit debido que el mensaje está en blanco.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
-msgstr "Abortando commit; no se ha editado el mensaje\n"
+msgstr "Abortando commit; no se ha editado el mensaje.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "Abortando commit debido que el cuerpo del mensaje está en blanco.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
 "not exceeded, and then \"git restore --staged :/\" to recover."
 msgstr ""
 "el repositorio ha sido actualizado, pero no se pudo escribir el archivo\n"
-"new_index. Verifique que el disco no este lleno y la quota no ha\n"
-"sido superada, y luego \"git restore --sateged :/\" para recuperar."
+"new_index. Verifique que el disco no esté lleno y la cuota no haya\n"
+"sido superada, y luego \"git restore --staged :/\" para recuperar."
 
 #: builtin/config.c:11
 msgid "git config [<options>]"
@@ -14029,7 +14111,7 @@
 
 #: builtin/config.c:130
 msgid "Config file location"
-msgstr "Ubicación del archivo configuración"
+msgstr "Ubicación del archivo de configuración"
 
 #: builtin/config.c:131
 msgid "use global config file"
@@ -14045,11 +14127,11 @@
 
 #: builtin/config.c:134
 msgid "use per-worktree config file"
-msgstr "usar un archivo de config por árbol de trabajo"
+msgstr "usar archivo de config del árbol de trabajo"
 
 #: builtin/config.c:135
 msgid "use given config file"
-msgstr "usar archivo config especificado"
+msgstr "usar archivo de config especificado"
 
 #: builtin/config.c:136
 msgid "blob-id"
@@ -14077,7 +14159,7 @@
 
 #: builtin/config.c:141
 msgid "get value specific for the URL: section[.var] URL"
-msgstr "obtener valor especifico para el URL: sección[.var] URL"
+msgstr "obtener valor específico para el URL: sección[.var] URL"
 
 #: builtin/config.c:142
 msgid "replace all matching variables: name value [value-pattern]"
@@ -14138,7 +14220,7 @@
 
 #: builtin/config.c:156
 msgid "value is decimal number"
-msgstr "valor es un numero decimal"
+msgstr "valor es un número decimal"
 
 #: builtin/config.c:157
 msgid "value is --bool or --int"
@@ -14154,7 +14236,7 @@
 
 #: builtin/config.c:160
 msgid "value is an expiry date"
-msgstr "valor es una fecha de expiración"
+msgstr "valor es una fecha de caducidad"
 
 #: builtin/config.c:161
 msgid "Other"
@@ -14174,7 +14256,8 @@
 
 #: builtin/config.c:165
 msgid "show origin of config (file, standard input, blob, command line)"
-msgstr "mostrar el origen de configuración (archivo, stdin, blob, comando)"
+msgstr ""
+"mostrar el origen de configuración (archivo, stdin, blob, línea de comandos)"
 
 #: builtin/config.c:166
 msgid "show scope of config (worktree, local, global, system, command)"
@@ -14213,7 +14296,7 @@
 #: builtin/config.c:441
 #, c-format
 msgid "cannot parse color '%s'"
-msgstr "no se analizar color '%s'"
+msgstr "no se puede analizar color '%s'"
 
 #: builtin/config.c:483
 msgid "unable to parse default color value"
@@ -14272,7 +14355,7 @@
 "extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
 "section in \"git help worktree\" for details"
 msgstr ""
-"--worktree no puede ser usado con multiples árboles de trabajo a menos que "
+"--worktree no puede ser usado con múltiples árboles de trabajo a menos que "
 "la\n"
 "extensión worktreeConfig esté habilitada. Por favor lea \"CONFIGURATION FILE"
 "\"\n"
@@ -14280,7 +14363,7 @@
 
 #: builtin/config.c:743
 msgid "--get-color and variable type are incoherent"
-msgstr "--get-color y tipo de variable incoherente"
+msgstr "--get-color con tipo de variable es incoherente"
 
 #: builtin/config.c:748
 msgid "only one action at a time"
@@ -14334,7 +14417,7 @@
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr ""
 "no se puede sobrescribir múltiples valores con un único valor\n"
-"\tUse una regexp, --add o --replace-all para cambiar %s."
+"       Use una regexp, --add o --replace-all para cambiar %s."
 
 #: builtin/config.c:943 builtin/config.c:954
 #, c-format
@@ -14409,7 +14492,7 @@
 #: builtin/describe.c:281
 #, c-format
 msgid "tag '%s' is externally known as '%s'"
-msgstr "tag '%s' es literalmente conocida como '%s'"
+msgstr "tag '%s' es externamente conocida como '%s'"
 
 #: builtin/describe.c:328
 #, c-format
@@ -14419,12 +14502,12 @@
 #: builtin/describe.c:330
 #, c-format
 msgid "No exact match on refs or tags, searching to describe\n"
-msgstr "No hay coincidencia exacta en refs o tags, buscando en describe\n"
+msgstr "No hay coincidencia exacta en refs o tags, buscando para describir\n"
 
 #: builtin/describe.c:397
 #, c-format
 msgid "finished search at %s\n"
-msgstr "búsqueda finalizada a las %s\n"
+msgstr "búsqueda finalizada a %s\n"
 
 #: builtin/describe.c:424
 #, c-format
@@ -14441,7 +14524,7 @@
 "No tags can describe '%s'.\n"
 "Try --always, or create some tags."
 msgstr ""
-"Ningún tag puede describit '%s'.\n"
+"Ningún tag puede describir '%s'.\n"
 "Intente --always, o cree algunos tags."
 
 #: builtin/describe.c:458
@@ -14455,7 +14538,7 @@
 "more than %i tags found; listed %i most recent\n"
 "gave up search at %s\n"
 msgstr ""
-"se encontró más de %i tags; se mostró %i más reciente\n"
+"se encontró más de %i tags; se mostraron las %i más recientes\n"
 "fin de la búsqueda en %s\n"
 
 #: builtin/describe.c:529
@@ -14495,7 +14578,7 @@
 
 #: builtin/describe.c:559
 msgid "only follow first parent"
-msgstr "solo seguir el primer patrón"
+msgstr "solo seguir el primer padre"
 
 #: builtin/describe.c:562
 msgid "only output exact matches"
@@ -14503,7 +14586,7 @@
 
 #: builtin/describe.c:564
 msgid "consider <n> most recent tags (default: 10)"
-msgstr "considerar <n> tags más recientes (default:10)"
+msgstr "considerar <n> tags más recientes (default: 10)"
 
 #: builtin/describe.c:566
 msgid "only consider tags matching <pattern>"
@@ -14547,7 +14630,7 @@
 
 #: builtin/diff-tree.c:155
 msgid "--stdin and --merge-base are mutually exclusive"
-msgstr "--stdin and --merge-baseson mutuamente exclusivas"
+msgstr "--stdin and --merge-base son mutuamente exclusivas"
 
 #: builtin/diff-tree.c:157
 msgid "--merge-base only works with two commits"
@@ -14642,36 +14725,36 @@
 msgid "you may want to cleanup or recover these."
 msgstr "tal vez desees limpiar o recuperar estos."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "use `diff.guitool` en lugar de `diff.tool`"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "realizar un diff de todo el directorio"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "no mostrar antes de lanzar una herramienta de diff"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "usar enlaces simbólicos en modo dir-diff"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "herramienta"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "usar la herramienta de diff especificada"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "mostrar una lista de herramientas de diff que pueden ser usadas con `--tool`"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14679,31 +14762,31 @@
 "hacer que 'git-difftool' salga cuando una herramienta de diff retorne un "
 "código de salida distinto de cero"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "especificar un comando personalizado para ver diffs"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "pasado a `diff`"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool requiere un árbol de trabajo o --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
-msgstr "--dirty-diff es incompatible con --no-index"
+msgstr "--dir-diff es incompatible con --no-index"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool y --extcmd son mutuamente exclusivas"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "no se ha proporcionado <herramienta> para --tool=<herramienta>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "no se ha entregado <comando> para --extcmd=<comando>"
 
@@ -14792,9 +14875,9 @@
 
 #: builtin/fast-export.c:1221
 msgid "skip output of blob data"
-msgstr "saltar el output de data blob"
+msgstr "saltar el salida de data blob"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "refspec"
 
@@ -14817,7 +14900,7 @@
 #: builtin/fast-export.c:1229
 msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
-"padres de la referencia que no estan en fast-export stream por id de objeto"
+"referir a los padres que no estén en fast-export stream por id de objeto"
 
 #: builtin/fast-export.c:1231
 msgid "show original object ids of blobs/commits"
@@ -14858,7 +14941,7 @@
 #: builtin/fast-import.c:3322
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr ""
-"Formato esperado de nombre:nombre de archivo para la opción de sobreescribir "
+"Formato esperado de nombre:nombre-de-archivo para la opción de sobreescribir "
 "submódulo"
 
 #: builtin/fast-import.c:3377
@@ -14897,7 +14980,7 @@
 
 #: builtin/fetch.c:147 builtin/pull.c:245
 msgid "set upstream for git pull/fetch"
-msgstr "configurar upstream para git pulll/fetch"
+msgstr "configurar upstream para git pull/fetch"
 
 #: builtin/fetch.c:149 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
@@ -14909,7 +14992,7 @@
 
 #: builtin/fetch.c:153 builtin/pull.c:191
 msgid "path to upload pack on remote end"
-msgstr "ruta para cargar el paquete al final del remoto"
+msgstr "ruta al paquete al lado remoto"
 
 #: builtin/fetch.c:154
 msgid "force overwrite of local reference"
@@ -14943,7 +15026,7 @@
 #: builtin/fetch.c:168
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
-"limpiar tags locales que no se encuentran en el remoto y eliminar tags "
+"limpiar tags locales que no se encuentren en el remoto y eliminar tags "
 "cambiados"
 
 #: builtin/fetch.c:169 builtin/fetch.c:194 builtin/pull.c:122
@@ -14969,11 +15052,11 @@
 #: builtin/fetch.c:181 builtin/fetch.c:187 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
-msgstr "historia profunda de un clon superficial"
+msgstr "profundizar la historia de un clon superficial"
 
 #: builtin/fetch.c:183 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
-msgstr "historia profunda de un repositorio superficial basado en tiempo"
+msgstr "profundizar la historia de un repositorio superficial hasta un tiempo"
 
 #: builtin/fetch.c:189 builtin/pull.c:221
 msgid "convert to a complete repository"
@@ -14981,7 +15064,7 @@
 
 #: builtin/fetch.c:192
 msgid "prepend this to submodule path output"
-msgstr "anteponer esto a salida de la ruta del submódulo"
+msgstr "anteponer esto a la salida de ruta del submódulo"
 
 #: builtin/fetch.c:195
 msgid ""
@@ -15031,7 +15114,7 @@
 
 #: builtin/fetch.c:586
 msgid "Couldn't find remote ref HEAD"
-msgstr "No se puedo encontrar ref remota HEAD"
+msgstr "No se pudo encontrar ref remota HEAD"
 
 #: builtin/fetch.c:757
 #, c-format
@@ -15062,11 +15145,11 @@
 #: builtin/fetch.c:885 builtin/fetch.c:922 builtin/fetch.c:944
 #: builtin/fetch.c:956
 msgid "unable to update local ref"
-msgstr "no se posible actualizar el ref local"
+msgstr "no es posible actualizar el ref local"
 
 #: builtin/fetch.c:889
 msgid "would clobber existing tag"
-msgstr "podría golpear tag existente"
+msgstr "sobrescribiría tag existente"
 
 #: builtin/fetch.c:911
 msgid "[new tag]"
@@ -15086,7 +15169,7 @@
 
 #: builtin/fetch.c:961
 msgid "non-fast-forward"
-msgstr "avance lento"
+msgstr "avance no rápido"
 
 #: builtin/fetch.c:1065
 msgid ""
@@ -15119,8 +15202,8 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "rechazado %s porque raíces superficiales no pueden ser actualizadas"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "rechazado %s porque raíces superficiales no pueden ser actualizada"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -15139,12 +15222,12 @@
 #: builtin/fetch.c:1327
 #, c-format
 msgid "   (%s will become dangling)"
-msgstr "   (%s se pondrá colgado)"
+msgstr "   (%s se volverá colgante)"
 
 #: builtin/fetch.c:1328
 #, c-format
 msgid "   (%s has become dangling)"
-msgstr "   (%s se ha colgado)"
+msgstr "   (%s se ha vuelto colgante)"
 
 #: builtin/fetch.c:1360
 msgid "[deleted]"
@@ -15162,7 +15245,7 @@
 #: builtin/fetch.c:1403
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
-msgstr "Opción \"%s\" valor \"%s\" no es válido para %s"
+msgstr "Valor \"%2$s\" de opción \"%1$s\" no es válido para %3$s"
 
 #: builtin/fetch.c:1406
 #, c-format
@@ -15220,60 +15303,64 @@
 msgid "You need to specify a tag name."
 msgstr "Tienes que especificar un nombre de tag."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only necesita uno o más --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Profundidad negativa en --deepen no soportada"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen y --depth son mutuamente exclusivas"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth y --unshallow no pueden ser usadas juntas"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow no tiene sentido en un repositorio completo"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all no toma un argumento de repositorio"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all no tiene sentido con refspecs"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "No existe el remoto o grupo remoto: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
-msgstr "Extraer un grupo y especificar un refspecs no tiene sentido"
+msgstr "Extraer un grupo y especificar refspecs no tiene sentido"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "tiene que proveer un remoto cuando usa --negotiate-only"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Protocolo no soporta --negotiate-only, saliendo."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr ""
 "--filter solo puede ser usado con el remoto configurado en extensions."
-"partialClone"
+"partialclone"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic solo se puede usar cuando se busca desde un control remoto"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin solo se puede usar cuando se busca desde un control remoto"
 
@@ -15341,7 +15428,7 @@
 
 #: builtin/for-each-ref.c:41 builtin/tag.c:483
 msgid "respect format colors"
-msgstr "respetar el formato de colores"
+msgstr "respetar los colores de formato"
 
 #: builtin/for-each-ref.c:44
 msgid "print only refs which points at the given object"
@@ -15349,37 +15436,37 @@
 
 #: builtin/for-each-ref.c:46
 msgid "print only refs that are merged"
-msgstr "mostrar solo refs que son fusionadas"
+msgstr "mostrar solo refs que sean fusionadas"
 
 #: builtin/for-each-ref.c:47
 msgid "print only refs that are not merged"
-msgstr "mostrar solo refs que no son fusionadas"
+msgstr "mostrar solo refs que no sean fusionadas"
 
 #: builtin/for-each-ref.c:48
 msgid "print only refs which contain the commit"
-msgstr "mostrar solo refs que contienen el commit"
+msgstr "mostrar solo refs que contengan el commit"
 
 #: builtin/for-each-ref.c:49
 msgid "print only refs which don't contain the commit"
-msgstr "mostrar solo refs que no contienen el commit"
+msgstr "mostrar solo refs que no contengan el commit"
 
 #: builtin/for-each-repo.c:9
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<config> <argumetnos-de-comando>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "config"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "clave de configuración que almacena una lista de rutas de repositorio"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "falta --config=<config>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "desconocido"
 
@@ -15395,16 +15482,16 @@
 msgid "warning in %s %s: %s"
 msgstr "peligro en %s %s: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "link roto de %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "tipo de objeto equivocado en link"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15413,211 +15500,211 @@
 "link roto de %7s %s\n"
 "              a %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
-msgstr "faltan %s %s"
+msgstr "falta %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "inalcanzable %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "actualizando %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "no se pudo crear lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "no se pudo finalizar '%s'"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Revisando %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Verificando conectividad (%d objetos)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Revisando %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "links rotos"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "raíz %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
-msgstr "tag %s %s (%s) en %s"
+msgstr "tagged %s %s (%s) en %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: objecto corrupto o faltante"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: referencia inválida %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Revisando reflog %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: puntero sha1 inválido %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: no es un commit"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "aviso: No hay referencias por defecto"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: objeto corrupto o no encontrado: %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
-msgstr "%s: no se puede analizar objeto: %s"
+msgstr "%s: no se pudo analizar objeto: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "mal sha1 de archivo: %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Revisando directorio de objetos"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Revisando objetos directorios"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Revisando link %s"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "%s inválido"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s apunta a algo extraño (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
-msgstr "%s: HEAD desacoplado apunta a nada"
+msgstr "%s: HEAD desacoplado no apunta a nada"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "aviso: %s apunta a un branch no nacido (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
-msgstr "Revisando el cache tree"
+msgstr "Revisando el tree caché"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: puntero inválido sha1 en cache-tree"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "non-tree en cache-tree"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opciones>] [<objeto>...]"
 
-#: builtin/fsck.c:756
-msgid "show unreachable objects"
-msgstr "mostrar objetos ilegibles"
-
 #: builtin/fsck.c:757
-msgid "show dangling objects"
-msgstr "mostrar objetos colgados"
+msgid "show unreachable objects"
+msgstr "mostrar objetos inalcanzables"
 
 #: builtin/fsck.c:758
+msgid "show dangling objects"
+msgstr "mostrar objetos colgantes"
+
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "reportar tags"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "reportar nodos raíz"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "hacer objetos índices cabezas de nodos"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "hacer reflogs cabeza de nodos (default)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "también considerar paquetes y objetos alternos"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "revisar solo conectividad"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "habilitar revisión más estricta"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
-msgstr "escribir objetos colgados en .git/lost-found"
+msgstr "escribir objetos colgantes en .git/lost-found"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "mostrar progreso"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
-msgstr "mostrar nombres verboso para objetos alcanzables"
+msgstr "mostrar nombres verbosos de objetos alcanzables"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Revisando objetos"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: objeto faltante"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "parámetro inválido: sha1 esperado, se obtuvo '%s'"
@@ -15639,7 +15726,7 @@
 #: builtin/gc.c:487 builtin/init-db.c:57
 #, c-format
 msgid "cannot stat '%s'"
-msgstr "no se pudo definir '%s'"
+msgstr "no se puede hacer stat en '%s'"
 
 #: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:573
 #, c-format
@@ -15684,7 +15771,7 @@
 #: builtin/gc.c:576
 #, c-format
 msgid "failed to parse gc.logexpiry value %s"
-msgstr "falló al analizar valor %s de gc.logexpirity"
+msgstr "falló al analizar valor %s de gc.logexpiry"
 
 #: builtin/gc.c:587
 #, c-format
@@ -15713,14 +15800,14 @@
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
-"gc ya está ejecutándose en la máquina '%s' pid %<PRIuMAX> (use --force so no "
+"gc ya está ejecutándose en la máquina '%s' pid %<PRIuMAX> (use --force si no "
 "es así)"
 
 #: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
-"Hay muchos objetos sueltos inalcanzables; ejecute 'git prune' para "
+"Hay demasiados objetos sueltos inalcanzables; ejecute 'git prune' para "
 "eliminarlos."
 
 #: builtin/gc.c:715
@@ -15748,11 +15835,11 @@
 
 #: builtin/gc.c:1022
 msgid "failed to start 'git pack-objects' process"
-msgstr "no pudo iniciar el proceso 'git pack-objects'"
+msgstr "no se pudo iniciar el proceso 'git pack-objects'"
 
 #: builtin/gc.c:1039
 msgid "failed to finish 'git pack-objects' process"
-msgstr "no pudo finalizar el proceso 'git pack-objects'"
+msgstr "no se pudo finalizar el proceso 'git pack-objects'"
 
 #: builtin/gc.c:1091
 msgid "failed to write multi-pack-index"
@@ -15815,11 +15902,11 @@
 
 #: builtin/gc.c:1422
 msgid "run a specific task"
-msgstr "ruta a tarea específica"
+msgstr "ejecutar una tarea específica"
 
 #: builtin/gc.c:1439
 msgid "use at most one of --auto and --schedule=<frequency>"
-msgstr "usar como máximo una entre --auto y --schedule=<frecuencia>"
+msgstr "usar como máximo una de --auto y --schedule=<frecuencia>"
 
 #: builtin/gc.c:1482
 msgid "failed to run 'git config'"
@@ -15832,7 +15919,7 @@
 
 #: builtin/gc.c:1576
 msgid "failed to start launchctl"
-msgstr "Falló al iniciar launchctl."
+msgstr "falló al iniciar launchctl"
 
 #: builtin/gc.c:1613
 #, c-format
@@ -15850,21 +15937,21 @@
 
 #: builtin/gc.c:1835
 msgid "failed to start schtasks"
-msgstr "no pudo iniciar schtasks"
+msgstr "no se pudo iniciar schtasks"
 
 #: builtin/gc.c:1879
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
-"no pudo ejecutar 'crontab -l'; es posible que su sistema no soporte 'cron'"
+"no se pudo ejecutar 'crontab -l'; es posible que su sistema no soporte 'cron'"
 
 #: builtin/gc.c:1896
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
-"no pudo ejecutar 'crontab'; es posible que su sistema no soporte 'cron'"
+"no se pudo ejecutar 'crontab'; es posible que su sistema no soporte 'cron'"
 
 #: builtin/gc.c:1900
 msgid "failed to open stdin of 'crontab'"
-msgstr "no pudo abrir stdin de 'crontab'"
+msgstr "no se pudo abrir stdin de 'crontab'"
 
 #: builtin/gc.c:1942
 msgid "'crontab' died"
@@ -15905,8 +15992,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "no hay soporte para hilos, ignorando %s"
@@ -15914,255 +16001,255 @@
 #: builtin/grep.c:473 builtin/grep.c:603 builtin/grep.c:643
 #, c-format
 msgid "unable to read tree (%s)"
-msgstr "no es posible leer el  árbol (%s)"
+msgstr "no es posible leer el árbol (%s)"
 
 #: builtin/grep.c:658
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "no es posible realizar grep del objeto de tipo %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "switch `%c' espera un valor numérico"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "buscar en el índice en lugar del árbol de trabajo"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
-msgstr "encontrar en contenidos no manejados por git"
+msgstr "buscar en contenidos no manejados por git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "buscar en archivos rastreados y no rastreados"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorar archivos especificados vía '.gitignore'"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "búsqueda recursiva en cada submódulo"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
-msgstr "mostrar líneas que no concuerdan"
+msgstr "mostrar líneas que no concuerden"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "búsqueda insensible a mayúsculas"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "concordar patrón solo a los límites de las palabras"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "procesar archivos binarios como texto"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "no concordar patrones en archivos binarios"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "procesar archivos binarios con filtros textconv"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "buscar en subdirectorios (default)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
-msgstr "descender como máximo <valor-de-profundiad>  niveles"
+msgstr "descender como máximo <valor-de-profundiad> niveles"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "usar expresiones regulares POSIX extendidas"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "usar expresiones regulares POSIX (default)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
-msgstr "interpretar patrones como strings arreglados"
+msgstr "interpretar patrones como strings fijos"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "usar expresiones regulares compatibles con Perl"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "mostrar números de línea"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
-msgstr "mostrar el número de columna de la primer coincidencia"
+msgstr "mostrar el número de columna de la primera coincidencia"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "no mostrar nombres de archivo"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "mostrar nombres de archivo"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "mostrar nombres de archivo relativos al directorio superior"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "mostrar solo nombres de archivos en lugar de líneas encontradas"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "sinónimo para --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "mostrar solo los nombres de archivos sin coincidencias"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "imprimir NUL después del nombre de archivo"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
-msgstr "mostrar solo partes que concuerdan de una línea"
+msgstr "mostrar solo las partes que concuerden de una línea"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "mostrar el número de concordancias en lugar de las líneas concordantes"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "resaltar concordancias"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "imprimir una línea vacía entre coincidencias de diferentes archivos"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "mostrar el nombre de archivo solo una vez para concordancias en el mismo "
 "archivo"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "mostrar <n> líneas de contexto antes y después de la concordancia"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "mostrar <n> líneas de contexto antes de las concordancias"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "mostrar <n> líneas de context después de las concordancias"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "usar <n> hilos de trabajo"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "atajo para -C NUM"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr ""
 "mostrar una línea con el nombre de la función antes de las concordancias"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "mostrar la función circundante"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "leer patrones del archivo"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "concordar <patrón>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "combinar patrones especificados con -e"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "indicar concordancia con exit status sin output"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr ""
-"mostrar solo concordancias con archivos que concuerdan todos los patrones"
+"mostrar solo concordancias con archivos que concuerdan con todos los patrones"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "paginador"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "mostrar archivos concordantes en el paginador"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permitir el llamado de grep(1) (ignorado por esta build)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
-msgstr "no se ha entregado patrón"
+msgstr "no se ha entregado ningún patrón"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index o --untracked no se puede usar con revs"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
-msgstr "no se posible resolver revisión: %s"
+msgstr "no es posible resolver revisión: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked no es soportada con --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "combinación de opciones inválida, ignorando --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "no se soportan hilos, ignorando --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número inválido de hilos especificado (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager solo funciona en el árbol de trabajo"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached o --untracked no pueden ser usadas con --no-index"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked no se puede usar con --cached"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard no puede ser usada para contenido rastreado"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
-msgstr "--cached y árboles han sido entregados"
+msgstr "ambos --cached y árboles han sido entregados"
 
 #: builtin/hash-object.c:85
 msgid ""
@@ -16190,14 +16277,14 @@
 
 #: builtin/hash-object.c:103
 msgid "store file as is without filters"
-msgstr "guardar el archivo como es sin filtros"
+msgstr "guardar el archivo tal cual sin filtros"
 
 #: builtin/hash-object.c:104
 msgid ""
 "just hash any random garbage to create corrupt objects for debugging Git"
 msgstr ""
 "solo realizar un hash a cualquier basura random para crear un objeto "
-"corrupto para hacer debugging de Gti"
+"corrupto para hacer debugging de Git"
 
 #: builtin/hash-object.c:105
 msgid "process file as it were from this path"
@@ -16213,7 +16300,7 @@
 
 #: builtin/help.c:49
 msgid "print list of useful guides"
-msgstr "mostrar una lista de nociones utiles"
+msgstr "mostrar una lista de guías útiles"
 
 #: builtin/help.c:50
 msgid "print all configuration variable names"
@@ -16221,15 +16308,15 @@
 
 #: builtin/help.c:52
 msgid "show man page"
-msgstr "mostrar la pagina del manual"
+msgstr "mostrar la página del manual"
 
 #: builtin/help.c:53
 msgid "show manual in web browser"
-msgstr "mostrar la pagina del manual en un navegador web"
+msgstr "mostrar la página del manual en un navegador web"
 
 #: builtin/help.c:55
 msgid "show info page"
-msgstr "mostrar la pagina de info"
+msgstr "mostrar la página de info"
 
 #: builtin/help.c:57
 msgid "print command description"
@@ -16255,7 +16342,7 @@
 #: builtin/help.c:211
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
-msgstr "la versión '%d' de emacsclient es muy antigua (<22)."
+msgstr "la versión '%d' de emacsclient es demasiada antigua (<22)."
 
 #: builtin/help.c:229 builtin/help.c:251 builtin/help.c:261 builtin/help.c:269
 #, c-format
@@ -16268,8 +16355,8 @@
 "'%s': path for unsupported man viewer.\n"
 "Please consider using 'man.<tool>.cmd' instead."
 msgstr ""
-"'%s': ruta para el visualizador del manual no soportada.\n"
-"Por favor considere usar 'man.<herramienta.cmd'."
+"'%s': ruta para un visualizador del manual no soportado.\n"
+"Por favor considere usar 'man.<herramienta>.cmd'."
 
 #: builtin/help.c:319
 #, c-format
@@ -16277,7 +16364,7 @@
 "'%s': cmd for supported man viewer.\n"
 "Please consider using 'man.<tool>.path' instead."
 msgstr ""
-"'%s': comando no soportado para man viewer.\n"
+"'%s': comando para man viewer soportado.\n"
 "Por favor considere usar 'man.<herramienta>.path."
 
 #: builtin/help.c:436
@@ -16285,30 +16372,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s': visualizador de man desconocido."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
-msgstr "ningún visualizador de manual proceso la petición"
+msgstr "ningún visualizador de manual procesó la petición"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
-msgstr "ningún visor de info manejo la petición"
+msgstr "ningún visor de info manejó la petición"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' tiene el alias '%s'"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "mal alias.%s string: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "uso: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' para más información"
 
@@ -16340,15 +16427,15 @@
 
 #: builtin/index-pack.c:306
 msgid "read error on input"
-msgstr "leer error en input"
+msgstr "error al leer en input"
 
 #: builtin/index-pack.c:318
 msgid "used more bytes than were available"
 msgstr "se usaron más bytes de los disponibles"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
-msgstr "paquete muy grande para la definición actual de off_t"
+msgstr "paquete demasiado grande para la definición actual de off_t"
 
 #: builtin/index-pack.c:328 builtin/unpack-objects.c:95
 msgid "pack exceeds maximum allowed size"
@@ -16373,245 +16460,245 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "versión de paquete %<PRIu32> no soportada"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paquete tiene un mal objeto en el offset %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate devolvió %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "valor de offset desbordado para el objeto base delta"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "offset de base delta está fuera de límites"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "tipo de objeto %d desconocido"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
-msgstr "no se puede propagar el paquete"
+msgstr "no se puede hacer pread en el paquete"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "final prematuro de archivo de paquete, %<PRIuMAX> byte faltante"
 msgstr[1] "final prematuro de archivo de paquete, %<PRIuMAX> bytes faltantes"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "inconsistencia seria en inflate"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
-msgstr "¡COLISIÓN DE TIPO SHA1 ENCONTRADA CON %s !"
+msgstr "¡ COLISIÓN DE SHA1 ENCONTRADA CON %s !"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
-msgstr "no se posible leer %s"
+msgstr "no es posible leer %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "no se puede leer la información existente del objeto %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "no se puede leer el objeto existente %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objeto blob %s inválido"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "error de fsck en el objeto empaquetado"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "No todos los objetos hijos de %s son alcanzables"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "falló al aplicar delta"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Recibiendo objetos"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Indexando objetos"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paquete está corrompido (SHA1 no concuerda)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "no se puede fstat al archivo de paquete"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "el paquete tiene basura al final"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "confusión más allá de la locura en parse_pack_objects()"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Resolviendo deltas"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "no es posible crear hilo: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "confusión más allá de la locura"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "completado con %d objeto local"
 msgstr[1] "completado con %d objetos locales"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Tail checksum para %s inesperada (¿corrupción de disco?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paquete tiene %d delta sin resolver"
 msgstr[1] "paquete tiene %d deltas sin resolver"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "no es posible desinflar el objeto adjunto (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "objeto local %s está corrompido"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "el nombre del archivo de paquete '%s' no termina con '.%s'"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
-msgstr "no se puede escribir %s en el archivo '%s'"
+msgstr "no se puede escribir archivo '%2$s' de %1$s"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
-msgstr "no se puede cerrar escrito %s en archivo '%s'"
+msgstr "no se puede cerrar el archivo escrito '%2$s' de %1$s"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
-msgstr "error mientras se cierra el archivo paquete"
+msgstr "error mientras se cerraba el archivo paquete"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "no se puede guardar el archivo paquete"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "no se puede guardar el archivo índice"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mal pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "No se puede abrir el archivo paquete existente '%s'"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
-msgstr "No se puede abrir el índice del archivo paquete para '%s'"
+msgstr "No se puede abrir el archivo índice del paquete para '%s'"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "no delta: %d objeto"
 msgstr[1] "no delta: %d objetos"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "largo de cadena = %d: %lu objeto"
 msgstr[1] "largo de cadena = %d: %lu objetos"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "No se puede regresar a cwd"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "mal %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "algoritmo hash desconocido '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin no puede ser usada sin --stdin"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiere un repositorio git"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format no se puede usar con --stdin"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify no recibió ningún nombre de archivo de paquete"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "error de fsck en objetos paquete"
 
 #: builtin/init-db.c:63
 #, c-format
 msgid "cannot stat template '%s'"
-msgstr "no se pudo definir template '%s'"
+msgstr "no se pudo hacer stat en la template '%s'"
 
 #: builtin/init-db.c:68
 #, c-format
@@ -16648,56 +16735,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "no se copian templates de '%s': %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "nombre de rama inicial inválido: '%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "no es posible manejar el tipo de archivo %d"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "no se puede mover %s a %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
-msgstr "intentar reinicializar el repositorio con un hash diferente"
+msgstr "intento de reinicializar el repositorio con un hash diferente"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s ya existe"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: ignorando --initial-branch=%s"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Reinicializado el repositorio Git compartido existente en %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Reinicializado el repositorio Git existente en %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Inicializado repositorio Git compartido vacío en %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Inicializado repositorio Git vacío en %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16705,42 +16792,42 @@
 "git init [-q | --quiet] [--bare] [--template=<directorio-template>] [--"
 "shared[=<permisos>]] [<directorio>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "permisos"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 "especifica que el repositorio de git será compartido entre varios usuarios"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "sobrescribir el nombre de la rama inicial"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "especificar el algoritmo hash a usar"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir y --bare son mutuamente excluyentes"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
-msgstr "no se pude crear directorio %s"
+msgstr "no se puede crear directorio %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "no se puede aplicar chdir a %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -16749,12 +16836,12 @@
 "%s (o --work-tree=<directorio>) no se permite sin especificar %s (o --git-"
 "dir=<directorio>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "No se puede acceder al árbol de trabajo '%s'"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir incompatible con el repositorio desnudo"
 
@@ -16768,7 +16855,7 @@
 
 #: builtin/interpret-trailers.c:95
 msgid "edit files in place"
-msgstr "editar archivos en el lugar"
+msgstr "editar archivos en lugar"
 
 #: builtin/interpret-trailers.c:96
 msgid "trim empty trailers"
@@ -16780,7 +16867,7 @@
 
 #: builtin/interpret-trailers.c:101
 msgid "action if trailer already exists"
-msgstr "acción if trailer ya existe"
+msgstr "acción si trailer ya existe"
 
 #: builtin/interpret-trailers.c:103
 msgid "action if trailer is missing"
@@ -16820,7 +16907,7 @@
 
 #: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
-msgstr "git log [<opciones>] [<rango-de-revisión>] [[--] <ruta>...]"
+msgstr "git log [<opciones>] [<rango-de-revisiones>] [[--] <ruta>...]"
 
 #: builtin/log.c:60
 msgid "git show [<options>] <object>..."
@@ -16849,99 +16936,99 @@
 
 #: builtin/log.c:187
 msgid "decorate options"
-msgstr "opciones de decorado"
+msgstr "opciones de decoración"
 
 #: builtin/log.c:190
 msgid ""
 "trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
 msgstr ""
-"rastrear la evolución del rango de línea <inicio>, <fin> o función: <nombre-"
+"rastrear la evolución del rango de línea <inicio>,<fin> o función :<nombre-"
 "funcion> en <archivo>"
 
 #: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<rango>:<archivo> no se puede usar con pathspec"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Salida final: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: mal archivo"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "no se pudo leer objeto %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "tipo desconocido: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: modo cover from description inválido"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
-msgstr "formate.headers. sin valor"
+msgstr "format.headers sin valor"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "no se puede abrir archivo patch %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
-msgstr "necesita exactamente un rango"
+msgstr "se necesita exactamente un rango"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "no es un rango"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
-msgstr "letras de portada necesita formato email"
+msgstr "carta de portada necesita formato email"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "falló al crear los archivos cover-letter"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "insano in-reply-to: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opciones>] [<desde> | <rango-de-revisiones>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "¿dos directorios de salida?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "commit desconocido %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "falló al resolver '%s' como ref válida"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "no se pudo encontrar una base de fusión exacta"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16953,294 +17040,294 @@
 "O puedes especificar un commit base mediante --base=<id-commit-base> "
 "manualmente"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "falló al encontrar una base de fusión exacta"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "el commit base debe ser el ancestro de la lista de revisión"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "el commit base no debe estar en la lista de revisión"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "no se puede obtener id de patch"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "falló al inferir rangos range-diff de la serie actual"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "usando '%s' como origen de diferencia de rango de la serie actual"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "use [PATCH n/m] incluso con un único parche"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "use [PATCH] incluso con múltiples parches"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "mostrar parches en standard out"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
-msgstr "generar letra de cover"
+msgstr "generar carta de cover"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr ""
-"usar una secuencia simple de números para salida de nombres de archivos"
+"usar una secuencia simple de números para los nombres de archivos de salida"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "use <sfx> en lugar de '.patch'"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "comenzar a numerar los parches desde <n> en lugar de 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "reroll-count"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "marcar las series como Nth re-roll"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "tamaño máximo de nombre de archivo resultante"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "use [RFC PATCH] en lugar de [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "modo-cover-from-description"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 "genera partes de una carta de presentación basado en la descripción de la "
 "rama"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "use [<prefijo>] en lugar de [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "guardar archivos resultantes en <dir>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "no cortar/agregar [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "no mostrar diffs binarios"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
-msgstr "salida como hash de todos-ceros en la cabecera From"
+msgstr "poner hash de todos ceros en la cabecera From"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "no incluya un parche que coincida con un commit en upstream"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "mostrar formato de parche en lugar del default (parche + stat)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
-msgstr "Mensajeando"
+msgstr "Mensajería"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "cabezal"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "agregar cabecera email"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "email"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "agregar cabecera To:"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "agregar cabecera Cc:"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
-"configurar dirección From a <ident> ( o identidad de committer si está "
+"configurar dirección From a <ident> (o identidad de committer si está "
 "ausente)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "id de mensaje"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "hacer primer mail una respuesta a <id de mensaje>"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "límite"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "adjuntar el parche"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "poner el parche en línea"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "habilitar hilos de mensajes, estilos: superficial, profundo"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "firma"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "agregar una firma"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "commit-base"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr ""
 "agregar información de árbol de requisitos previos a la serie de parches"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "agregar una firma de un archivo"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "no mostrar los nombres de archivos de los parches"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "mostrar medidor de progreso mientras se generan los parches"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "muestra cambios contra <rev> en cover letter o en un solo parche"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "muestra cambios contra <refspec> en cover letter o en un solo parche"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "porcentaje por el cual la creación es pesada"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "línea de identificación inválida: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n y -k son mutuamente exclusivas"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc y -k son mutuamente exclusivos"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only no tiene sentido"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status no tiene sentido"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check no tiene sentido"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, and --output-directory son mutuamente exclusivas"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff requiere --cover-letter o un parche único"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff contra v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor requiere --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff requiere --cover-letter o parche único"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff contra v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "no se puede leer la firma del archivo '%s'"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Generando parches"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "falló al crear los archivos de salida"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<upstream> [<head> [<límite>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17286,16 +17373,15 @@
 
 #: builtin/ls-files.c:636
 msgid "show staged contents' object name in the output"
-msgstr ""
-"mostrar contenido de nombres de objetos en el área de stage en la salida"
+msgstr "mostrar nombre de objeto del contenido del área de stage en la salida"
 
 #: builtin/ls-files.c:638
 msgid "show files on the filesystem that need to be removed"
-msgstr "mostrar archivos en el filesystem que necesitan ser borrados"
+msgstr "mostrar archivos en el filesystem que necesiten ser borrados"
 
 #: builtin/ls-files.c:640
 msgid "show 'other' directories' names only"
-msgstr "mostrar solo nombres de 'directorios otros'"
+msgstr "mostrar solo nombres de 'otros' directorios"
 
 #: builtin/ls-files.c:642
 msgid "show line endings of files"
@@ -17323,8 +17409,7 @@
 
 #: builtin/ls-files.c:657
 msgid "read additional per-directory exclude patterns in <file>"
-msgstr ""
-"leer patrones de exclusión de manera adicional por directorio en <archivo>"
+msgstr "leer patrones adicionales de exclusión por directorio en <archivo>"
 
 #: builtin/ls-files.c:659
 msgid "add the standard git exclusions"
@@ -17349,7 +17434,7 @@
 #: builtin/ls-files.c:670
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
-"fingir que las rutas han sido borradas ya que todavía hay <árbol-ismos> "
+"fingir que las rutas hayan sido borradas ya que todavía hay <árbol-ismos> "
 "presentes"
 
 #: builtin/ls-files.c:672
@@ -17523,7 +17608,7 @@
 
 #: builtin/merge-base.c:145
 msgid "find ancestors for a single n-way merge"
-msgstr "encontrar ancestros para una única fusión de n-vías"
+msgstr "encontrar ancestros para una única fusión de n vías"
 
 #: builtin/merge-base.c:147
 msgid "list revs not reachable from others"
@@ -17535,7 +17620,7 @@
 
 #: builtin/merge-base.c:151
 msgid "find where <commit> forked from reflog of <ref>"
-msgstr "encontrar donde <commit> forjó del reflog de <ref>"
+msgstr "encontrar donde <commit> bifurcó del reflog de <ref>"
 
 #: builtin/merge-file.c:9
 msgid ""
@@ -17551,7 +17636,7 @@
 
 #: builtin/merge-file.c:36
 msgid "use a diff3 based merge"
-msgstr "usar un fusión basada en diff3"
+msgstr "usar una fusión basada en diff3"
 
 #: builtin/merge-file.c:37
 msgid "for conflicts, use our version"
@@ -17567,7 +17652,7 @@
 
 #: builtin/merge-file.c:44
 msgid "for conflicts, use this marker size"
-msgstr "por conflictos, usar el tamaño de este marcador"
+msgstr "por conflictos, usar este tamaño de marcador"
 
 #: builtin/merge-file.c:45
 msgid "do not warn about conflicts"
@@ -17596,7 +17681,7 @@
 
 #: builtin/merge-recursive.c:65
 msgid "not handling anything other than two heads merge."
-msgstr "no manejando nada distinto a fusiones de dos heads."
+msgstr "no manejando nada distinto a fusión de dos heads."
 
 #: builtin/merge-recursive.c:74 builtin/merge-recursive.c:76
 #, c-format
@@ -17612,17 +17697,9 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opciones>] [<commit>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
-msgstr "cambiar `m' requiere un valor"
+msgstr "opción `m' requiere un valor"
 
 #: builtin/merge.c:146
 #, c-format
@@ -17676,7 +17753,7 @@
 
 #: builtin/merge.c:271
 msgid "allow fast-forward (default)"
-msgstr "permitir fast-forwars (default)"
+msgstr "permitir fast-forward (default)"
 
 #: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
@@ -17684,7 +17761,7 @@
 
 #: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
-msgstr "verificar que el commit nombrado tiene una firma GPG válida"
+msgstr "verificar que el commit nombrado tenga una firma GPG válida"
 
 #: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
 #: builtin/rebase.c:540 builtin/rebase.c:1413 builtin/revert.c:114
@@ -17713,7 +17790,7 @@
 
 #: builtin/merge.c:292
 msgid "--abort but leave index and working tree alone"
-msgstr "--abort pero deja el índice y el árbol de trabajo solos"
+msgstr "--abort pero no tocar el índice ni el árbol de trabajo"
 
 #: builtin/merge.c:294
 msgid "continue the current in-progress merge"
@@ -17763,38 +17840,37 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' no apunta a ningún commit"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mal string branch.%s.mergeoptions: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "No manejando nada más que fusión de dos heads."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opción desconocida para merge-recursive: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "no es posible escribir %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
-msgstr "No se puedo leer de '%s'"
+msgstr "No se pudo leer de '%s'"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
-"No se realiza commit de la fusión; use 'git commit' para completar la "
-"fusión.\n"
+"No se realiza commit de fusión; use 'git commit' para completar la fusión.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17806,87 +17882,87 @@
 "tópico.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Un mensaje vacío aborta el commit.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
 "Líneas comenzando con '%c' serán ignoradas, y un mensaje vacío aborta\n"
-" el commit.\n"
+"el commit.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Mensaje de commit vacío."
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Maravilloso.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Fusión automática falló; arregle los conflictos y luego realice un commit "
 "con el resultado.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "No rama actual."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "No hay remoto para la rama actual."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
-msgstr "Por defecto, no hay un upstream  definido para la rama actual."
+msgstr "Por defecto, no hay un upstream definido para la rama actual."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
-msgstr "No hay rama de rastreo remoto para %s de %s"
+msgstr "No hay rama de rastreo remota para %s de %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Valor erróneo '%s' en el entorno '%s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "nada que podamos fusionar en %s: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "nada que podamos fusionar"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort no espera argumentos"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "No hay una fusión para abortar (falta MERGE_HEAD)"
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit no espera argumentos"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue no espera argumentos"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "No hay fusión en progreso (falta MERGE_HEAD)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17894,7 +17970,7 @@
 "No has concluido la fusión (existe MERGE_HEAD).\n"
 "Por favor, realiza un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17902,89 +17978,89 @@
 "No has concluido el cherry-pick (existe CHERRY_PICK_HEAD).\n"
 "Por favor, realiza un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "No has concluido el cherry-pick (existe CHERRY_PICK_HEAD)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "No se puede combinar --squash con --no-ff."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "No se puede combinar --squash con --commit."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "No hay commit especificado y merge.defaultToUpstream no está configurado."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
-msgstr "Commit aplastado dentro de un head vacío no es soportado todavía"
+msgstr "Aplastar un commit a un head vacío no es soportado todavía"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Commit no fast-forward no tiene sentido dentro de un head vacío"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - nada que podamos fusionar"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Solo se puede fusionar exactamente un commit en un head vacío"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "rehusando fusionar historias no relacionadas"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Actualizando %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Intentando fusión en índice realmente trivial...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
-msgstr "Nop.\n"
+msgstr "No.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "No es posible hacer fast-forward, abortando."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Rebobinando el árbol a original...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Intentando estrategia de fusión %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ninguna estrategia de fusión manejó la fusión.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Fusionar con estrategia %s falló.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Usando el %s para preparar resolución a mano.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Usando estrategia %s para preparar resolución a mano.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -18012,12 +18088,12 @@
 #: builtin/mktag.c:56
 #, c-format
 msgid "could not read tagged object '%s'"
-msgstr "no se pudo leer objeto de tag '%s'"
+msgstr "no se pudo leer objeto etiquetado '%s'"
 
 #: builtin/mktag.c:59
 #, c-format
 msgid "object '%s' tagged as '%s', but is a '%s' type"
-msgstr "objeto '%s' es taggeado como '%s', pero es un tipo '%s'"
+msgstr "objeto '%s' es etiquetado como '%s', pero es de tipo '%s'"
 
 #: builtin/mktag.c:97
 msgid "tag on stdin did not pass our strict fsck check"
@@ -18065,7 +18141,8 @@
 
 #: builtin/multi-pack-index.c:54
 msgid "object directory containing set of packfile and pack-index pairs"
-msgstr "objeto directorio conteniendo conjuntos de pares packfile y pack-index"
+msgstr ""
+"directorio de objetos conteniendo conjunto de pares de packfile y pack-index"
 
 #: builtin/multi-pack-index.c:69
 msgid "preferred-pack"
@@ -18081,9 +18158,9 @@
 "larger than this size"
 msgstr ""
 "durante el repack, recolectar los pack-files de tamaño menor en un batch que "
-"es más grande que este tamaño"
+"sea más grande que este tamaño"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "subcomando desconocido: %s"
@@ -18100,8 +18177,8 @@
 #: builtin/mv.c:85
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
-"Por favor agrega el stage de tus cambios a .gitmodules o realiza un stash "
-"para proceder"
+"Por favor agrega tus cambios a .gitmodules al stage o realiza un stash para "
+"proceder"
 
 #: builtin/mv.c:103
 #, c-format
@@ -18110,7 +18187,7 @@
 
 #: builtin/mv.c:125
 msgid "force move/rename even if target exists"
-msgstr "forzar mover/renombrar incluso si el objetivo existe"
+msgstr "forzar mover/renombrar incluso si el destino existe"
 
 #: builtin/mv.c:127
 msgid "skip move/rename errors"
@@ -18132,7 +18209,7 @@
 
 #: builtin/mv.c:188
 msgid "can not move directory into itself"
-msgstr "no se pude mover un directorio en sí mismo"
+msgstr "no se puede mover un directorio en sí mismo"
 
 #: builtin/mv.c:191
 msgid "cannot move directory over file"
@@ -18144,7 +18221,7 @@
 
 #: builtin/mv.c:225
 msgid "not under version control"
-msgstr "no se encuentra bajo control de versión"
+msgstr "no se encuentra bajo control de versiones"
 
 #: builtin/mv.c:227
 msgid "conflicted"
@@ -18165,7 +18242,7 @@
 
 #: builtin/mv.c:244
 msgid "multiple sources for the same target"
-msgstr "múltiples fuentes para el mismo objetivo"
+msgstr "múltiples fuentes para el mismo destino"
 
 #: builtin/mv.c:246
 msgid "destination directory does not exist"
@@ -18184,7 +18261,7 @@
 #: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:667
 #, c-format
 msgid "renaming '%s' failed"
-msgstr "renombrando '%s' falló"
+msgstr "renombrar '%s' falló"
 
 #: builtin/name-rev.c:465
 msgid "git name-rev [<options>] <commit>..."
@@ -18204,7 +18281,7 @@
 
 #: builtin/name-rev.c:525
 msgid "only use tags to name the commits"
-msgstr "sólo usar tags para nombrar commits"
+msgstr "solo usar tags para nombrar commits"
 
 #: builtin/name-rev.c:527
 msgid "only use refs matching <pattern>"
@@ -18395,7 +18472,7 @@
 #: builtin/notes.c:268
 #, c-format
 msgid "cannot read note data from non-blob object '%s'."
-msgstr "no se puede leer la data de la nota de un objeto no-blob '%s'."
+msgstr "no se puede leer los datos de la nota de un objeto no blob '%s'."
 
 #: builtin/notes.c:309
 #, c-format
@@ -18437,7 +18514,7 @@
 
 #: builtin/notes.c:416 builtin/notes.c:582
 msgid "reuse and edit specified note object"
-msgstr "reutilizar y editar el objeto de nota especificada"
+msgstr "reutilizar y editar el objeto de nota especificado"
 
 #: builtin/notes.c:419 builtin/notes.c:585
 msgid "reuse specified note object"
@@ -18468,7 +18545,7 @@
 #: builtin/notes.c:475 builtin/notes.c:637 builtin/notes.c:902
 #, c-format
 msgid "Removing note for object %s\n"
-msgstr "Removiendo nota para objeto %s\n"
+msgstr "Quitando nota del objeto %s\n"
 
 #: builtin/notes.c:497
 msgid "read objects from stdin"
@@ -18480,7 +18557,7 @@
 
 #: builtin/notes.c:517
 msgid "too few arguments"
-msgstr "muy pocos argumentos"
+msgstr "demasiados pocos argumentos"
 
 #: builtin/notes.c:538
 #, c-format
@@ -18489,12 +18566,12 @@
 "existing notes"
 msgstr ""
 "No se puede copiar notas. Se encontró notas existentes para el objeto %s. "
-"Use '-f' para sobrescribir las notes existentes"
+"Use '-f' para sobrescribir las notas existentes"
 
 #: builtin/notes.c:550
 #, c-format
 msgid "missing notes on source object %s. Cannot copy."
-msgstr "faltan notas en la fuente del objeto %s. No se puede copiar."
+msgstr "faltan notas en el objeto de fuente %s. No se puede copiar."
 
 #: builtin/notes.c:603
 #, c-format
@@ -18535,7 +18612,7 @@
 
 #: builtin/notes.c:742
 msgid "failed to finalize notes merge"
-msgstr "falló al finalizar las notas de fusión"
+msgstr "falló al finalizar la fusión de notas"
 
 #: builtin/notes.c:768
 #, c-format
@@ -18555,7 +18632,7 @@
 "resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
 "cat_sort_uniq)"
 msgstr ""
-"resolver conflictos de notas usando la estrategia entregadas (manual/ours/"
+"resolver conflictos de notas usando la estrategia entregada (manual/ours/"
 "theirs/union/cat_sort_uniq)"
 
 #: builtin/notes.c:790
@@ -18569,19 +18646,19 @@
 
 #: builtin/notes.c:794
 msgid "Aborting notes merge resolution"
-msgstr "Abortando notas de resolución de fusión"
+msgstr "Abortando resolución de fusión de notas"
 
 #: builtin/notes.c:796
 msgid "abort notes merge"
-msgstr "abortar notas de fusión"
+msgstr "abortar fusión de notas"
 
 #: builtin/notes.c:807
 msgid "cannot mix --commit, --abort or -s/--strategy"
-msgstr "no se pueden mezclar --commit, --abort ó -s/--strategy"
+msgstr "no se pueden mezclar --commit, --abort o -s/--strategy"
 
 #: builtin/notes.c:812
 msgid "must specify a notes ref to merge"
-msgstr "debe especificar una ref de notas a fusionar"
+msgstr "se debe especificar una ref de notas a fusionar"
 
 #: builtin/notes.c:836
 #, c-format
@@ -18627,7 +18704,7 @@
 msgid "read object names from the standard input"
 msgstr "leer nombres de objetos de standard input"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "no eliminar, solo mostrar"
 
@@ -18643,26 +18720,26 @@
 msgid "use notes from <notes-ref>"
 msgstr "usar notas desde <referencia-de-notas>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "subcomando desconocido: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<opciones>...] [< <lista-de-ref> | < <lista-de-"
 "objetos>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<opciones>...] <nombre-base> [< <lista-de-refs> | < <lista-"
 "de-objetos>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18671,111 +18748,111 @@
 "write_reuse_object: no se pudo localizar %s, se esperaba en el "
 "desplazamiento %<PRIuMAX> en el paquete %s"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
-msgstr "mal paquete de objeto CRC para %s"
+msgstr "mal CRC del paquete de objeto para %s"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objeto empaquetado corrupto para %s"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
-msgstr "delta recursivo encontrado para objeto %s"
+msgstr "delta recursiva encontrada para objeto %s"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objetos ordenados, esperados %<PRIu32>"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "objeto esperado en el desplazamiento %<PRIuMAX> en el paquete %s"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "deshabilitando escritura bitmap, paquetes son divididos debido a pack."
 "packSizeLimit"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Escribiendo objetos"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "falló al iniciar %s"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objetos escritos mientras se esperaban %<PRIu32>"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "deshabilitando escritura bitmap, ya que algunos objetos no están siendo "
 "empaquetados"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
-msgstr "overflow de offset en la base de delta en paquete para %s"
+msgstr "overflow de offset de base de delta en paquete para %s"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
-msgstr "outbound de offset en la base de delta para %s"
+msgstr "offset de base de delta está fuera de límites para %s"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Contando objetos"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "incapaz de analizar header del objeto %s"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objeto %s no puede ser leído"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "objeto %s inconsistente con el largo del objeto (%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - fuera de memoria"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compresión delta usando hasta %d hilos"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "no es posible empaquetar objetos alcanzables desde tag %s"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Comprimiendo objetos"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "inconsistencia con la cuenta de delta"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18784,7 +18861,7 @@
 "valor para uploadpack.blobpackfileuri tiene que ser de la forma '<hash-de-"
 "objeto> <hash-de-pack> <uri>' (se tuvo '%s')"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18792,26 +18869,26 @@
 "objeto ya está configurado en otro uploadpack.blobpackfileuri (se obtuvo "
 "'%s')"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "no se puede obtener el tipo de objeto %s en pack %s"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "no se pudo encontrar pack '%s'"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
-"se espseraba ID de objeto al borde, se obtuvo basura:\n"
+"se esperaba ID de objeto al borde, se obtuvo basura:\n"
 "%s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18820,259 +18897,259 @@
 "se esperaba ID de objeto, se obtuvo basuta:\n"
 "%s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "valor inválido para --missing"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "no se puede abrir índice de paquetes"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
-msgstr "objeto perdido en %s no pudo ser examinado"
+msgstr "objeto suelto en %s no pudo ser examinado"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
-msgstr "incapaz de forzar un objeto perdido"
+msgstr "incapaz de forzar que el objecto se suelte"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "no es una rev '%s'"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mala revisión '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "incapaz de añadir objetos recientes"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "versión de índice no soportada %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mala versión del índice '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<versión>[,<offset>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "escribir el índice de paquete en la versión de formato idx especificado"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "tamaño máximo de cada paquete resultante"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorar objetos prestados de otros almacenes de objetos"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
-msgstr "ignorar objetos paquete"
+msgstr "ignorar objetos empaquetados"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "limitar ventana de paquete por objetos"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "limitar ventana de paquete por memoria en adición a límite de objetos"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "longitud máxima de cadena delta permitida en el paquete resultante"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "reusar deltas existentes"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "reutilizar objetos existentes"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "usar objetos OFS_DELTA"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "usar hilos cuando se busque para mejores concordancias de delta"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "no crear un paquete resultante vacío"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "leer argumentos de revisión de standard input"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
-msgstr "limitar los objetos a aquellos que no han sido empaquetados todavía"
+msgstr "limitar los objetos a aquellos que no hayan sido empaquetados todavía"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "incluir objetos alcanzables por cualquier referencia"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "incluir objetos referidos por entradas de reflog"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "incluir objetos referidos por el índice"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "leer packs de stdin"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "mostrar paquete en stdout"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
-msgstr "incluir objetos tag que refieren a objetos a ser empaquetados"
+msgstr "incluir objetos tag que refieran a objetos a ser empaquetados"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "mantener objetos inalcanzables"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "empaquetar objetos sueltos inalcanzables"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "desempaquetar objetos inalcanzables más nuevos que <tiempo>"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "usar el algoritmo sparse reachability"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "crear paquetes delgados"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "crear paquetes adecuados para fetches superficiales"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
-msgstr "ignorar paquetes que tienen un archivo .keep acompañante"
+msgstr "ignorar paquetes que tengan un archivo .keep acompañante"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "ignorar este paquete"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "nivel de compresión del paquete"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "no ocultar commits por injertos"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "usar un índice bitmap si está disponible para acelerar la cuenta de objetos"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "escribir un índice de bitmap junto al índice de paquete"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "escribir un índice de bitmap si es posible"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "manejo de objetos perdidos"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "no se puede empaquetar objetos en packfiles promisores"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "respetar islas durante la compresión delta"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "protocolo"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "excluyendo cualquier uploadpack.blobpackfileuri configurado con este "
 "protocolo"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
-msgstr "profundidad de cadena de delta %d es muy profunda, forzando %d"
+msgstr "profundidad de cadena de delta %d es demasiada profunda, forzando %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
-msgstr "pack.deltaCacheLimit es muy grande, forzando %d"
+msgstr "pack.deltaCacheLimit es demasiado grande, forzando %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size no puede ser usado para construir un paquete para "
 "transferencia"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "tamaño mínimo del paquete es 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin no puede ser usado para construir un paquete indexable"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable y --unpack-unreachable son incompatibles"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
-msgstr "no se puede usar--filter sin --stdout"
+msgstr "no se puede usar --filter sin --stdout"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
-msgstr "no se puede usar--filter con --stdin-packs"
+msgstr "no se puede usar --filter con --stdin-packs"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "no se puede usar un lista interna de rev con --stdin-packs"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Enumerando objetos"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 msgstr ""
-"Total %<PRIu32> (delta %<PRIu32>), reusado %<PRIu32> (delta %<PRIu32>), pack-"
-"reusado %<PRIu32>"
+"Total %<PRIu32> (delta %<PRIu32>), reusados %<PRIu32> (delta %<PRIu32>), "
+"pack-reusados %<PRIu32>"
 
 #: builtin/pack-redundant.c:601
 msgid ""
@@ -19083,7 +19160,7 @@
 "to <git@vger.kernel.org>.  Thanks.\n"
 msgstr ""
 "'git pack-redundant' está nominado para su eliminación.\n"
-"Si todavía usa este comando, agregue un extra\n"
+"Si todavía usa este comando, agregue una extra\n"
 "opción, '--i-still-use-this', en la línea de comando\n"
 "y háganos saber que todavía lo usa enviando un correo electrónico\n"
 "a <git@vger.kernel.org>. Gracias.\n"
@@ -19114,7 +19191,7 @@
 
 #: builtin/prune.c:136
 msgid "expire objects older than <time>"
-msgstr "expirar objetos más viejos a <tiempo>"
+msgstr "caducar objetos más viejos a <tiempo>"
 
 #: builtin/prune.c:138
 msgid "limit traversal to objects outside promisor packfiles"
@@ -19122,7 +19199,7 @@
 
 #: builtin/prune.c:152
 msgid "cannot prune in a precious-objects repo"
-msgstr "no se puede recortar en un repositorio de objetos-preciosos"
+msgstr "no se puede recortar en un repositorio de objetos preciosos"
 
 #: builtin/pull.c:45 builtin/pull.c:47
 #, c-format
@@ -19188,9 +19265,9 @@
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr ""
-"Generalmente esto significa que has proveído un wildcard de refspec que no "
+"Generalmente esto significa que has proveído un refspec de wildcard que no "
 "tiene\n"
-"concordancia en el final remoto."
+"concordancia en el lado remoto."
 
 #: builtin/pull.c:451
 #, c-format
@@ -19205,7 +19282,7 @@
 
 #: builtin/pull.c:456 builtin/rebase.c:1248
 msgid "You are not currently on a branch."
-msgstr "No te encuentras actualmente en la rama."
+msgstr "No te encuentras actualmente en una rama."
 
 #: builtin/pull.c:458 builtin/pull.c:473
 msgid "Please specify which branch you want to rebase against."
@@ -19236,7 +19313,7 @@
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
-"Si deseas configurar el rastreo de información para esta rama, puedes "
+"Si deseas configurar la información de rastreo para esta rama, puedes "
 "hacerlo con:"
 
 #: builtin/pull.c:485
@@ -19246,7 +19323,7 @@
 "from the remote, but no such ref was fetched."
 msgstr ""
 "Tu configuración especifica fusionar con la ref '%s'\n"
-"de tu remoto, pero no se pudo hacer fetch a esa ref."
+"del remoto, pero no se pudo hacer fetch a esa ref."
 
 #: builtin/pull.c:596
 #, c-format
@@ -19283,23 +19360,23 @@
 "\n"
 "Puedes reemplazar \"git config\" con \"git config --global\" para aplicar\n"
 "la preferencia en todos los repositorios. Puedes también pasar --rebase,\n"
-"--no-rebase, o --ff-only en el comando para sobreescribir la configuración\n"
+"--no-rebase, o --ff-only en el comando para sobrescribir la configuración\n"
 "por defecto en cada invocación.\n"
 "\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
-msgstr "Actualizando una rama no nata con cambios agregados al índice."
+msgstr "Actualizando una rama no nacida con cambios agregados al índice."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "pull con rebase"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "por favor realiza un commit o un stash con ellos."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19310,7 +19387,7 @@
 "realizando fast-forward al árbol de trabajo\n"
 "desde commit %s."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19321,21 +19398,21 @@
 "to recover."
 msgstr ""
 "No se puede realizar fast-forward en tu árbol de trabajo.\n"
-"Tras asegurarse que ha guardado todo lo preciado de la salida de\n"
+"Tras asegurarse que haya guardado todo lo preciado de la salida de\n"
 "$ git diff %s\n"
 ",ejecute\n"
 "$ git reset --hard\n"
 "para recuperar."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "No se puede fusionar múltiples ramas en un head vacío."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "No se puede rebasar en múltiples ramas."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "no se puede rebasar con modificaciones de submódulos grabadas localmente"
@@ -19343,7 +19420,7 @@
 #: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr ""
-"git push [<opciones>] [<repositorio> [<especificaciones-de-referencia>...]]"
+"git push [<opciones>] [<repositorio> [<especificación-de-referencia>...]]"
 
 #: builtin/push.c:111
 msgid "tag shorthand without <tag>"
@@ -19402,7 +19479,7 @@
 "\n"
 "\tgit push %s HEAD:<nombre-de-rama-remota>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19416,12 +19493,19 @@
 "\n"
 "\tgit push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "La rama actual %s tiene múltiples ramas upstream, rechazando el push."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"No se especificó ningún refspec para hacer push, y push.default es \"nothing"
+"\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19432,13 +19516,7 @@
 "la rama actual '%s', sin decirme qué poner en el push\n"
 "para actualizar en qué rama de remoto."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"No se especificó ningún refspecs para hacer push, y push.default es \"nada\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19450,7 +19528,7 @@
 "'git pull ...') antes de hacer push de nuevo.\n"
 "Mira 'Note about fast-forwards' en 'git push --help' para más detalles."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19463,7 +19541,7 @@
 "(ejem. 'git pull ...') antes de volver a hacer push.\n"
 "Vea las 'Notes about fast-forwards' en 'git push --help' para más detalles."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19475,134 +19553,133 @@
 "no existe localmente. Esto es causado usualmente por otro repositorio\n"
 "realizando push a la misma ref. Quizás quiera integrar primero los cambios\n"
 "remotos (ej. 'git pull ...') antes de volver a hacer push.\n"
-"Vea 'Notes about fast-forwards0 en 'git push --help' para detalles."
+"Vea 'Notes about fast-forwards' en 'git push --help' para detalles."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Actualizaciones fueron rechazadas porque el tag ya existe en el remoto."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
 "without using the '--force' option.\n"
 msgstr ""
-"No se puede actualizar un ref remoto que apunta a un objeto no-commit,\n"
-"o actualizar un ref remoto para hacer que  apunte a un objeto no-commit,\n"
+"No se puede actualizar un ref remoto que apunta a un objeto no commit,\n"
+"o actualizar un ref remoto para hacer que apunte a un objeto no commit,\n"
 "sin usar la opción '--force'.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
 "to integrate those changes locally (e.g., 'git pull ...')\n"
 "before forcing an update.\n"
 msgstr ""
-"Las actualizaciones se rechazaron porque la sugerencia del seguimiento "
-"remoto\n"
-"rama se ha actualizado desde la última vez que se realizó la compra. Es "
+"Las actualizaciones se rechazaron porque la punta de la rama de seguimiento\n"
+"remoto se ha actualizado desde la última vez que se realizó checkout. Es "
 "posible que desee\n"
-"para integrar esos cambios localmente (por ejemplo, 'git pull ...')\n"
+"integrar esos cambios localmente (por ejemplo, 'git pull ...')\n"
 "antes de forzar una actualización.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Haciendo push a %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "falló el push de algunas referencias a '%s'"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "repositorio"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "realizar push a todas las refs"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "realizar mirror a todas las refs"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "borrar refs"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "realizar push a tags (no puede ser usado con --all o --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "forzar actualizaciones"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<refname>:<expect>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
-msgstr "requiere haber valor viejo de ref en este valor"
+msgstr "requiere que el valor viejo de ref sea este valor"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "requieren que las actualizaciones remotas se integren localmente"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "controlar push recursivo de submódulos"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "usar empaquetado delgado"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
-msgstr "recibir programa de paquete"
+msgstr "programa de recepción de paquetes"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
-msgstr "configurar upstream para git pulll/status"
+msgstr "configurar upstream para git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
-msgstr "recortando refs eliminadas localmente"
+msgstr "recortar refs eliminadas localmente"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "hacer un bypass al hook pre-push"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "realizar push de tags faltantes pero relevantes"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "Firmar con GPG el push"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "solicitar transacción atómica en el lado remoto"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete es incompatible con --all, --mirror y --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete no tiene sentido sin ninguna referencia"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "mal repositorio '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19620,33 +19697,33 @@
 "\n"
 "    git remote add <nombre> <url>\n"
 "\n"
-"y luego haciendo push al nombre del remoto\n"
+"y luego hacer push al nombre del remoto\n"
 "\n"
 "    git push <nombre>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all y --tags son incompatibles"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all no puede ser combinada con refspecs"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror y --tags son incompatibles"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror no puede ser combinado con refspecs"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all y --mirror son incompatibles"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
-msgstr "opciones de push no pueden tener caracteres de línea nueva"
+msgstr "opciones de push no pueden tener carácteres de línea nueva"
 
 #: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
@@ -19724,11 +19801,11 @@
 
 #: builtin/read-tree.c:133
 msgid "3-way merge if no file level merging required"
-msgstr "fusión de 3-vías si no se requiere ninguna fusión a nivel de archivo"
+msgstr "fusión de 3 vías si no se requiere ninguna fusión a nivel de archivo"
 
 #: builtin/read-tree.c:135
 msgid "3-way merge in presence of adds and removes"
-msgstr "fusión en 3-vías en presencia de adiciones y remociones"
+msgstr "fusión de 3 vías en presencia de adiciones y eliminaciones"
 
 #: builtin/read-tree.c:137
 msgid "same as -m, but discard unmerged entries"
@@ -19764,11 +19841,11 @@
 
 #: builtin/read-tree.c:151
 msgid "skip applying sparse checkout filter"
-msgstr "saltar aplicado de filtro de sparse checkout"
+msgstr "saltar aplicación de filtro de sparse checkout"
 
 #: builtin/read-tree.c:153
 msgid "debug unpack-trees"
-msgstr "debug de árboles-desempacados"
+msgstr "debug unpack-trees"
 
 #: builtin/read-tree.c:157
 msgid "suppress feedback messages"
@@ -19824,7 +19901,7 @@
 
 #: builtin/rebase.c:494 builtin/rebase.c:1389
 msgid "keep commits which start empty"
-msgstr "mantener commits que comienzan con vacío"
+msgstr "mantener commits que comiencen con vacío"
 
 #: builtin/rebase.c:498 builtin/revert.c:128
 msgid "allow commits with empty messages"
@@ -19832,15 +19909,15 @@
 
 #: builtin/rebase.c:500
 msgid "rebase merge commits"
-msgstr "rebasando commits de fusión"
+msgstr "rebasar commits de fusión"
 
 #: builtin/rebase.c:502
 msgid "keep original branch points of cousins"
-msgstr "mantener puntos originales de la rama de sus primos"
+msgstr "mantener puntas de bifurcación originales de los primos"
 
 #: builtin/rebase.c:504
 msgid "move commits that begin with squash!/fixup!"
-msgstr "mover commits que comienzan con squash!/fixup!"
+msgstr "mover commits que comiencen con squash!/fixup!"
 
 #: builtin/rebase.c:505
 msgid "sign commits"
@@ -19880,7 +19957,7 @@
 
 #: builtin/rebase.c:523
 msgid "rearrange fixup/squash lines"
-msgstr "reorganizar líneas fixup/squash"
+msgstr "reordenar líneas fixup/squash"
 
 #: builtin/rebase.c:525
 msgid "insert exec commands in todo list"
@@ -19888,7 +19965,7 @@
 
 #: builtin/rebase.c:526
 msgid "onto"
-msgstr "hacia"
+msgstr "sobre"
 
 #: builtin/rebase.c:529
 msgid "restrict-revision"
@@ -19904,7 +19981,7 @@
 
 #: builtin/rebase.c:532
 msgid "squash onto"
-msgstr "squash hacia"
+msgstr "squash a"
 
 #: builtin/rebase.c:534
 msgid "the upstream commit"
@@ -19940,11 +20017,11 @@
 
 #: builtin/rebase.c:546
 msgid "onto-name"
-msgstr "hacia-nombre"
+msgstr "sobre-nombre"
 
 #: builtin/rebase.c:546
 msgid "onto name"
-msgstr "hacia nombre"
+msgstr "sobre nombre"
 
 #: builtin/rebase.c:547
 msgid "cmd"
@@ -20065,7 +20142,7 @@
 
 #: builtin/rebase.c:1319
 msgid "rebase onto given branch instead of upstream"
-msgstr "haciendo rebase hacia rama dada en lugar de upstream"
+msgstr "haciendo rebase sobre rama dada en lugar de upstream"
 
 #: builtin/rebase.c:1321
 msgid "use the merge-base of upstream and branch as the current base"
@@ -20077,7 +20154,7 @@
 
 #: builtin/rebase.c:1325
 msgid "be quiet. implies --no-stat"
-msgstr "ser silencioso implica --no-stat"
+msgstr "ser silencioso. implica --no-stat"
 
 #: builtin/rebase.c:1331
 msgid "do not show diffstat of what changed upstream"
@@ -20085,7 +20162,7 @@
 
 #: builtin/rebase.c:1334
 msgid "add a Signed-off-by trailer to each commit"
-msgstr "agregar una línea \"Firmado-por\" al mensaje de cada commit"
+msgstr "agregar una línea \"Signed-off-by\" al mensaje de cada commit"
 
 #: builtin/rebase.c:1337
 msgid "make committer date match author date"
@@ -20101,7 +20178,7 @@
 
 #: builtin/rebase.c:1343 builtin/rebase.c:1347
 msgid "passed to 'git apply'"
-msgstr "pasado a 'git-apply'"
+msgstr "pasado a 'git apply'"
 
 #: builtin/rebase.c:1345
 msgid "ignore changes in whitespace"
@@ -20157,19 +20234,19 @@
 
 #: builtin/rebase.c:1393
 msgid "move commits that begin with squash!/fixup! under -i"
-msgstr "mover commits que comienzan con squash!/fixup! bajo -i"
+msgstr "mover commits que comiencen con squash!/fixup! bajo -i"
 
 #: builtin/rebase.c:1400
 msgid "add exec lines after each commit of the editable list"
-msgstr "agregar líneas exec tras cada acommit de la lista editable"
+msgstr "agregar líneas exec tras cada commit de la lista editable"
 
 #: builtin/rebase.c:1404
 msgid "allow rebasing commits with empty messages"
-msgstr "permitir rebase commits con mensajes vacíos"
+msgstr "permitir rebase de commits con mensajes vacíos"
 
 #: builtin/rebase.c:1408
 msgid "try to rebase merges instead of skipping them"
-msgstr "intentar fusiones por rebase en lugar de saltarlas"
+msgstr "intentar rebase de fusiones en lugar de saltarlas"
 
 #: builtin/rebase.c:1411
 msgid "use 'merge-base --fork-point' to refine upstream"
@@ -20226,9 +20303,9 @@
 #: builtin/rebase.c:1501
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
-"La acción --edit-todo sólo puede ser usada al rebasar interactivamente."
+"La acción --edit-todo solo puede ser usada al rebasar interactivamente."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "No se puede leer el HEAD"
 
@@ -20336,8 +20413,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal: no existe la rama/commit: '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "No existe ref: %s"
@@ -20392,7 +20469,7 @@
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr ""
 "En primer lugar, rebobinando HEAD para después reproducir tus cambios encima "
-"de ésta...\n"
+"de esta...\n"
 
 #: builtin/rebase.c:2072
 msgid "Could not detach HEAD"
@@ -20407,7 +20484,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20440,7 +20517,7 @@
 "Para suprimir este mensaje y mantener el comportamiento predeterminado,\n"
 "configura 'receive.denyCurrentBranch' a 'refuse'."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20452,20 +20529,20 @@
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 "Por defecto, borrar la rama actual está prohibido, porque el siguiente\n"
-"'git clone' no resultara en ningún archivo revisado, causando confusión.\n"
+"'git clone' no resultará en ningún archivo revisado, causando confusión.\n"
 "\n"
 "Se puede configurar la variable 'receive.denyDeleteCurrent' a 'warn' o "
 "'ignore'\n"
-"en el repositorio remoto para permitir borrar la rama actual.\n"
+"en el repositorio remoto para permitir borrar la rama actual,\n"
 "con o sin mensaje de advertencia.\n"
 "\n"
 "Para suprimir este mensaje, puedes configurarlo en 'refuse'."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
-msgstr "tranquilo"
+msgstr "silencioso"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Se tiene que especificar un directorio."
 
@@ -20504,7 +20581,7 @@
 #: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
-msgstr "¡%s apunta a ningún lado!"
+msgstr "¡%s no apunta a ningún lado!"
 
 #: builtin/reflog.c:699
 msgid "no reflog specified to delete"
@@ -20639,7 +20716,7 @@
 
 #: builtin/remote.c:169
 msgid "or do not fetch any tag at all (--no-tags)"
-msgstr "o no realziar fetch a ningún tag (--no-tags)"
+msgstr "o no realizar fetch a ningún tag (--no-tags)"
 
 #: builtin/remote.c:171
 msgid "branch(es) to track"
@@ -20652,7 +20729,7 @@
 #: builtin/remote.c:174
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
-"configurar remote como mirror para realizar push o desde el cual realizar "
+"configurar remote como mirror al cual realizar push o desde el cual realizar "
 "fetch"
 
 #: builtin/remote.c:186
@@ -20676,7 +20753,7 @@
 #: builtin/remote.c:355
 #, c-format
 msgid "Could not get fetch map for refspec %s"
-msgstr "No se pudo realizar el fetch al mapa para refspec %s"
+msgstr "No se pudo obtener el mapa de fetch para refspec %s"
 
 #: builtin/remote.c:454 builtin/remote.c:462
 msgid "(matching)"
@@ -20719,19 +20796,19 @@
 "\t%s\n"
 "\tPlease update the configuration manually if necessary."
 msgstr ""
-"No se actualizan refspec de fetch no predeterminada\n"
+"No se actualiza refspec de fetch no predeterminada\n"
 "\t%s\n"
 "\tPor favor actualice la configuración manualmente si es necesario."
 
 #: builtin/remote.c:770
 #, c-format
 msgid "deleting '%s' failed"
-msgstr "borrando '%s' falló"
+msgstr "borrar '%s' falló"
 
 #: builtin/remote.c:804
 #, c-format
 msgid "creating '%s' failed"
-msgstr "creando '%s' falló"
+msgstr "crear '%s' falló"
 
 #: builtin/remote.c:882
 msgid ""
@@ -20764,7 +20841,7 @@
 
 #: builtin/remote.c:1004
 msgid " stale (use 'git remote prune' to remove)"
-msgstr " viejo ( use 'git remote prune' para eliminar)"
+msgstr " viejo (use 'git remote prune' para eliminar)"
 
 #: builtin/remote.c:1006
 msgid " ???"
@@ -20819,7 +20896,7 @@
 
 #: builtin/remote.c:1124
 msgid "fast-forwardable"
-msgstr "puede realizar fast-forward"
+msgstr "se puede realizar fast-forward"
 
 #: builtin/remote.c:1127
 msgid "local out of date"
@@ -20890,7 +20967,7 @@
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr ""
-"  HEAD en rama ( HEAD remoto es ambiguo, puede ser uno de los siguientes):\n"
+"  Rama HEAD (HEAD remoto es ambiguo, puede ser uno de los siguientes):\n"
 
 #: builtin/remote.c:1277
 #, c-format
@@ -20954,12 +21031,12 @@
 #: builtin/remote.c:1381
 #, c-format
 msgid " %s will become dangling!"
-msgstr " ¡%s será colgado!"
+msgstr " ¡%s se volverá colgante!"
 
 #: builtin/remote.c:1382
 #, c-format
 msgid " %s has become dangling!"
-msgstr " ¡%s ha sido colgado!"
+msgstr " ¡%s se ha vuelto colgante!"
 
 #: builtin/remote.c:1392
 #, c-format
@@ -20974,7 +21051,7 @@
 #: builtin/remote.c:1409
 #, c-format
 msgid " * [would prune] %s"
-msgstr " * [ejecutará prune] %s"
+msgstr " * [se acortará] %s"
 
 #: builtin/remote.c:1412
 #, c-format
@@ -21039,7 +21116,7 @@
 
 #: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
-msgstr "No borrará todos los URLs de no-push"
+msgstr "No borrará todos los URLs no de push"
 
 #: builtin/repack.c:26
 msgid "git repack [<options>]"
@@ -21050,7 +21127,7 @@
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
-"Re empaquetados incrementales son incompatibles con índices bitmap. Use\n"
+"Reempaquetados incrementales son incompatibles con índices bitmap. Use\n"
 "--no-write-bitmap-index o deshabilite la configuración pack.writebitmaps."
 
 #: builtin/repack.c:198
@@ -21060,7 +21137,8 @@
 #: builtin/repack.c:270 builtin/repack.c:630
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
-"repack: Esperando líneas de ID de objeto en full hex solo desde pack-objects."
+"repack: Esperando líneas de ID de objeto completas en hex solo desde pack-"
+"objects."
 
 #: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
@@ -21088,7 +21166,7 @@
 
 #: builtin/repack.c:462
 msgid "same as -a, and turn unreachable objects loose"
-msgstr "lo mismo que -a, y pierde objetos inaccesibles"
+msgstr "lo mismo que -a, y soltar objetos inalcanzables"
 
 #: builtin/repack.c:465
 msgid "remove redundant packs, and run git-prune-packed"
@@ -21120,7 +21198,7 @@
 
 #: builtin/repack.c:479
 msgid "approxidate"
-msgstr "aproxime"
+msgstr "approxidate"
 
 #: builtin/repack.c:480
 msgid "with -A, do not loosen objects older than this"
@@ -21128,11 +21206,11 @@
 
 #: builtin/repack.c:482
 msgid "with -a, repack unreachable objects"
-msgstr "con -a, re empaquetar objetos inalcanzables"
+msgstr "con -a, reempaquetar objetos inalcanzables"
 
 #: builtin/repack.c:484
 msgid "size of the window used for delta compression"
-msgstr "tamaño de la ventana usado para la compresión delta"
+msgstr "tamaño de la ventana usada para la compresión delta"
 
 #: builtin/repack.c:485 builtin/repack.c:491
 msgid "bytes"
@@ -21141,7 +21219,7 @@
 #: builtin/repack.c:486
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
-"lo mismo que arriba, pero limita el tamaño de memoria en lugar de contar "
+"lo mismo que arriba, pero limita el tamaño de memoria en lugar del número de "
 "entradas"
 
 #: builtin/repack.c:488
@@ -21158,7 +21236,7 @@
 
 #: builtin/repack.c:494
 msgid "repack objects in packs marked with .keep"
-msgstr "re-empaquetar objetos en paquetes marcados con .keep"
+msgstr "reempaquetar objetos en paquetes marcados con .keep"
 
 #: builtin/repack.c:496
 msgid "do not repack this pack"
@@ -21170,7 +21248,7 @@
 
 #: builtin/repack.c:508
 msgid "cannot delete packs in a precious-objects repo"
-msgstr "no se pueden borrar paquetes en un repositorio de objetos-preciosos"
+msgstr "no se pueden borrar paquetes en un repositorio de objetos preciosos"
 
 #: builtin/repack.c:512
 msgid "--keep-unreachable and -A are incompatible"
@@ -21196,7 +21274,7 @@
 
 #: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
-msgstr "git replace [-f] <objeto> <remplazo>"
+msgstr "git replace [-f] <objeto> <reemplazo>"
 
 #: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
@@ -21230,12 +21308,12 @@
 #: builtin/replace.c:125
 #, c-format
 msgid "replace ref '%s' not found"
-msgstr "rama de reemplazo '%s' no encontrada"
+msgstr "referencia de reemplazo '%s' no encontrada"
 
 #: builtin/replace.c:141
 #, c-format
 msgid "Deleted replace ref '%s'"
-msgstr "Borradas replace refs '%s'"
+msgstr "Borrada replace ref '%s'"
 
 #: builtin/replace.c:153
 #, c-format
@@ -21255,8 +21333,8 @@
 "while '%s' points to a replacement object of type '%s'."
 msgstr ""
 "Objeto debe ser del mismo tipo.\n"
-"'%s' puntos para un objeto reemplazado de tipo '%s'\n"
-"mientras '%s' puntos para un reemplazo de tipo de objeto '%s'."
+"'%s' apunta a un objeto reemplazado de tipo '%s'\n"
+"mientras '%s' apunta a un objeto de reemplazo de tipo '%s'."
 
 #: builtin/replace.c:229
 #, c-format
@@ -21291,7 +21369,7 @@
 #: builtin/replace.c:298
 #, c-format
 msgid "unable to fstat %s"
-msgstr "incapaz de correr fstat %s"
+msgstr "incapaz de ejecutar fstat %s"
 
 #: builtin/replace.c:303
 msgid "unable to write object to database"
@@ -21306,7 +21384,7 @@
 #: builtin/replace.c:326
 #, c-format
 msgid "unable to get object type for %s"
-msgstr "no es obtener tipo de objeto para %s"
+msgstr "no se puede obtener tipo de objeto para %s"
 
 #: builtin/replace.c:342
 msgid "editing object file failed"
@@ -21348,7 +21426,7 @@
 
 #: builtin/replace.c:470
 msgid "the signature will be removed in the replacement commit!"
-msgstr "la firma será eliminada en el commit de reemplazo!"
+msgstr "¡la firma será eliminada en el commit de reemplazo!"
 
 #: builtin/replace.c:480
 #, c-format
@@ -21363,7 +21441,7 @@
 #: builtin/replace.c:492
 #, c-format
 msgid "new commit is the same as the old one: '%s'"
-msgstr "nuevo commit es le mismo que el antiguo: '%s'"
+msgstr "nuevo commit es el mismo que el antiguo: '%s'"
 
 #: builtin/replace.c:527
 #, c-format
@@ -21388,7 +21466,7 @@
 
 #: builtin/replace.c:551
 msgid "change a commit's parents"
-msgstr "cambiar un padre de commit"
+msgstr "cambiar los padres de un commit"
 
 #: builtin/replace.c:552
 msgid "convert existing graft file"
@@ -21400,7 +21478,7 @@
 
 #: builtin/replace.c:555
 msgid "do not pretty-print contents for --edit"
-msgstr "no se puede imprimir contenidos para --edit"
+msgstr "no imprimir bonitamente los contenidos para --edit"
 
 #: builtin/replace.c:556
 msgid "use this format"
@@ -21446,15 +21524,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget <ruta>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "registrar resoluciones limpias en el índice"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "'git rerere forget' sin rutas está deprecado"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "no es posible generar diff para '%s'"
@@ -21505,7 +21583,7 @@
 
 #: builtin/reset.c:85
 msgid "Failed to find tree of HEAD."
-msgstr "Falló al encontrar el HEAD del árbol."
+msgstr "Falló al encontrar el árbol de HEAD."
 
 #: builtin/reset.c:91
 #, c-format
@@ -21520,7 +21598,7 @@
 #: builtin/reset.c:195
 #, c-format
 msgid "Cannot do a %s reset in the middle of a merge."
-msgstr "No se puede realziar un reset %s  en medio de una fusión."
+msgstr "No se puede realizar un reset %s en medio de una fusión."
 
 #: builtin/reset.c:295 builtin/stash.c:589 builtin/stash.c:663
 #: builtin/stash.c:687
@@ -21529,7 +21607,7 @@
 
 #: builtin/reset.c:297
 msgid "reset HEAD and index"
-msgstr "reiniciar HEAD e index"
+msgstr "reiniciar HEAD e índice"
 
 #: builtin/reset.c:298
 msgid "reset only HEAD"
@@ -21545,8 +21623,7 @@
 
 #: builtin/reset.c:310
 msgid "record only the fact that removed paths will be added later"
-msgstr ""
-"grabar solo el hecho de que las rutas eliminadas serán agregadas después"
+msgstr "grabar solo el hecho de que las rutas eliminadas serán agregadas luego"
 
 #: builtin/reset.c:344
 #, c-format
@@ -21579,7 +21656,7 @@
 
 #: builtin/reset.c:392
 msgid "-N can only be used with --mixed"
-msgstr "-N sólo puede ser usada con --mixed"
+msgstr "-N solo puede ser usada con --mixed"
 
 #: builtin/reset.c:413
 msgid "Unstaged changes after reset:"
@@ -21608,19 +21685,19 @@
 msgid "Could not write new index file."
 msgstr "No se puede escribir un nuevo archivo índice."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "no se puede combinar --exclude-promisor-objects y --missing"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
-msgstr "filtrado de objetos requiere --objects"
+msgstr "filtración de objetos requiere --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list no soporta mostrar notas"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "conteo de marcas es incompatible con --objects"
 
@@ -21634,11 +21711,23 @@
 
 #: builtin/rev-parse.c:416
 msgid "stop parsing after the first non-option argument"
-msgstr "detener análisis tras el primer argumento que no es opción"
+msgstr "detener análisis tras el primer argumento que no sea opción"
 
 #: builtin/rev-parse.c:419
 msgid "output in stuck long form"
-msgstr "salida en formulario largo de atasco"
+msgstr "salida en forma larga ajuntada"
+
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "fin de input prematuro"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "no se ha entregado cadena antes del separador`--'"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Se necesitó una revisión singular"
 
 #: builtin/rev-parse.c:552
 msgid ""
@@ -21655,6 +21744,50 @@
 "Ejecute \"git rev-parse --parseopt -h\" para más información sobre el primer "
 "uso."
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir requiere un argumento"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "no es un gitdir '%s'"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path requiere un argumento"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n requiere un argumento"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format requiere un argumento"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "argumento inválido para --path-format: %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default requiere un argumento"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix requiere un argumento"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "modo desconocido para --abbrev-ref: %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "modo desconocidopara --show-object-format: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<opciones>] <commit-ish>..."
@@ -21756,7 +21889,7 @@
 "el siguiente archivo tiene contenido en stage diferente al archivo\n"
 "y a HEAD:"
 msgstr[1] ""
-"los siguientes archivos tienen contenido diferente a los mismos\n"
+"los siguientes archivos tienen contenido en stage diferente a los mismos\n"
 "y a HEAD:"
 
 #: builtin/rm.c:213
@@ -21789,7 +21922,7 @@
 
 #: builtin/rm.c:244
 msgid "do not list removed files"
-msgstr "no listar archivos eliminado"
+msgstr "no listar archivos eliminados"
 
 #: builtin/rm.c:245
 msgid "only remove from the index"
@@ -21797,7 +21930,7 @@
 
 #: builtin/rm.c:246
 msgid "override the up-to-date check"
-msgstr "sobrescribir el check de actualizado"
+msgstr "salta el check de actualización"
 
 #: builtin/rm.c:247
 msgid "allow recursive removal"
@@ -21809,13 +21942,13 @@
 
 #: builtin/rm.c:283
 msgid "No pathspec was given. Which files should I remove?"
-msgstr "Se entregó un nuevo pathspec. ¿Qué archivos debería eliminar?"
+msgstr "No se entregó un pathspec. ¿Qué archivos se deberían eliminar?"
 
 #: builtin/rm.c:310
 msgid "please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
-"por favor agrega el stage de tus cambios a .gitmodules o realiza un stash "
-"para proceder"
+"por favor agrega tus cambios a .gitmodules al stage o realiza un stash para "
+"proceder"
 
 #: builtin/rm.c:331
 #, c-format
@@ -21857,11 +21990,11 @@
 
 #: builtin/shortlog.c:16
 msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
-msgstr "git shortlog [<opciones>] [<rango-de-revisión>] [[--] <ruta>...]"
+msgstr "git shortlog [<opciones>] [<rango-de-revisiones>] [[--] <ruta>...]"
 
 #: builtin/shortlog.c:17
 msgid "git log --pretty=short | git shortlog [<options>]"
-msgstr "git log --pretty=short | git shorlog [<opciones>]"
+msgstr "git log --pretty=short | git shortlog [<opciones>]"
 
 #: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
@@ -21869,7 +22002,7 @@
 
 #: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
-msgstr "el uso de --group = trailer con stdin no es compatible"
+msgstr "el uso de --group=trailer con stdin no es compatible"
 
 #: builtin/shortlog.c:323
 #, c-format
@@ -21898,7 +22031,7 @@
 
 #: builtin/shortlog.c:360
 msgid "linewrap output"
-msgstr "salida de línea"
+msgstr "ajustar las líneas de salida"
 
 #: builtin/shortlog.c:362
 msgid "field"
@@ -21950,7 +22083,7 @@
 
 #: builtin/show-branch.c:649
 msgid "color '*!+-' corresponding to the branch"
-msgstr "color '*!+-' correspondiendo a la rama"
+msgstr "colorear '*!+-' correspondiendo a la rama"
 
 #: builtin/show-branch.c:651
 msgid "show <n> more commits after the common ancestor"
@@ -21986,11 +22119,11 @@
 
 #: builtin/show-branch.c:667
 msgid "show only commits not on the first branch"
-msgstr "mostrar solo commits que no están en la primera rama"
+msgstr "mostrar solo commits que no estén en la primera rama"
 
 #: builtin/show-branch.c:669
 msgid "show merges reachable from only one tip"
-msgstr "mostrar fusiones alcanzables solo por una punta"
+msgstr "mostrar fusiones alcanzables por solo una punta"
 
 #: builtin/show-branch.c:671
 msgid "topologically sort, maintaining date order where possible"
@@ -22049,7 +22182,7 @@
 
 #: builtin/show-index.c:21
 msgid "hash-algorithm"
-msgstr "algoritmo-hash"
+msgstr "algoritmo hash"
 
 #: builtin/show-index.c:31
 msgid "Unknown hash algorithm"
@@ -22085,11 +22218,11 @@
 
 #: builtin/show-ref.c:171
 msgid "dereference tags into object IDs"
-msgstr "tags de deferencia en IDs de objeto"
+msgstr "desreferenciar tags a IDs de objeto"
 
 #: builtin/show-ref.c:173
 msgid "only show SHA1 hash using <n> digits"
-msgstr "solo mostrar hash SHA1 usando <n> dígitos"
+msgstr "solo mostrar hash SHA1 usando <n> cifras"
 
 #: builtin/show-ref.c:177
 msgid "do not print results to stdout (useful with --verify)"
@@ -22097,7 +22230,7 @@
 
 #: builtin/show-ref.c:179
 msgid "show refs from stdin that aren't in local repository"
-msgstr "mostrar refs de stdin que no están en el repositorio local"
+msgstr "mostrar refs de stdin que no estén en el repositorio local"
 
 #: builtin/sparse-checkout.c:22
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
@@ -22110,7 +22243,7 @@
 #: builtin/sparse-checkout.c:72
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
-"este árbol de trabajo no tiene sparse (archivo sparese-checkout tal vez no "
+"este árbol de trabajo no es sparse (archivo sparse-checkout tal vez no "
 "existe)"
 
 #: builtin/sparse-checkout.c:227
@@ -22148,37 +22281,37 @@
 msgid "failed to open '%s'"
 msgstr "falló al abrir '%s'"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "no se pudo normalizar la ruta %s"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <patrones>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
-msgstr "no es posible dequote para la cadena de estilo C '%s'"
+msgstr "no es posible dequote la cadena de estilo C '%s'"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "no se pudo cargar patrones de sparse-checkout existentes"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "leer patrones de standard in"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "error al refrescar directorio de trabajo"
 
@@ -22200,11 +22333,7 @@
 
 #: builtin/stash.c:28 builtin/stash.c:65
 msgid "git stash branch <branchname> [<stash>]"
-msgstr "git stash branch <nombre-rama> [<stash>]"
-
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
+msgstr "git stash branch <nombre-de-rama> [<stash>]"
 
 #: builtin/stash.c:30
 msgid ""
@@ -22251,7 +22380,7 @@
 #: builtin/stash.c:130
 #, c-format
 msgid "'%s' is not a stash-like commit"
-msgstr "'%s' no es un commit estilo stash"
+msgstr "'%s' no es un commit de estilo stash"
 
 #: builtin/stash.c:150
 #, c-format
@@ -22278,8 +22407,8 @@
 "            %s -> %s\n"
 "         to make room.\n"
 msgstr ""
-"ADVERTENCIA: Archivo sin seguimiento en forma de archivo con seguimiento. "
-"Renombrar\n"
+"ADVERTENCIA: Archivo sin seguimiento en el camino de archivo con "
+"seguimiento. Renombrando\n"
 "             %s ->%s\n"
 "          Para hacer espacio.\n"
 
@@ -22290,7 +22419,7 @@
 #: builtin/stash.c:503
 #, c-format
 msgid "could not generate diff %s^!."
-msgstr "no se pudo generar diff %s^!."
+msgstr "¡no se pudo generar diff %s^!."
 
 #: builtin/stash.c:510
 msgid "conflicts in index. Try without --index."
@@ -22298,11 +22427,11 @@
 
 #: builtin/stash.c:516
 msgid "could not save index tree"
-msgstr "no se puede guardar el índice del árbol"
+msgstr "no se pudo guardar el árbol de índice"
 
 #: builtin/stash.c:525
 msgid "could not restore untracked files from stash"
-msgstr "no se pueden restaurar archivos no rastreados de la entrada stash"
+msgstr "no se pudo restaurar archivos no rastreados de la entrada stash"
 
 #: builtin/stash.c:539
 #, c-format
@@ -22315,12 +22444,12 @@
 
 #: builtin/stash.c:591 builtin/stash.c:689
 msgid "attempt to recreate the index"
-msgstr "intento de recrear el index"
+msgstr "intento de recrear el índice"
 
 #: builtin/stash.c:635
 #, c-format
 msgid "Dropped %s (%s)"
-msgstr "Botado %s (%s)"
+msgstr "Descartado %s (%s)"
 
 #: builtin/stash.c:638
 #, c-format
@@ -22356,98 +22485,98 @@
 msgid "only show untracked files in the stash"
 msgstr "solo mostrar archivos no rastreados en el stash"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "No se puede actualizar %s con %s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "mensaje de stash"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" requiere un argumento <commit>"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Sin cambios seleccionados"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Aún no tienes un commit inicial"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "No se puede guardar el estado actual del índice"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "No se pueden guardar los archivos no rastreados"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "No se puede guardar el estado actual del árbol de trabajo"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "No se puede grabar el estado del árbol de trabajo"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "No se puede usar --patch y --include-untracked o --all al mismo tiempo"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "¿Olvidaste 'git add'?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "No hay cambios locales para guardar"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "No se puede inicializar stash"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "No se puede guardar el estado actual"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
-msgstr "Directorio de trabajo guardado y estado de índice %s"
+msgstr "Directorio de trabajo y estado de índice %s guardados"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "No se pueden eliminar cambios del árbol de trabajo"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "mantener index"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "stash en modo patch"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "modo tranquilo"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "incluir archivos sin seguimiento en stash"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "incluir archivos ignorados"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
 msgstr ""
-"el soporte para stash.useBuiltin ha sido eliminado!\n"
+"¡el soporte para stash.useBuiltin ha sido eliminado!\n"
 "Vea su entrada en 'git help config' para detalles."
 
 #: builtin/stripspace.c:18
@@ -22461,79 +22590,80 @@
 #: builtin/stripspace.c:37
 msgid "skip and remove all lines starting with comment character"
 msgstr ""
-"saltar y borrar todas las líneas que comienzan con un carácter de comentario"
+"saltar y borrar todas las líneas que comiencen con un carácter de comentario"
 
 #: builtin/stripspace.c:40
 msgid "prepend comment character and space to each line"
 msgstr "anteponer carácter de comentario y espacio a cada línea"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Se esperaba un nombre de ref completo, se obtuvo %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
-msgstr "subomdule--helper print-default-remote no toma argumentos"
+msgstr "submodule--helper print-default-remote no toma argumentos"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "no se puede quitar un componente del url '%s'"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "ancho alternativo para rutas relativas"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "No se encontró url para la ruta del submódulo '%s' en .gitmodules"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Entrando '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
 "."
 msgstr ""
-"run_command devolvió estado no-cero para %s\n"
+"run_command devolvió estado no cero para %s\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
 "submodules of %s\n"
 "."
 msgstr ""
-"run_command devolvió estado no-cero mientras cursaba en los submódulos "
+"run_command devolvió estado no cero mientras cursaba en los submódulos "
 "anidados de %s\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
-msgstr "suprime la salida al inicializar cada comando de submódulo"
+msgstr "suprime la salida de inicializar cada comando de submódulo"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "recursar en submódulos anidados"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <comando>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -22542,57 +22672,57 @@
 "no se pudo encontrar configuración '%s'. Asumiendo que este repositorio es "
 "su propio upstream autoritativo."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Falló al registrar el url para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) registrado para ruta '%s'\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 "peligro: modo de actualización de comandos sugerido para el submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Error al registrar el modo de actualización para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
-msgstr "suprime la salida para inicializar un submódulo"
+msgstr "suprime la salida de inicializar un submódulo"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<opciones>] [<path>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 "no se ha encontrado mapeo de submódulos en .gitmodules para la ruta '%s'"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
-msgstr "no pudo resolver ref de HEAD dentro del submódulo '%s'"
+msgstr "no se pudo resolver ref de HEAD dentro del submódulo '%s'"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "falló al recursar en el submódulo '%s'"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
-msgstr "suprimir output del estado del submódulo"
+msgstr "suprimir salida del estado del submódulo"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -22600,157 +22730,157 @@
 "usar el commit guardado en el índice en lugar del guardado en el submódulo "
 "HEAD"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<ruta>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <ruta>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodule)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodule)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "no se pudo realizar hash del objeto '%s'"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "modo %o inesperado\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr ""
 "usar el commit guardado en el índice en lugar del guardado en el submódulo "
 "HEAD"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
 msgstr ""
 "usar el commit guardado en el índice para comparar con el guardado en el "
 "submódulo HEAD"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "omitir submódulos con el valor 'ignore_config' establecido en 'all'"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "limitar el tamaño de resumen"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "no se puede obtener la revisión para HEAD"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached y --files son mutuamente exclusivos"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Sincronizando url del submódulo para '%s'\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "falló al registrar el url para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "error al conseguir el remoto por defecto para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "error al actualizar el remoto para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
-msgstr "suprime la salida del url del submódulo que se sincroniza"
+msgstr "suprime la salida de sincronizar el url del submódulo"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<ruta>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
 msgstr ""
-"El árbol de trabajo del submódulo '%s' contiene un directorio .git (use 'rm -"
+"El árbol de trabajo de submódulo '%s' contiene un directorio .git (use 'rm -"
 "rf' si realmente quieres eliminarlo incluyendo todo en su historia)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr ""
-"El árbol de trabajo del submódulo '%s' contiene modificaciones locales; usa "
-"'-f' para descartarlas"
+"El árbol de trabajo de submódulo '%s' contiene modificaciones locales; usa '-"
+"f' para descartarlas"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Directorio '%s' limpiado\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
-msgstr "No se pudo eliminar el árbol de trabajo del submódulo '%s'\n"
+msgstr "No se pudo eliminar el árbol de trabajo de submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "no se pudo crear directorio vacío de submódulo %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) no registrado para ruta '%s'\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
-"remover árboles de trabajo de submódulos incluso si contienen cambios locales"
+"quitar árboles de trabajo de submódulos incluso si contienen cambios locales"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "quitar todos los submódulos"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<ruta>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
-msgstr "Usa '--all' si realmente quieres des-inicializar todos los submódulos"
+msgstr "Usa '--all' si realmente quieres desinicializar todos los submódulos"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22764,46 +22894,67 @@
 "con\n"
 "'--reference-if-able' en lugar de '--reference'."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "submódulo '%s' no puede agregar alterno: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Valor '%s' para submodule.alternateErrorStrategy no es reconocido"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Valor '%s' para submodule.alternateLocation no es reconocido"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "rechazando crear/usar '%s' en el directorio de git de otro submódulo"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "clonación de '%s' en la ruta de submódulo '%s' falló"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "directorio no está vacío: '%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "no se pudo obtener el directorio de submódulo para '%s'"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "a donde el nuevo submódulo será clonado"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "nombre del nuevo submódulo"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "url de dónde clonar el submódulo"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "profundidad para clones superficiales"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
-msgstr "forzar el proceso de clonado"
+msgstr "forzar el proceso de clonación"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "no permitir clonar en directorios no vacíos"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -22813,104 +22964,83 @@
 "<repositorio>] [--name <nombre>] [--depth <profundidad>] [--single-branch] --"
 "url <url> --path <ruta>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "rechazando crear/usar '%s' en el directorio de git de otro submódulo"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "clon de '%s' en la ruta de submódulo '%s' falló"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "directorio no está vacío: '%s'"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "no se pudo obtener el directorio de submódulo para '%s'"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Modo de actualización inválido '%s' para ruta de submódulo '%s'"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Modo de actualización inválido '%s' configurado para ruta de submódulo '%s'"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Ruta de submódulo '%s' no inicializada"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "¿Tal vez quieres usar 'update --init'?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Saltando submódulo %s no fusionado"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Saltando submódulo '%s'"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Falló al clonar '%s'. Reintento programado"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Falló al clonar '%s' una segunda vez, abortando"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
-msgstr "ruta hacia el árbol de trabajo"
+msgstr "ruta al árbol de trabajo"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
-msgstr ""
-"ruta hacia el árbol de trabajo, a través de extremos de submódulos anidados"
+msgstr "ruta al árbol de trabajo, a través de fronteras de submódulos anidados"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout o none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
-msgstr "crea un clon superficial truncado al número especificado de revisión"
+msgstr "crea un clon superficial truncado al número especificado de revisiones"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
-msgstr "trabajos paralelos"
+msgstr "tareas paralelas"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
-msgstr "si el clon inicial debe seguir la recomendación superficial"
+msgstr "si el clon inicial debe seguir la recomendación de superficialidad"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
-msgstr "no mostrar el progreso de clonado"
+msgstr "no mostrar el progreso de clonación"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "mal valor para parámetro update"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22919,85 +23049,144 @@
 "Rama de submódulo (%s) configurada para heredar rama del superproyecto, pero "
 "el superproyecto no está en ninguna rama"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
-msgstr "no se pudo conseguir un handle para el submódulo '%s'"
+msgstr "no se pudo conseguir un handle de repositorio para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "recurrir a submódulos"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<opciones>] [<path>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
-msgstr "revisar is es seguro escribir el archivo .gitmodules"
+msgstr "revisar si es seguro escribir al archivo .gitmodules"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
-msgstr "desconfigura la opción en elarchivo .gitmodules"
+msgstr "desconfigura la opción en el archivo .gitmodules"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <nombre> [<valor>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <nombre>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
-"por favor asegúrate que el archivo .gitmodules está en el árbol de trabajo"
+"por favor asegúrate que el archivo .gitmodules esté en el árbol de trabajo"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
-msgstr "suprime la salida para inicializar la url de un submódulo"
+msgstr "suprime la salida de inicializar la url de un submódulo"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <ruta> <nueva url>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "configurar la rama de rastreo por defecto a master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "configurar la rama de rastreo por defecto"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <ruta>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <rama> <ruta>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
-msgstr "--branch o --default requeridos"
+msgstr "--branch o --default requerido"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch y --default son mutuamente exclusivos"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Agregando el repositorio existente en '%s' al índice\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' ya existe y no es un repositorio git válido"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr ""
+"Se encontró localmente un directorio git para '%s' con el(los) remoto(s):"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Si quiere reusar este directorio git local en lugar de clonar nuevamente de\n"
+"  %s\n"
+"usa la opción '--force'. Si el directorio git local no es el repositorio "
+"correcto\n"
+"o no estás seguro de lo que esto significa, escoge otro nombre con la opción "
+"'--name'.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Reactivando directorio git local para el submódulo '%s'.\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "no es posible hacer checkout al submódulo '%s'"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "la rama del repositorio para hacer checkout durante clonado"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "permitir agregar una ruta de submódulo sino ignorada"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <ruta> --"
+"name <nombre>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s no soporta --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' no es un comando submodule--helper válido"
@@ -23119,7 +23308,7 @@
 
 #: builtin/tag.c:328
 msgid "no tag message?"
-msgstr "¿Sin mensaje de tag?"
+msgstr "¿sin mensaje de tag?"
 
 #: builtin/tag.c:335
 #, c-format
@@ -23184,23 +23373,23 @@
 
 #: builtin/tag.c:469 builtin/tag.c:471
 msgid "print only tags that contain the commit"
-msgstr "mostrar solo tags que contienen el commit"
+msgstr "mostrar solo tags que contengan el commit"
 
 #: builtin/tag.c:470 builtin/tag.c:472
 msgid "print only tags that don't contain the commit"
-msgstr "mostrar solo tags que no contienen el commit"
+msgstr "mostrar solo tags que no contengan el commit"
 
 #: builtin/tag.c:473
 msgid "print only tags that are merged"
-msgstr "sólo imprimir las tags que están fusionadas"
+msgstr "solo imprimir las tags que estén fusionadas"
 
 #: builtin/tag.c:474
 msgid "print only tags that are not merged"
-msgstr "sólo imprimir las tags que no están fusionadas"
+msgstr "solo imprimir las tags que no estén fusionadas"
 
 #: builtin/tag.c:478
 msgid "print only tags of the object"
-msgstr "sólo imprimir tags de el objeto"
+msgstr "solo imprimir tags del objeto"
 
 #: builtin/tag.c:526
 msgid "--column and -n are incompatible"
@@ -23224,11 +23413,11 @@
 
 #: builtin/tag.c:556
 msgid "--merged and --no-merged options are only allowed in list mode"
-msgstr "opciones --merged y --no-merged  solo están permitidas en modo lista"
+msgstr "opciones --merged y --no-merged solo están permitidas en modo lista"
 
 #: builtin/tag.c:567
 msgid "only one -F or -m option is allowed."
-msgstr "sólo se permite una de las opciones, -m ó -F."
+msgstr "solo se permite una de las opciones, -m o -F."
 
 #: builtin/tag.c:592
 #, c-format
@@ -23312,7 +23501,7 @@
 #: builtin/update-index.c:976
 msgid "continue refresh even when index needs update"
 msgstr ""
-"continuar refresh (Actualización) incluso cuando el índice necesita "
+"continuar refresh (refrescamiento) incluso cuando el índice necesita "
 "actualización"
 
 #: builtin/update-index.c:979
@@ -23325,11 +23514,11 @@
 
 #: builtin/update-index.c:984
 msgid "let files replace directories and vice-versa"
-msgstr "permitir que archivos remplacen directorios y vice-versa"
+msgstr "permitir que archivos remplacen directorios y viceversa"
 
 #: builtin/update-index.c:986
 msgid "notice files missing from worktree"
-msgstr "avisar de archivos faltando en el árbol de trabajo"
+msgstr "avisar de archivos faltando del árbol de trabajo"
 
 #: builtin/update-index.c:988
 msgid "refresh even if index contains unmerged entries"
@@ -23337,7 +23526,7 @@
 
 #: builtin/update-index.c:991
 msgid "refresh stat information"
-msgstr "refresh información de estado"
+msgstr "refrescar información de estado"
 
 #: builtin/update-index.c:995
 msgid "like --refresh, but ignore assume-unchanged setting"
@@ -23387,7 +23576,7 @@
 
 #: builtin/update-index.c:1030
 msgid "read list of paths to be updated from standard input"
-msgstr "leer la lista de rutas para ser actualizada desde standard input"
+msgstr "leer la lista de rutas que actualizar desde standard input"
 
 #: builtin/update-index.c:1034
 msgid "add entries from standard input to the index"
@@ -23399,7 +23588,7 @@
 
 #: builtin/update-index.c:1042
 msgid "only update entries that differ from HEAD"
-msgstr "solo actualizar entradas que difieren de HEAD"
+msgstr "solo actualizar entradas que difieran de HEAD"
 
 #: builtin/update-index.c:1046
 msgid "ignore files missing from worktree"
@@ -23411,7 +23600,7 @@
 
 #: builtin/update-index.c:1051
 msgid "(for porcelains) forget saved unresolved conflicts"
-msgstr "(para porcelanas) olvidar conflictos sin resolver guardados"
+msgstr "(para porcelanas) olvidar conflictos guardados sin resolución"
 
 #: builtin/update-index.c:1055
 msgid "write index in this format"
@@ -23454,15 +23643,15 @@
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
 msgstr ""
-"core.splitIndex está configurado en false; remuévelo o cámbialo, si "
-"realmente quieres habilitar el índice partido"
+"core.splitIndex está configurado en false; quítalo o cámbialo, si realmente "
+"quieres habilitar el índice partido"
 
 #: builtin/update-index.c:1184
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
 msgstr ""
-"core.splitIndex está configurado en true; remuévelo o cámbialo, si realmente "
+"core.splitIndex está configurado en true; quítalo o cámbialo, si realmente "
 "quieres deshabilitar el índice partido"
 
 #: builtin/update-index.c:1196
@@ -23470,7 +23659,7 @@
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
 msgstr ""
-"core.untrackedCache está configurado en true; remuévelo o cámbialo, si "
+"core.untrackedCache está configurado en true; quítalo o cámbialo, si "
 "realmente quieres deshabilitar el chaché no rastreado"
 
 #: builtin/update-index.c:1200
@@ -23482,7 +23671,7 @@
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
 msgstr ""
-"core.untrackedCache está configurado en false; remuévelo o cámbialo, si "
+"core.untrackedCache está configurado en false; quítalo o cámbialo, si "
 "realmente quieres habilitar el caché no rastreado"
 
 #: builtin/update-index.c:1212
@@ -23504,7 +23693,7 @@
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
-"core.fsmonitor está configurado; remuévelo si realmente quieres deshabilitar "
+"core.fsmonitor está configurado; quítalo si realmente quieres deshabilitar "
 "el fsmonitor"
 
 #: builtin/update-index.c:1231
@@ -23531,7 +23720,7 @@
 
 #: builtin/update-ref.c:502
 msgid "update <refname> not the one it points to"
-msgstr "actualiza <refname> no a lo que apunta"
+msgstr "actualiza <refname> no la a que apunta"
 
 #: builtin/update-ref.c:503
 msgid "stdin has NUL-terminated arguments"
@@ -23555,7 +23744,7 @@
 
 #: builtin/upload-pack.c:23 t/helper/test-serve-v2.c:17
 msgid "quit after a single request/response exchange"
-msgstr "sale después de un intercambio petición/respuesta único"
+msgstr "sale después de un solo intercambio petición/respuesta"
 
 #: builtin/upload-pack.c:25
 msgid "exit immediately after initial ref advertisement"
@@ -23629,7 +23818,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <ruta>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "falló al borrar '%s'"
@@ -23639,25 +23828,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "Eliminando %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "reporta árboles de trabajo recortados"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
-msgstr "expirar árboles de trabajo más viejos a <tiempo>"
+msgstr "caducar árboles de trabajo más viejos a <tiempo>"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' ya existe"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "destino de worktree inutilizable '%s'"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23667,7 +23856,7 @@
 "usa '%s -f -f' para sobreescribir, o 'unlock' y 'prune' o 'remove' para "
 "limpiar"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23676,27 +23865,31 @@
 "'%s' es un árbol de trabajo faltante pero ya registrado;\n"
 "usa '%s -f' para sobreescribir, o 'prune' o 'remove' para limpiar"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "no se pudo crear directorio de '%s'"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "inicializando"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Preparando árbol de trabajo (nueva rama '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Preparando árbol de trabajo (reiniciando rama '%s'; estaba en %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Preparando árbol de trabajo (haciendo checkout a '%s')"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Preparando árbol de trabajo (HEAD desacoplado %s)"
@@ -23704,7 +23897,7 @@
 #: builtin/worktree.c:482
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
-"hacer checkout a <rama> incluso si ya ha hecho checkout en otro árbol de "
+"hacer checkout a <rama> incluso si ya hay checkout de ella en otro árbol de "
 "trabajo"
 
 #: builtin/worktree.c:485
@@ -23723,159 +23916,168 @@
 msgid "keep the new working tree locked"
 msgstr "mantener el nuevo árbol de trabajo bloqueado"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "razón para bloquear"
+
+#: builtin/worktree.c:495
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "configurando modo tracking (mirar git-branch(1))"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:498
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 "intentar emparejar el nuevo nombre de rama con una rama de rastreo remoto"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:506
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B, y --detach son mutuamente exclusivas"
 
-#: builtin/worktree.c:565
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason requiere --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "agregado con --lock"
+
+#: builtin/worktree.c:574
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track solo puede ser usado si una nueva rama es creada"
 
-#: builtin/worktree.c:682
+#: builtin/worktree.c:691
 msgid "show extended annotations and reasons, if available"
 msgstr "mostrar anotaciones ampliadas y motivos, si están disponibles"
 
-#: builtin/worktree.c:684
+#: builtin/worktree.c:693
 msgid "add 'prunable' annotation to worktrees older than <time>"
 msgstr ""
 "agregue la anotación 'podable' a los árboles de trabajo anteriores a <tiempo>"
 
-#: builtin/worktree.c:693
+#: builtin/worktree.c:702
 msgid "--verbose and --porcelain are mutually exclusive"
 msgstr "--verbose and --porcelain son mutuamente exclusivas"
 
-#: builtin/worktree.c:720
-msgid "reason for locking"
-msgstr "razón para bloquear"
-
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' no es un árbol de trabajo"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "El árbol de trabajo principal no puede ser bloqueado ni desbloqueado"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ya está bloqueado; razón: %s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ya está bloqueado"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' no está bloqueado"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
-"árboles de trabajo conteniendo submódulos no puede ser movidos o eliminado"
+"árboles de trabajo conteniendo submódulos no pueden ser movidos o eliminados"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "forzar move incluso si el árbol de trabajo está sucio o bloqueado"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' es un árbol de trabajo principal"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "no se pudo descubrir el nombre de destino de '%s'"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 "no se puede mover un árbol de trabajo bloqueado, motivo del bloqueo: %s\n"
-"use 'move -f -f' para sobreescribir o desbloquear primero"
+"use 'move -f -f' para forzar o desbloquear primero"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 "no se puede mover un árbol de trabajo bloqueado;\n"
-"use 'move -f -f' para sobreescribir o desbloquear primero"
+"use 'move -f -f' para forzar o desbloquear primero"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "falló validación, no se puede mover el árbol de trabajo: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "falló al mover '%s' a '%s'"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "falló al ejecutar 'git status' en '%s'"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
-"'%s' contiene archivos no rastreados o modificados, use --force para borrarlo"
+"'%s' contiene archivos modificados o no rastreados, use --force para borrarlo"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "no se pudo ejecutar 'git status' en '%s', código %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
-msgstr "forzar remoción incluso si el árbol de trabajo está sucio o bloqueado"
+msgstr ""
+"forzar eliminación incluso si el árbol de trabajo está sucio o bloqueado"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
-"no se pueden eliminar árbol de trabajo bloqueado, razón del bloqueo: %s\n"
-"use 'remove -f -f' para sobreescribir o desbloquear primero"
+"no se puede eliminar árbol de trabajo bloqueado, razón del bloqueo: %s\n"
+"use 'remove -f -f' para forzar o desbloquear primero"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 "no se pueden eliminar árbol de trabajo bloqueado;\n"
-"use 'remove -f -f' para sobreescribir o desbloquear primero"
+"use 'remove -f -f' para forzar o desbloquear primero"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "falló validación, no se puede eliminar árbol de trabajo: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "reparar: %s: %s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "error: %s: %s"
@@ -23890,11 +24092,11 @@
 
 #: builtin/write-tree.c:29
 msgid "write tree object for a subdirectory <prefix>"
-msgstr "escribir objeto de  árbol para un subdirectorio <prefijo>"
+msgstr "escribir objeto de árbol para un subdirectorio <prefijo>"
 
 #: builtin/write-tree.c:31
 msgid "only useful for debugging"
-msgstr "sólo útil para depurar"
+msgstr "solo útil para depurar"
 
 #: git.c:28
 msgid ""
@@ -23970,7 +24172,7 @@
 #: git.c:375
 #, c-format
 msgid "while expanding alias '%s': '%s'"
-msgstr "al expandir el alias '%s':'%s'"
+msgstr "al expandir el alias '%s': '%s'"
 
 #: git.c:384
 #, c-format
@@ -24187,7 +24389,7 @@
 #: http.c:399
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
-msgstr "valor negativo para http.postbuffer; poniendo el default a %d"
+msgstr "valor negativo para http.postbuffer; poniendo el default %d"
 
 #: http.c:420
 msgid "Delegation control is not supported with cURL < 7.22.0"
@@ -24222,16 +24424,16 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "No se pudo configurar backend SSL para '%s': ya configurado"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
 "  asked for: %s\n"
 "   redirect: %s"
 msgstr ""
-"no puede actualizar la base de url de la redirección:\n"
+"no se puede actualizar la base de url de la redirección:\n"
 "  preguntaba por: %s\n"
-"   redireccionamiento: %s"
+"   redirección: %s"
 
 #: remote-curl.c:183
 #, c-format
@@ -24267,103 +24469,103 @@
 #: remote-curl.c:507
 #, c-format
 msgid "unable to access '%s': %s"
-msgstr "no es posible acceder '%s':%s"
+msgstr "no es posible acceder a '%s': %s"
 
 #: remote-curl.c:513
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirigiendo a %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
-msgstr "no debería tener EOF cuando no es gentil en EOF"
+msgstr "no se debería tener EOF cuando no es laxo con EOF"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "el servidor remoto envió un separador sin estado (stateless)"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "el servidor remoto envió una respuesta de fin de paquete inesperada"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
-"no es posible rebobinar rpc post data - intenta incrementando http.postBuffer"
-
-#: remote-curl.c:754
-#, c-format
-msgid "remote-curl: bad line length character: %.4s"
-msgstr "remote-curl: mal caracter de largo de línea: %.4s"
+"no es posible rebobinar rpc post data - intenta incrementar http.postBuffer"
 
 #: remote-curl.c:756
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: mal carácter de largo de línea: %.4s"
+
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: packet de respuesta final inesperado"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC falló; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "no se puede manejar pushes tan grandes"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "no se puede desinflar el request; zlib deflate error %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "no se puede desinflar el request; zlib end error %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "%d bytes de header de longitud fueron recibidos"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "%d bytes de cuerpo se siguen esperando"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "dump http transport no soporta capacidades superficiales"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "fetch falló."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "no se puede hacer fetch por sha1 sobre smart http"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "error de protocolo: se esperaba sha/ref, se obtuvo '%s'"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http transport no soporta %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push falló"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: uso: git remote-curl <remote> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
-msgstr "remote-curl: error leyendo command stream de git"
+msgstr "remote-curl: error al leer command stream de git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: fetch intentado sin un repositorio local"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: comando '%s' desconocido de git"
@@ -24386,7 +24588,7 @@
 
 #: parse-options.h:184
 msgid "expiry-date"
-msgstr "fecha de expiración"
+msgstr "fecha de caducidad"
 
 #: parse-options.h:198
 msgid "no-op (backward compatibility)"
@@ -24398,11 +24600,11 @@
 
 #: parse-options.h:312
 msgid "be more quiet"
-msgstr "ser más discreto"
+msgstr "ser más callado"
 
 #: parse-options.h:318
 msgid "use <n> digits to display object names"
-msgstr "use <n> dígitos para mostrar los nombres de los objetos"
+msgstr "use <n> cifras para mostrar los nombres de los objetos"
 
 #: parse-options.h:337
 msgid "how to strip spaces and #comments from message"
@@ -24435,7 +24637,7 @@
 
 #: command-list.h:50
 msgid "Add file contents to the index"
-msgstr "Agrega contenido de carpetas al índice"
+msgstr "Agrega contenido de archivos al índice"
 
 #: command-list.h:51
 msgid "Apply a series of patches from a mailbox"
@@ -24447,7 +24649,7 @@
 
 #: command-list.h:53
 msgid "Apply a patch to files and/or to the index"
-msgstr "Aplicar un parche a archivos y/o  el índice"
+msgstr "Aplicar un parche a archivos y/o al índice"
 
 #: command-list.h:54
 msgid "Import a GNU Arch repository into Git"
@@ -24455,7 +24657,7 @@
 
 #: command-list.h:55
 msgid "Create an archive of files from a named tree"
-msgstr "Crear un archivo o archivos de un árbol nombrado"
+msgstr "Crear una crónica de archivos de un árbol nombrado"
 
 #: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
@@ -24476,12 +24678,13 @@
 
 #: command-list.h:60
 msgid "Move objects and refs by archive"
-msgstr "Mover objetos y referencias por archivo"
+msgstr "Mover objetos y referencias por crónica"
 
 #: command-list.h:61
 msgid "Provide content or type and size information for repository objects"
 msgstr ""
-"Proveer contenido o tipo y tamaño de información para objetos de repositorio"
+"Proveer contenido o información de tipo y tamaño de los objetos de "
+"repositorio"
 
 #: command-list.h:62
 msgid "Display gitattributes information"
@@ -24489,15 +24692,16 @@
 
 #: command-list.h:63
 msgid "Debug gitignore / exclude files"
-msgstr "Debug a gitignore / excluir archivos"
+msgstr "Debug a gitignore / archivos de exclusión"
 
 #: command-list.h:64
 msgid "Show canonical names and email addresses of contacts"
-msgstr "Mostrar nombres canónicos y direcciones de correo de contactos"
+msgstr ""
+"Mostrar nombres canónicos y direcciones de correo electrónico de contactos"
 
 #: command-list.h:65
 msgid "Switch branches or restore working tree files"
-msgstr "Cambia ramas o restaura los archivos de tu árbol de trabajo"
+msgstr "Cambia de rama o restaura archivos del árbol de trabajo"
 
 #: command-list.h:66
 msgid "Copy files from the index to the working tree"
@@ -24509,7 +24713,7 @@
 
 #: command-list.h:68
 msgid "Find commits yet to be applied to upstream"
-msgstr "Encuentra commits que faltan aplicar en upstream"
+msgstr "Encuentra commits que falten aplicar en upstream"
 
 #: command-list.h:69
 msgid "Apply the changes introduced by some existing commits"
@@ -24521,7 +24725,7 @@
 
 #: command-list.h:71
 msgid "Remove untracked files from the working tree"
-msgstr "Remueve archivos del árbol de trabajo no rastreados"
+msgstr "Quitar archivos no rastreados del árbol de trabajo"
 
 #: command-list.h:72
 msgid "Clone a repository into a new directory"
@@ -24533,11 +24737,11 @@
 
 #: command-list.h:74
 msgid "Record changes to the repository"
-msgstr "Graba los cambios en tu repositorio"
+msgstr "Graba los cambios al repositorio"
 
 #: command-list.h:75
 msgid "Write and verify Git commit-graph files"
-msgstr "Escribe y verifica los archivos de Git commit-graph"
+msgstr "Escribe y verifica los archivos commit-graph de Git"
 
 #: command-list.h:76
 msgid "Create a new commit object"
@@ -24557,7 +24761,7 @@
 
 #: command-list.h:80
 msgid "Helper to temporarily store passwords in memory"
-msgstr "Auxiliar para almacenar temporalmente claves en memoria"
+msgstr "Auxiliar para almacenar temporalmente contraseñas en memoria"
 
 #: command-list.h:81
 msgid "Helper to store credentials on disk"
@@ -24573,7 +24777,7 @@
 
 #: command-list.h:84
 msgid "A CVS server emulator for Git"
-msgstr "Un servidor emulador de CVS para Git"
+msgstr "Un emulador de servidor de CVS para Git"
 
 #: command-list.h:85
 msgid "A really simple server for Git repositories"
@@ -24629,7 +24833,7 @@
 
 #: command-list.h:97
 msgid "Produce a merge commit message"
-msgstr "Produce un mensaje de commit para fusión"
+msgstr "Produce un mensaje de commit de fusión"
 
 #: command-list.h:98
 msgid "Output information on each ref"
@@ -24654,11 +24858,11 @@
 
 #: command-list.h:103
 msgid "Extract commit ID from an archive created using git-archive"
-msgstr "Extrae el ID de commit de un archivo creado usando git-archive"
+msgstr "Extrae el ID de commit de una crónica creada usando git-archive"
 
 #: command-list.h:104
 msgid "Print lines matching a pattern"
-msgstr "Imprime las líneas que concuerdan con el patron"
+msgstr "Imprime las líneas que concuerden con el patrón"
 
 #: command-list.h:105
 msgid "A portable graphical interface to Git"
@@ -24670,7 +24874,7 @@
 
 #: command-list.h:107
 msgid "Display help information about Git"
-msgstr "Mostrar información sobre Git"
+msgstr "Mostrar información de ayuda sobre Git"
 
 #: command-list.h:108
 msgid "Server side implementation of Git over HTTP"
@@ -24690,7 +24894,7 @@
 
 #: command-list.h:112
 msgid "Build pack index file for an existing packed archive"
-msgstr "Constuye un archivo de índice para un archivo empaquetado existente"
+msgstr "Construye un archivo de índice para una crónica empaquetada existente"
 
 #: command-list.h:113
 msgid "Create an empty Git repository or reinitialize an existing one"
@@ -24698,7 +24902,7 @@
 
 #: command-list.h:114
 msgid "Instantly browse your working repository in gitweb"
-msgstr "Buscar instantáneamente tu repositorio de trabajo en gitweb"
+msgstr "Navegar instantáneamente tu repositorio de trabajo en gitweb"
 
 #: command-list.h:115
 msgid "Add or parse structured information in commit messages"
@@ -24714,7 +24918,7 @@
 
 #: command-list.h:118
 msgid "Show information about files in the index and the working tree"
-msgstr "Muestra información sobre archivos in el índice y el árbol de trabajo"
+msgstr "Muestra información sobre archivos en el índice y el árbol de trabajo"
 
 #: command-list.h:119
 msgid "List references in a remote repository"
@@ -24742,7 +24946,7 @@
 
 #: command-list.h:125
 msgid "Find as good common ancestors as possible for a merge"
-msgstr "Encuentra un ancestro común bueno para una posible fusión"
+msgstr "Encuentra ancestros tan buenos como posible para una fusión"
 
 #: command-list.h:126
 msgid "Run a three-way file merge"
@@ -24750,7 +24954,7 @@
 
 #: command-list.h:127
 msgid "Run a merge for files needing merging"
-msgstr "Ejecuta una fusión para archivos que la necesitan"
+msgstr "Ejecuta una fusión para archivos que la necesiten"
 
 #: command-list.h:128
 msgid "The standard helper program to use with git-merge-index"
@@ -24788,7 +24992,7 @@
 
 #: command-list.h:136
 msgid "Add or inspect object notes"
-msgstr "Agrega o inspecciona objetos nota"
+msgstr "Agrega o inspecciona notas de objeto"
 
 #: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
@@ -24796,11 +25000,11 @@
 
 #: command-list.h:138
 msgid "Create a packed archive of objects"
-msgstr "Crea un archivo de objetos empaquetados"
+msgstr "Crea una crónica de objetos empaquetada"
 
 #: command-list.h:139
 msgid "Find redundant pack files"
-msgstr "Encuentra archivos empaquetados de manera redundante"
+msgstr "Encuentra archivos de paquete redundantes"
 
 #: command-list.h:140
 msgid "Pack heads and tags for efficient repository access"
@@ -24816,7 +25020,7 @@
 
 #: command-list.h:143
 msgid "Remove extra objects that are already in pack files"
-msgstr "Remover objetos extra que ya están en archivos empaquetados"
+msgstr "Quitar objetos extras que ya estén en archivos empaquetados"
 
 #: command-list.h:144
 msgid "Fetch from and integrate with another repository or a local branch"
@@ -24836,7 +25040,7 @@
 
 #: command-list.h:148
 msgid "Reads tree information into the index"
-msgstr "Lee información del ábol en el índice"
+msgstr "Lee información del árbol al índice"
 
 #: command-list.h:149
 msgid "Reapply commits on top of another base tip"
@@ -24872,11 +25076,11 @@
 
 #: command-list.h:157
 msgid "Reset current HEAD to the specified state"
-msgstr "Reinicia el HEAD actual a un estado especifico"
+msgstr "Reinicia el HEAD actual a un estado específico"
 
 #: command-list.h:158
 msgid "Restore working tree files"
-msgstr "Restaurar archivos de árboles de trabajo"
+msgstr "Restaurar archivos del árbol de trabajo"
 
 #: command-list.h:159
 msgid "Revert some existing commits"
@@ -24908,7 +25112,7 @@
 
 #: command-list.h:166
 msgid "Summarize 'git log' output"
-msgstr "Resumir la salida 'git log'"
+msgstr "Resumir la salida de 'git log'"
 
 #: command-list.h:167
 msgid "Show various types of objects"
@@ -24920,7 +25124,7 @@
 
 #: command-list.h:169
 msgid "Show packed archive index"
-msgstr "Mostrar el índice de archivo empaquetado"
+msgstr "Mostrar el índice de crónica empaquetado"
 
 #: command-list.h:170
 msgid "List references in a local repository"
@@ -24932,7 +25136,7 @@
 
 #: command-list.h:172
 msgid "Common Git shell script setup code"
-msgstr "Código de configuración de script de shell común de Git"
+msgstr "Código común de configuración de script de shell de Git"
 
 #: command-list.h:173
 msgid "Initialize and modify the sparse-checkout"
@@ -24940,9 +25144,7 @@
 
 #: command-list.h:174
 msgid "Stash the changes in a dirty working directory away"
-msgstr ""
-"Poner en un stash los cambios en un directorio de trabajo sucio de todas "
-"maneras"
+msgstr "Poner en un stash los cambios en un directorio de trabajo sucio"
 
 #: command-list.h:175
 msgid "Add file contents to the staging area"
@@ -24974,7 +25176,7 @@
 
 #: command-list.h:182
 msgid "Create, list, delete or verify a tag object signed with GPG"
-msgstr "Crea, lista, borra o verifica un tag de objeto firmado con GPG"
+msgstr "Crea, lista, borra o verifica un objeto de tag firmado con GPG"
 
 #: command-list.h:183
 msgid "Creates a temporary file with a blob's contents"
@@ -24982,7 +25184,7 @@
 
 #: command-list.h:184
 msgid "Unpack objects from a packed archive"
-msgstr "Desempaqueta objetos de un archivo empaquetado"
+msgstr "Desempaqueta objetos de una crónica empaquetada"
 
 #: command-list.h:185
 msgid "Register file contents in the working tree to the index"
@@ -25001,7 +25203,7 @@
 
 #: command-list.h:188
 msgid "Send archive back to git-archive"
-msgstr "Enviar archivo a git-archive"
+msgstr "Enviar crónica de vuelta a git-archive"
 
 #: command-list.h:189
 msgid "Send objects packed back to git-fetch-pack"
@@ -25017,7 +25219,7 @@
 
 #: command-list.h:192
 msgid "Validate packed Git archive files"
-msgstr "Valida archivos Git empaquetados"
+msgstr "Valida crónicas Git empaquetadas"
 
 #: command-list.h:193
 msgid "Check the GPG signature of tags"
@@ -25041,7 +25243,7 @@
 
 #: command-list.h:198
 msgid "Defining attributes per path"
-msgstr "Definiendo atributos por ruta"
+msgstr "Definir atributos por ruta"
 
 #: command-list.h:199
 msgid "Git command-line interface and conventions"
@@ -25057,7 +25259,7 @@
 
 #: command-list.h:202
 msgid "Git for CVS users"
-msgstr "Git para usuarios CVS"
+msgstr "Git para usuarios de CVS"
 
 #: command-list.h:203
 msgid "Tweaking diff output"
@@ -25065,7 +25267,7 @@
 
 #: command-list.h:204
 msgid "A useful minimum set of commands for Everyday Git"
-msgstr "Un conjunto mínimo útil de comandos diarios de Git"
+msgstr "Un conjunto mínimo útil de comandos cotidianos de Git"
 
 #: command-list.h:205
 msgid "Frequently asked questions about using Git"
@@ -25091,7 +25293,7 @@
 
 #: command-list.h:210
 msgid "Defining submodule properties"
-msgstr "Definiendo las propiedades del submódulo"
+msgstr "Definir las propiedades de submódulo"
 
 #: command-list.h:211
 msgid "Git namespaces"
@@ -25174,7 +25376,7 @@
 
 #: git-merge-octopus.sh:62
 msgid "Should not be doing an octopus."
-msgstr "No debería hacer un pulpo."
+msgstr "No se debería hacer un pulpo."
 
 #: git-merge-octopus.sh:73
 #, sh-format
@@ -25203,7 +25405,7 @@
 #: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
-"La ruta relativa sólo se puede usar desde el nivel superior del árbol de "
+"La ruta relativa solo se puede usar desde el nivel superior del árbol de "
 "trabajo"
 
 #: git-submodule.sh:189
@@ -25226,144 +25428,99 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' no tiene un commit checked out"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "Agregando el repositorio existente en '$sm_path' al índice"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' ya existe y no es un repositorio git válido"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-"Se encontró localmente un directorio git para '$sm_name' con el(los) "
-"remoto(s):"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Si quiere reusar este directorio git local en lugar de clonar nuevamente de\n"
-"  $realrepo\n"
-"usa la opción '--force'. Si el directorio git local no es el repositorio "
-"correcto\n"
-"o no estás seguro de lo que esto significa, escoge otro nombre con la opción "
-"'--name'."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "Reactivar directorio git local para el submódulo '$sm_name'."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "No es posible hacer checkout al submódulo '$sm_path'"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Falló al agregar el submódulo '$sm_path'"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Falló al registrar el submódulo '$sm_path'"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "No se pudo encontrar la revisión actual en la ruta de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "No es posible realizar fetch en la ruta de submódulo '$sm_path'"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr ""
 "No es posible encontrar revisión actual ${remote_name}/${branch} en la ruta "
-"de submódulo  '$sm_path'"
+"de submódulo '$sm_path'"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr ""
 "No es posible realizar fetch en la ruta de submódulo '$displaypath'; "
-"intentando hacer un fetch directo $sha1:"
+"intentando hacer un fetch directo de $sha1:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr ""
-"Fetch realizado en ruta de submódulo '$displaypath', pero no contenía $sha1. "
-"Fetch directo del commit falló."
+"Fetch realizado en la ruta de submódulo '$displaypath', pero no contenía "
+"$sha1. Fetch directo del commit falló."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "No es posible revisar '$sha1' en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': check out realizado a '$sha1'"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
-"No se posible ejecutar rebase a '$sha1' en la ruta de submódulo "
+"No es posible ejecutar rebase a '$sha1' en la ruta de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
-msgstr "Ruta de submódulo '$displaypath': rebasada en '$sha1'"
+msgstr "Ruta de submódulo '$displaypath': rebasado a '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Incapaz de fusionar '$sha1' en la ruta del submódulo '$displaypath'"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
-msgstr "Ruta de submódulo '$displaypath': fusionada en '$sha1'"
+msgstr "Ruta de submódulo '$displaypath': fusionado en '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
-"Falló la ejecución  de  '$command $sha1' en la ruta de submódulo "
-"'$displaypath'"
+"Falló la ejecución de '$command $sha1' en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Ruta de submódulo '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falló al recurrir en la ruta de submódulo '$displaypath'"
@@ -25421,7 +25578,7 @@
 "s, squash <commit> = usar commit, pero fusionarlo en el commit previo\n"
 "f, fixup <commit> = como \"squash\", pero descarta el mensaje del log de "
 "este commit\n"
-"x, exec <commit> = ejecuta comando ( el resto de la línea) usando un shell\n"
+"x, exec <commit> = ejecuta comando (el resto de la línea) usando un shell\n"
 "d, drop <commit> = eliminar commit\n"
 "l, label <label> = poner label al HEAD actual con un nombre\n"
 "t, reset <label> = reiniciar HEAD al label\n"
@@ -25484,12 +25641,12 @@
 #: git-rebase--preserve-merges.sh:421
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
-msgstr "Rehusando a ejecutar squash en fusión: $sha1"
+msgstr "Rehusando ejecutar squash en fusión: $sha1"
 
 #: git-rebase--preserve-merges.sh:439
 #, sh-format
 msgid "Error redoing merge $sha1"
-msgstr "Error rehaciendo fusión $sha1"
+msgstr "Error al rehacer fusión $sha1"
 
 #: git-rebase--preserve-merges.sh:448
 #, sh-format
@@ -25526,7 +25683,7 @@
 #: git-rebase--preserve-merges.sh:572
 #, sh-format
 msgid "Could not apply $sha1... $rest"
-msgstr "No se puede aplicar $sha1... $rest"
+msgstr "No se pudo aplicar $sha1... $rest"
 
 #: git-rebase--preserve-merges.sh:601
 #, sh-format
@@ -25647,7 +25804,7 @@
 #: git-rebase--preserve-merges.sh:824
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
-"Error tratando de encontrar la identidad del autor para remediar el commit"
+"Error al tratar de encontrar la identidad del autor para remediar el commit"
 
 #: git-rebase--preserve-merges.sh:829
 msgid ""
@@ -25696,7 +25853,7 @@
 
 #: git-rebase--preserve-merges.sh:987 git-rebase--preserve-merges.sh:992
 msgid "Could not init rewritten commits"
-msgstr "No se puede inicializar los commits reescritos"
+msgstr "No se pudo inicializar los commits reescritos"
 
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
@@ -25785,7 +25942,7 @@
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado\n"
+"Si el parche aplica limpiamente, el fragmento editado será marcado\n"
 "inmediatamente para el área de stage."
 
 #: git-add--interactive.perl:1059
@@ -25793,15 +25950,15 @@
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado\n"
-"inmediatamente para aplicar stash."
+"Si el parche aplica limpiamente, el fragmento editado será marcado\n"
+"inmediatamente para hacer stash."
 
 #: git-add--interactive.perl:1062
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr ""
-"Si el parche aplica limpiamente, el hunk editado será marcado\n"
+"Si el parche aplica limpiamente, el fragmento editado será marcado\n"
 "inmediatamente para sacar del área de stage."
 
 #: git-add--interactive.perl:1065 git-add--interactive.perl:1074
@@ -25810,7 +25967,7 @@
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr ""
-"Si el parche aplica de forma limpia, el hunk editado será marcado\n"
+"Si el parche aplica de forma limpia, el fragmento editado será marcado\n"
 "inmediatamente para aplicar."
 
 #: git-add--interactive.perl:1068 git-add--interactive.perl:1071
@@ -25819,13 +25976,13 @@
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr ""
-"Si el parche aplica de forma limpia, el hunk editado será marcado\n"
+"Si el parche aplica de forma limpia, el fragmento editado será marcado\n"
 "inmediatamente para descarte."
 
 #: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
-msgstr "falló al abrir el archivo de adición del hunk para escritura: %s"
+msgstr "falló al abrir el archivo de adición del fragmento para escritura: %s"
 
 #: git-add--interactive.perl:1121
 #, perl-format
@@ -25836,14 +25993,14 @@
 "Lines starting with %s will be removed.\n"
 msgstr ""
 "---\n"
-"Para eliminar '%s' líneas, haga de ellas líneas  ' '  (contexto).\n"
+"Para eliminar '%s' líneas, haga de ellas líneas ' ' (contexto).\n"
 "Para eliminar '%s' líneas, bórrelas.\n"
-"Lineas comenzando con  %s serán eliminadas.\n"
+"Líneas comenzando con %s serán eliminadas.\n"
 
 #: git-add--interactive.perl:1143
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
-msgstr "falló al abrir el archivo de edición del hunk para lectura: %s"
+msgstr "falló al abrir el archivo de edición del fragmento para lectura: %s"
 
 #: git-add--interactive.perl:1251
 msgid ""
@@ -25853,11 +26010,11 @@
 "a - stage this hunk and all later hunks in the file\n"
 "d - do not stage this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar stage a este hunk\n"
-"n - no aplicar stage a este hunk\n"
-"q - quit; no aplicar stage a este hunk ni ninguno de los restantes\n"
-"a - aplicar stage a este hunk y a todos los posteriores en el archivo\n"
-"d - no aplicar stage a este hunk ni a ninguno de los posteriores en este "
+"y - aplicar stage a este fragmento\n"
+"n - no aplicar stage a este fragmento\n"
+"q - quit; no aplicar stage a este fragmento ni ninguno de los restantes\n"
+"a - aplicar stage a este fragmento y a todos los posteriores en el archivo\n"
+"d - no aplicar stage a este fragmento ni a ninguno de los posteriores en este "
 "archivo"
 
 #: git-add--interactive.perl:1257
@@ -25868,11 +26025,11 @@
 "a - stash this hunk and all later hunks in the file\n"
 "d - do not stash this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar stash a este hunk\n"
-"n - no aplicar stash a este hunk\n"
-"q - quit; no aplicar stash a este hunk o a ninguno de los restantes\n"
-"a - aplicar stash a este hunk y a todos los posteriores en el archivo\n"
-"d - no aplicar stash a este hunk ni ninguno de los posteriores en el archivo"
+"y - hacer stash a este fragmento\n"
+"n - no hacer stash a este fragmento\n"
+"q - quit; no hacer stash a este fragmento ni a ninguno de los restantes\n"
+"a - hacer stash a este fragmento y a todos los posteriores en el archivo\n"
+"d - no hacer stash a este fragmento ni ninguno de los posteriores en el archivo"
 
 #: git-add--interactive.perl:1263
 msgid ""
@@ -25882,11 +26039,11 @@
 "a - unstage this hunk and all later hunks in the file\n"
 "d - do not unstage this hunk or any of the later hunks in the file"
 msgstr ""
-"y - sacar desde hunk del área de stage\n"
-"n - no sacar este hunk del area de stage\n"
-"q - quit; no sacar del area de stage este hunk ni ninguno de los restantes\n"
-"a - sacar del area de stage este hunk y todos los posteriores en el archivo\n"
-"d - no sacar del area de stage este hunk ni ninguno de los posteriores en el "
+"y - sacar este fragmento del área de stage\n"
+"n - no sacar este fragmento del area de stage\n"
+"q - quit; no sacar del area de stage este fragmento ni ninguno de los restantes\n"
+"a - sacar del area de stage este fragmento y todos los posteriores en el archivo\n"
+"d - no sacar del area de stage este fragmento ni ninguno de los posteriores en el "
 "archivo"
 
 #: git-add--interactive.perl:1269
@@ -25897,11 +26054,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este hunk al índice\n"
-"n - no aplicar este hunk al índice\n"
-"q - quit; no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunk ni ninguno de los posteriores en el archivo"
+"y - aplicar este fragmento al índice\n"
+"n - no aplicar este fragmento al índice\n"
+"q - quit; no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los posteriores en el archivo"
 
 #: git-add--interactive.perl:1275 git-add--interactive.perl:1293
 msgid ""
@@ -25911,11 +26068,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
-"y - descartar este hunk del árbol de trabajo\n"
-"n - no descartar este hunk del árbol de trabajo\n"
-"q - quit; no descartar este hunk ni ninguno de los que restantes\n"
-"a - descartar este hunk y todos los posteriores en este archivo\n"
-"d - no descartar este hunk ni ninguno de los posteriores en el archivo"
+"y - descartar este fragmento del árbol de trabajo\n"
+"n - no descartar este fragmento del árbol de trabajo\n"
+"q - quit; no descartar este fragmento ni ninguno de los que restantes\n"
+"a - descartar este fragmento y todos los posteriores en este archivo\n"
+"d - no descartar este fragmento ni ninguno de los posteriores en el archivo"
 
 #: git-add--interactive.perl:1281
 msgid ""
@@ -25925,11 +26082,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
-"y - descartar este hunk del índice y el árbol de trabajo\n"
-"n - no descartar este hunk del índice ni el árbol de trabajo\n"
-"q - quit; no descartar este hunk ni ninguno de los que queden\n"
-"a - descartar este hunk y todos los posteriores en este archivo\n"
-"d - no descartar este hunk ni ninguno posterior en el archivo"
+"y - descartar este fragmento del índice y del árbol de trabajo\n"
+"n - no descartar este fragmentodel índice ni del árbol de trabajo\n"
+"q - quit; no descartar este fragmento ni ninguno de los que quedan\n"
+"a - descartar este fragmento y todos los posteriores en este archivo\n"
+"d - no descartar este fragmento ni ninguno posterior en el archivo"
 
 #: git-add--interactive.perl:1287
 msgid ""
@@ -25939,11 +26096,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este hunk al índice y al árbol de trabajo\n"
-"n - no aplicar este hunk al índice y al árbol de trabajo\n"
-"q - quit;  no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunk ni ninguno de los siguientes en este archivo"
+"y - aplicar este fragmento al índice y al árbol de trabajo\n"
+"n - no aplicar este fragmento al índice y al árbol de trabajo\n"
+"q - quit; no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los siguientes en este archivo"
 
 #: git-add--interactive.perl:1299
 msgid ""
@@ -25953,11 +26110,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este hunk al índice y al árbol de trabajo\n"
-"n - no aplicar este hunk al índice y al árbol de trabajo\n"
-"q - quit;  no aplicar este hunk ni ninguno de los restantes\n"
-"a - aplicar este hunk y todos los posteriores en el archivo\n"
-"d - no aplicar este hunk ni ninguno de los siguientes en este archivo"
+"y - aplicar este fragmento al índice y al árbol de trabajo\n"
+"n - no aplicar este fragmento al índice y al árbol de trabajo\n"
+"q - quit; no aplicar este fragmento ni ninguno de los restantes\n"
+"a - aplicar este fragmento y todos los posteriores en el archivo\n"
+"d - no aplicar este fragmento ni ninguno de los siguientes en este archivo"
 
 #: git-add--interactive.perl:1314
 msgid ""
@@ -25972,13 +26129,13 @@
 "? - print help\n"
 msgstr ""
 "g - selecciona un hunk a donde ir\n"
-"/ - buscar un hunk que concuerde el  regex\n"
-"j - dejar este hunk por definir, ver siguiente hunk por definir\n"
-"J - dejar este hunk por definir, ver siguiente hunk\n"
-"k - dejar este hunk por definir, ver hunk previo por definir\n"
-"K - dejar este hunk por definir, ver hunk previo\n"
-"s - dividir el  hunk actual en hunks más pequeños\n"
-"e - editar manualmente el hunk actual\n"
+"/ - buscar un hunk que concuerde con el regex dado\n"
+"j - dejar este fragmento por definir, ver siguiente fragmento por definir\n"
+"J - dejar este fragmento por definir, ver siguiente fragmento\n"
+"k - dejar este fragmento por definir, ver fragmento previo por definir\n"
+"K - dejar este fragmento por definir, ver fragmento previo\n"
+"s - dividir el fragmento actual en hunks más pequeños\n"
+"e - editar manualmente el fragmento actual\n"
 "? - imprimir ayuda\n"
 
 #: git-add--interactive.perl:1345
@@ -25993,12 +26150,12 @@
 #: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar cambio de modo para el árbol de trabajo [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar cambio de modo al árbol de trabajo [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1480
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar borrado al árbol de trabajo [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar eliminación al árbol de trabajo [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1481
 #, perl-format
@@ -26008,16 +26165,16 @@
 #: git-add--interactive.perl:1482
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
-msgstr "¿Aplicar este hunk al árbol de trabajo [y,n,q,a,d,/%s,?]? "
+msgstr "¿Aplicar este fragmento al árbol de trabajo [y,n,q,a,d,/%s,?]? "
 
 #: git-add--interactive.perl:1599
 msgid "No other hunks to goto\n"
-msgstr "No hay más pedazos para el ir\n"
+msgstr "No hay más fragmentos a que ir\n"
 
 #: git-add--interactive.perl:1617
 #, perl-format
 msgid "Invalid number: '%s'\n"
-msgstr "Numero inválido: '%s'\n"
+msgstr "Número inválido: '%s'\n"
 
 #: git-add--interactive.perl:1622
 #, perl-format
@@ -26028,7 +26185,7 @@
 
 #: git-add--interactive.perl:1657
 msgid "No other hunks to search\n"
-msgstr "No hay más pedazos para buscar\n"
+msgstr "No hay más fragmentos para buscar\n"
 
 #: git-add--interactive.perl:1674
 #, perl-format
@@ -26037,15 +26194,15 @@
 
 #: git-add--interactive.perl:1684
 msgid "No hunk matches the given pattern\n"
-msgstr "No hay hunks que concuerden con el patrón entregado.\n"
+msgstr "No hay fragmentos que concuerden con el patrón entregado.\n"
 
 #: git-add--interactive.perl:1696 git-add--interactive.perl:1718
 msgid "No previous hunk\n"
-msgstr "No el anterior hunk\n"
+msgstr "Sin hunk previo\n"
 
 #: git-add--interactive.perl:1705 git-add--interactive.perl:1724
 msgid "No next hunk\n"
-msgstr "No el siguiente hunk\n"
+msgstr "Sin hunk siguiente\n"
 
 #: git-add--interactive.perl:1730
 msgid "Sorry, cannot split this hunk\n"
@@ -26055,8 +26212,8 @@
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
-msgstr[0] "Cortar en %d hunk.\n"
-msgstr[1] "Cortar en  %d hunks.\n"
+msgstr[0] "Cortar en %d fragmento.\n"
+msgstr[1] "Cortar en %d fragmentos.\n"
 
 #: git-add--interactive.perl:1746
 msgid "Sorry, cannot edit this hunk\n"
@@ -26101,94 +26258,94 @@
 msgid "invalid argument %s, expecting --"
 msgstr "argumento inválido %s, se esperaba --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
-msgstr "la zona local difiere de GMT por un intervalo de cero minutos\n"
+msgstr "la zona local difiere de GMT por un intervalo de minutos no entero\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "el offset del tiempo local es mayor o igual a 24 horas\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "fatal: comando '%s' murió con código de salida %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "el editor se cerró inapropiadamente, abortando todo"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 "'%s' contiene una versión intermedia del correo que se estaba generando.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' contiene el email generado.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases no es compatible con otras opciones.\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
 "Set sendemail.forbidSendmailVariables to false to disable this check.\n"
 msgstr ""
 "fatal: opciones de configuración encontradas para 'sendmail'\n"
-"git-send-email está configurado con las opciones sendemail. * - tenga en "
+"git-send-email está configurado con las opciones sendemail.* - tenga en "
 "cuenta la 'e'.\n"
 "Establezca sendemail.forbidSendmailVariables en false para deshabilitar esta "
 "verificación.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "No se puede ejecutar git format-patch desde fuera del repositorio.\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr ""
-"`batch-size` y `relogin` deben ser especificados juntos (via la línea de "
+"`batch-size` y `relogin` deben ser especificados juntos (vía la línea de "
 "comando o por opción de configuración)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Campo --suppress-cc desconocido: '%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Configuración --confirm desconocida: '%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
-msgstr "peligro: alias de sendmail  con comillas no es soportado: %s\n"
+msgstr "peligro: alias de sendmail con comillas no es soportado: %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "peligro: `:include:` no soportado: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "advertencia: redirección `/file` o `|pipe` no soportada: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "advertencia: línea sendmail no reconocida: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -26203,12 +26360,12 @@
 "    * Diciendo \"./%s\" si se quiere decir un archivo; o\n"
 "    * Agregando la opción --format-patch si se quiere decir un rango.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Falló al abrir directorio %s: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -26218,17 +26375,17 @@
 "¡No se especificaron parches!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "¿No hay línea de subject en %s?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Falló al abrir para escritura %s: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26236,33 +26393,33 @@
 "\n"
 "Clear the body content if you don't wish to send a summary.\n"
 msgstr ""
-"Lineas que comienzan en \"GIT:\" serán eliminadas.\n"
+"Líneas que comienzan en \"GIT:\" serán eliminadas.\n"
 "Considere incluir un diffstat global o una tabla de contenidos\n"
 "para el parche que estás escribiendo.\n"
 "\n"
 "Limpiar el contenido de body si no deseas mandar un resumen.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Falló al abrir %s: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Falló al abrir %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Archivo de resumen está vacío, saltando al siguiente\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "¿Estás seguro de que deseas usar <%s> [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
@@ -26270,11 +26427,11 @@
 "Los siguientes archivos son 8bit, pero no declaran un Content-Transfer-"
 "Encoding.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
-msgstr "¿Qué codificación de 8bit debería declarar [UTF-8]? "
+msgstr "¿Qué codificación de 8 bits se debería declarar [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26284,25 +26441,25 @@
 msgstr ""
 "Rehusando mandar el parche porque\n"
 "\t%s\n"
-"tiene el asunto de template  '*** SUBJECT HERE ***'. Agrega --force si"
+"tiene el asunto de template '*** SUBJECT HERE ***'. Agrega --force si "
 "realmente lo deseas mandar.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
-msgstr "¿A quién se deben mandar los correos (si existe)?"
+msgstr "¿A quién se deben mandar los correos (si alguien hay)?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "fatal: alias '%s' se expande a si mismo\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
-"¿Qué id de mensaje será usado como In-Reply-To en el primer email (si "
-"existe alguno)? "
+"¿Qué id de mensaje será usado como In-Reply-To en el primer email (si existe "
+"alguno)? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "error: no es posible extraer una dirección válida de %s\n"
@@ -26310,16 +26467,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
-msgstr "¿Qué hacer con esta dirección? ([q]salir|[d]botar|[e]ditar): "
+msgstr "¿Qué hacer con esta dirección? ([q]salir|[d]descartar|[e]ditar): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "Ruta CA \"%s\" no existe"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26333,10 +26490,9 @@
 "\n"
 msgstr ""
 "    La lista Cc ha sido expandida por direcciones adicionales\n"
-"    encontradas en el mensaje de commit parchado.. Por defecto\n"
-"    send-email se muestra antes de mandar cualquier cada vez que esto "
-"sucede.\n"
-"    Este comportamiento is controlado por el valor de configuración "
+"    encontradas en el mensaje de commit parchado. Por defecto\n"
+"    send-email se muestra antes de mandar si esto sucede.\n"
+"    Este comportamiento es controlado por el valor de configuración "
 "sendemail.confirm.\n"
 "\n"
 "    Para más información, ejecuta 'git send-email --help'.\n"
@@ -26347,113 +26503,114 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "¿Mandar este email? ([y]si||[n]o|[e]editar|[q]salir|[a]todo): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
-msgstr "Necesitas mandar esta respuesta de email"
+msgstr "Se requiere una respuesta a ¿Mandar este email?"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
-msgstr "El servidor SMTP no esta definido adecuadamente."
+msgstr "El servidor SMTP no está definido adecuadamente."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "¡El servidor no soporta STARTTLS! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "¡Falló STARTTLS! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
-"No es posible inicializar SMTP adecuadamente. Verificar config y usar --smtp-debug."
+"No es posible inicializar SMTP adecuadamente. Verificar config y usar --smtp-"
+"debug."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Falló al enviar %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Dry-Sent %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Enviado %s\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Dry-OK. Log dice:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. Log dice:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Resultado: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Resultado: OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "no se puede abrir el archivo %s"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Agregando cc: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Agregando para: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Agregando cc: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Agregando cc: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) no se pudo ejecutar '%s'"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Agregando %s: %s de: '%s'\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) falló al cerrar el pipe a '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "no se puede mandar mensaje como 7bit"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "codificación de transferencia inválida"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26464,12 +26621,12 @@
 "%s\n"
 "peligro: no se mandaron parches\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "no es posible abrir %s: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26478,983 +26635,28 @@
 "fatal: %s: %d es más grande que 998 caracteres\n"
 "peligro: no se mandaron parches\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "Saltando %s con el sufijo de backup '%s'.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "¿Realmente deseas mandar %s? [y|N]: "
 
-#~ msgid "--cached and --3way cannot be used together."
-#~ msgstr "--cached y --3way no se pueden utilizar juntas."
+#~ msgid "unable to write stateless separator packet"
+#~ msgstr "no es posible escribir un paquete separador sin estado (stateless)"
 
-#~ msgid "both"
-#~ msgstr "ambos"
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
 
-#~ msgid "one"
-#~ msgstr "uno"
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
 
-#, c-format
-#~ msgid "Already up to date!"
-#~ msgstr "¡Ya está actualizado!"
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
 
-#~ msgid "Already up to date. Yeeah!"
-#~ msgstr "Ya está actualizado. ¡Oh, yeaahh!"
-
-#~ msgid "--batch-size option is only for 'repack' subcommand"
-#~ msgstr "opción --batch-size es solo para el subcomando 'repack'"
-
-#~ msgid "Percentage by which creation is weighted"
-#~ msgstr "Porcentaje por el cual la creación es pesada"
-
-#~ msgid ""
-#~ "the rebase.useBuiltin support has been removed!\n"
-#~ "See its entry in 'git help config' for details."
-#~ msgstr ""
-#~ "el soporte para rebase.useBuiltin ha sido eliminado!\n"
-#~ "Vea su entrada en 'git help config' para detalles."
-
-#, perl-format
-#~ msgid "%s: patch contains a line longer than 998 characters"
-#~ msgstr "%s: el parche contiene una línea con más de 998 caracteres"
-
-#~ msgid "store only"
-#~ msgstr "solo guardar"
-
-#~ msgid "compress faster"
-#~ msgstr "comprimir más rápido"
-
-#~ msgid "compress better"
-#~ msgstr "comprimir mejor"
-
-#~ msgid "unknown hash algorithm length"
-#~ msgstr "largo del algoritmo hash desconocido"
-
-#~ msgid "rev-list died"
-#~ msgstr "rev-list murió"
-
-#~ msgid ""
-#~ "commit-graph chunk lookup table entry missing; file may be incomplete"
-#~ msgstr ""
-#~ "falta tabla de lookup del chunk en commit-graph; el archivo puede estar "
-#~ "incompleto"
-
-#, c-format
-#~ msgid "commit-graph improper chunk offset %08x%08x"
-#~ msgstr "offset del chunk de commit-graph inapropiado %08x%08x"
-
-#, c-format
-#~ msgid "commit-graph chunk id %08x appears multiple times"
-#~ msgstr "id de chunk de commit-graph %08x parece tener múltiples tiempos"
-
-#~ msgid "Writing changed paths Bloom filters index"
-#~ msgstr "Escribiendo cambios de ruta del índice de filtros Bloom"
-
-#~ msgid "Counting distinct commits in commit graph"
-#~ msgstr "Contando commits distintos en commit graph"
-
-#, c-format
-#~ msgid "unexpected duplicate commit id %s"
-#~ msgstr "id de commit duplicado inesperado %s"
-
-#, c-format
-#~ msgid "the commit graph format cannot write %d commits"
-#~ msgstr "el formato de gráficos de commit no pudede escribir %d commits"
-
-#, c-format
-#~ msgid "hash version %u does not match"
-#~ msgstr "versión de hash %u no concuerda"
-
-#~ msgid "invalid chunk offset (too large)"
-#~ msgstr "offset inválido del conjunto (muy grande)"
-
-#~ msgid "error preparing packfile from multi-pack-index"
-#~ msgstr "error preparando packfile de multi-pack-index"
-
-#~ msgid "Writing chunks to multi-pack-index"
-#~ msgstr "Escribiendo chunks a multi-pack-index"
-
-#~ msgid "Remote with no URL"
-#~ msgstr "Remoto sin URL"
-
-#, c-format
-#~ msgid "%%(subject) does not take arguments"
-#~ msgstr "%%(subject) no toma ningún argumento"
-
-#, c-format
-#~ msgid "positive value expected objectname:short=%s"
-#~ msgstr "valor positivo esperado objectname:short=%s"
-
-#, c-format
-#~ msgid "unrecognized %%(objectname) argument: %s"
-#~ msgstr "argumento: %s no reconocido %%(objectname)"
-
-#, c-format
-#~ msgid "option `%s' is incompatible with --merged"
-#~ msgstr "opción `%s' es incompatible con --merged"
-
-#, c-format
-#~ msgid "option `%s' is incompatible with --no-merged"
-#~ msgstr "opción `%s' es incompatible con --no-merged"
-
-#, c-format
-#~ msgid "could not open '%s' for writing: %s"
-#~ msgstr "no se pudo abrir '%s' para escritura: %s"
-
-#, c-format
-#~ msgid "could not read ref '%s'"
-#~ msgstr "no se pudo leer la referencia '%s'"
-
-#, c-format
-#~ msgid "ref '%s' already exists"
-#~ msgstr "ref '%s' ya existe"
-
-#, c-format
-#~ msgid "unexpected object ID when writing '%s'"
-#~ msgstr "ID de objecto inesperado al escribir '%s'"
-
-#, c-format
-#~ msgid "unexpected object ID when deleting '%s'"
-#~ msgstr "ID de objecto inesperado al borrar '%s'"
-
-#, c-format
-#~ msgid "The hash algorithm %s is not supported in this build."
-#~ msgstr "El algoritmo hash %s no está soportado en este build."
-
-#, c-format
-#~ msgid "%s: not a valid OID"
-#~ msgstr "%s no es OID válido"
-
-#~ msgid "git bisect--helper --next-all [--no-checkout]"
-#~ msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#~ msgid "git bisect--helper --write-terms <bad_term> <good_term>"
-#~ msgstr "git bisect--helper --write-terms <mal_término> <buen_término>"
-
-#~ msgid ""
-#~ "git bisect--helper --bisect-write [--no-log] <state> <revision> "
-#~ "<good_term> <bad_term>"
-#~ msgstr ""
-#~ "git bisect--helper --bisect-write [--no-log] <estado> <revision> "
-#~ "<buen_term> <mal_term>"
-
-#~ msgid ""
-#~ "git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-#~ "<bad_term>"
-#~ msgstr ""
-#~ "git bisect--helper --bisect-check-and-set-terms <comando> <buen_term> "
-#~ "<mal_term>"
-
-#~ msgid "could not open the file BISECT_TERMS"
-#~ msgstr "no se pudo abrir el archivo BISECT_TERMS"
-
-#~ msgid "perform 'git bisect next'"
-#~ msgstr "realiza 'git bisect next'"
-
-#~ msgid "write the terms to .git/BISECT_TERMS"
-#~ msgstr "escribe los términos a .git/BISECT_TERMS"
-
-#~ msgid "cleanup the bisection state"
-#~ msgstr "limpiar el estado de bisección"
-
-#~ msgid "check for expected revs"
-#~ msgstr "revisar por revs esperados"
-
-#~ msgid "write out the bisection state in BISECT_LOG"
-#~ msgstr "escribir el estado de bisect en BISECT_LOG"
-
-#~ msgid "check and set terms in a bisection state"
-#~ msgstr "revisar y configurar los terms en el estado de bisect"
-
-#~ msgid "update BISECT_HEAD instead of checking out the current commit"
-#~ msgstr "actualiza BISECT_HEAD en lugar de revisar el commit actual"
-
-#~ msgid "--write-terms requires two arguments"
-#~ msgstr "--write-terms requiere dos argumentos"
-
-#~ msgid "--bisect-clean-state requires no arguments"
-#~ msgstr "--bisect-clean-state no requiere argumentos"
-
-#~ msgid "--bisect-write requires either 4 or 5 arguments"
-#~ msgstr "--bisect-write requiere entre 4 o 5 argumentos"
-
-#~ msgid "--check-and-set-terms requires 3 arguments"
-#~ msgstr "--bisect-clean-state no requiere argumentos"
-
-#~ msgid "Force progress reporting"
-#~ msgstr "Forzar el reporte de progreso"
-
-#~ msgid "n,m"
-#~ msgstr "n,m"
-
-#, c-format
-#~ msgid "Error deleting remote-tracking branch '%s'"
-#~ msgstr "Error al eliminar la rama de rastreo remota '%s'"
-
-#, c-format
-#~ msgid "Error deleting branch '%s'"
-#~ msgstr "Error al eliminar la rama '%s'"
-
-#~ msgid "show parse tree for grep expression"
-#~ msgstr "mostrar árbol analizado para la expresión grep"
-
-#~ msgid "Process line range n,m in file, counting from 1"
-#~ msgstr "Procesar rango de líneas n,m en archivo, contando desde 1"
-
-#~ msgid "name of output directory is too long"
-#~ msgstr "nombre del directorio de salida es muy largo"
-
-#~ msgid "standard output, or directory, which one?"
-#~ msgstr "¿salida standard, o directorio, cual?"
-
-#~ msgid "print only names (no SHA-1)"
-#~ msgstr "imprimir sólo nombres (sin SHA-1)"
-
-#~ msgid "too many parameters"
-#~ msgstr "demasiados parámetros"
-
-#~ msgid "too few parameters"
-#~ msgstr "muy pocos parámetros"
-
-#~ msgid "passed to 'git am'"
-#~ msgstr "pasado a 'git am'"
-
-#, c-format
-#~ msgid ""
-#~ "WARNING: Some packs in use have been renamed by\n"
-#~ "WARNING: prefixing old- to their name, in order to\n"
-#~ "WARNING: replace them with the new version of the\n"
-#~ "WARNING: file.  But the operation failed, and the\n"
-#~ "WARNING: attempt to rename them back to their\n"
-#~ "WARNING: original names also failed.\n"
-#~ "WARNING: Please rename them in %s manually:\n"
-#~ msgstr ""
-#~ "WARNING: Algunos packs en uso han sido renombrados\n"
-#~ "WARNING: agregando el prefijo old- a sus nombres,para\n"
-#~ "WARNING: reemplazarlos con la nueva versión del\n"
-#~ "WARNING: archivo. Pero la operación falló, y el intento\n"
-#~ "WARNING: de renombrarlos a sus nombres originales\n"
-#~ "WARNING: también falló.\n"
-#~ "WARNING: Por favor renombralos en %s manualmente:\n"
-
-#, c-format
-#~ msgid "failed to remove '%s'"
-#~ msgstr "falló al eliminar'%s'"
-
-#~ msgid "Recurse into nested submodules"
-#~ msgstr "Recursar en submódulos anidados"
-
-#~ msgid "too many params"
-#~ msgstr "demasiados parámetros"
-
-#~ msgid "Routines to help parsing remote repository access parameters"
-#~ msgstr ""
-#~ "Rutinas para ayudar a analizar los parámetros de acceso del repositorio "
-#~ "remoto"
-
-#, sh-format
-#~ msgid "Bad rev input: $bisected_head"
-#~ msgstr "Mala entrada rev: $bisected_head"
-
-#, sh-format
-#~ msgid "Bad rev input: $rev"
-#~ msgstr "Mala entrada rev: $rev"
-
-#~ msgid "The --cached option cannot be used with the --files option"
-#~ msgstr "La opción --cached no puede ser usada con la opción --files"
-
-#, sh-format
-#~ msgid "  Warn: $display_name doesn't contain commit $sha1_src"
-#~ msgstr "  Advertencia: $display_name no contiene el commit $sha1_src"
-
-#, sh-format
-#~ msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
-#~ msgstr "  Advertencia: $display_name no contiene el commit $sha1_dst"
-
-#, sh-format
-#~ msgid ""
-#~ "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
-#~ msgstr ""
-#~ "  Advertencia: $display_name no contiene los commits $sha1_src y $sha1_dst"
-
-#, sh-format
-#~ msgid "See git-${cmd}(1) for details."
-#~ msgstr "Véase git-${cmd}(1) para más detalles."
-
-#, c-format
-#~ msgid "Finding commits for commit graph from %d ref"
-#~ msgid_plural "Finding commits for commit graph from %d refs"
-#~ msgstr[0] "Encontrando commits para commit graph de %d ref"
-#~ msgstr[1] "Encontrando commits para commit graph de %d refs"
-
-#, c-format
-#~ msgid "invalid commit object id: %s"
-#~ msgstr "id de objeto commit: %s inválido"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: not a valid directory"
-#~ msgstr "Removiendo el worktrees/%s: no es un directorio válido"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-#~ msgstr "Removiendo worktrees/%s: no es posible leer el archivo gitdir (%s)"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: invalid gitdir file"
-#~ msgstr "Removiendo worktrees/%s: archivo gitdir inválido"
-
-#, c-format
-#~ msgid "unable to re-add worktree '%s'"
-#~ msgstr "no es posible volver a agregar el árbol '%s'"
-
-#, c-format
-#~ msgid "target '%s' already exists"
-#~ msgstr "el objetivo '%s' ya existe"
-
-#, c-format
-#~ msgid ""
-#~ "Cannot update sparse checkout: the following entries are not up to date:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "No se puede actualizar el sparse checkout: las siguientes entradas no "
-#~ "están actualizadas:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid ""
-#~ "The following working tree files would be overwritten by sparse checkout "
-#~ "update:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Los siguientes archivos del árbol de trabajo serán sobrescritos por la "
-#~ "actualización sparse checkout:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid ""
-#~ "The following working tree files would be removed by sparse checkout "
-#~ "update:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Los siguientes archivos del árbol de trabajo serán eliminados por la "
-#~ "actualización sparse checkout:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid "annotated tag %s has no embedded name"
-#~ msgstr "tag anotado %s no tiene nombre embebido"
-
-#~ msgid "automatically stash/stash pop before and after rebase"
-#~ msgstr "ejecutar automáticamente stash/stash pop antes y después de rebase"
-
-#~ msgid "--[no-]autostash option is only valid with --rebase."
-#~ msgstr "La opción --[no-]autostash sólo es válida con --rebase."
-
-#~ msgid "(DEPRECATED) keep empty commits"
-#~ msgstr "(DEPRECADO) mantener commits vacíos"
-
-#, c-format
-#~ msgid "Could not read '%s'"
-#~ msgstr "No se pudo leer '%s'"
-
-#, c-format
-#~ msgid "Cannot store %s"
-#~ msgstr "No se puede guardar %s"
-
-#~ msgid "initialize sparse-checkout"
-#~ msgstr "inicializar sparse-checkout"
-
-#~ msgid "set sparse-checkout patterns"
-#~ msgstr "configurar patrones de sparse-checkout"
-
-#~ msgid "disable sparse-checkout"
-#~ msgstr "deshabilitar sparse-checkout"
-
-#, c-format
-#~ msgid "could not exec %s"
-#~ msgstr "no se pudo ejecutar %s"
-
-#~ msgid "Cannot remove temporary index (can't happen)"
-#~ msgstr "No se puede eliminar el índice temporal (no puede suceder)"
-
-#, sh-format
-#~ msgid "Cannot update $ref_stash with $w_commit"
-#~ msgstr "No se puede actualizar $ref_stash con $w_commit"
-
-#, sh-format
-#~ msgid "error: unknown option for 'stash push': $option"
-#~ msgstr "error: opción desconocida para 'stash pus': $option"
-
-#, sh-format
-#~ msgid "Saved working directory and index state $stash_msg"
-#~ msgstr "Directorio de trabajo guardado y estado de índice $stash_msg"
-
-#, sh-format
-#~ msgid "unknown option: $opt"
-#~ msgstr "opción desconocida: $opt"
-
-#, sh-format
-#~ msgid "Too many revisions specified: $REV"
-#~ msgstr "Se especificaron demasiadas revisiones: $REV"
-
-#, sh-format
-#~ msgid "$reference is not a valid reference"
-#~ msgstr "$reference no es una referencia válida"
-
-#, sh-format
-#~ msgid "'$args' is not a stash-like commit"
-#~ msgstr "'$args' no es un commit estilo stash"
-
-#, sh-format
-#~ msgid "'$args' is not a stash reference"
-#~ msgstr "'$args' no es una referencia stash"
-
-#~ msgid "unable to refresh index"
-#~ msgstr "incapaz de refrescar el índice"
-
-#~ msgid "Cannot apply a stash in the middle of a merge"
-#~ msgstr "No se puede aplicar un stash en medio de una fusión"
-
-#~ msgid "Conflicts in index. Try without --index."
-#~ msgstr "Conflictos en índice. Intente sin --index."
-
-#~ msgid "Could not save index tree"
-#~ msgstr "No se puede guardar el índice del árbol"
-
-#~ msgid "Could not restore untracked files from stash entry"
-#~ msgstr "No se pueden restaurar archivos no rastreados de la entrada stash"
-
-#~ msgid "Cannot unstage modified files"
-#~ msgstr "No se puede sacar de stage archivos modificados"
-
-#, sh-format
-#~ msgid "Dropped ${REV} ($s)"
-#~ msgstr "Botado ${REV} ($s)"
-
-#, sh-format
-#~ msgid "${REV}: Could not drop stash entry"
-#~ msgstr "${REV}: No se pudo borrar entrada stash"
-
-#~ msgid "(To restore them type \"git stash apply\")"
-#~ msgstr "(Para restaurarlos, escribe \"git stash apply\")"
-
-#, c-format
-#~ msgid "Stage mode change [y,n,a,q,d%s,?]? "
-#~ msgstr "¿Cambio de modo de stage [y,n,a,q,d%s,?]? "
-
-#, c-format
-#~ msgid "Stage deletion [y,n,a,q,d%s,?]? "
-#~ msgstr "¿Aplicar stage al borrado [y,n,a,q,d%s,?]? "
-
-#, c-format
-#~ msgid "Stage this hunk [y,n,a,q,d%s,?]? "
-#~ msgstr "¿Aplicar stage a este hunk [y,n,a,q,d%s,?]? "
-
-#~ msgid ""
-#~ "If the patch applies cleanly, the edited hunk will immediately be\n"
-#~ "marked for staging.\n"
-#~ msgstr ""
-#~ "Si el parche aplica limpiamente, el hunk editado será marcado\n"
-#~ "inmediatamente para el área de stage.\n"
-
-#~ msgid ""
-#~ "y - stage this hunk\n"
-#~ "n - do not stage this hunk\n"
-#~ "q - quit; do not stage this hunk or any of the remaining ones\n"
-#~ "a - stage this and all the remaining hunks\n"
-#~ "d - do not stage this hunk nor any of the remaining hunks\n"
-#~ msgstr ""
-#~ "y - aplicar stage a este hunk\n"
-#~ "n - no aplicar stage a este hunk\n"
-#~ "q - quit; no aplicar stage a este hunk ni ninguno de los restantes\n"
-#~ "a - aplicar stage a este hunk y a todos los posteriores en el archivo\n"
-#~ "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
-#~ "archivo\n"
-
-#, c-format
-#~ msgid "could not copy '%s' to '%s'."
-#~ msgstr "no se pudo copiar '%s' a '%s'."
-
-#~ msgid "malformed ident line"
-#~ msgstr "línea de entrada mal formada"
-
-#, c-format
-#~ msgid "could not parse '%.*s'"
-#~ msgstr "no se puede analizar '%.*s'"
-
-#, c-format
-#~ msgid "could not checkout %s"
-#~ msgstr "no se puede hacer checkout a %s"
-
-#, c-format
-#~ msgid "filename in tree entry contains backslash: '%s'"
-#~ msgstr "nombre de archivo en el árbol contiene un backslash: '%s'"
-
-#, c-format
-#~ msgid "Use -f if you really want to add them.\n"
-#~ msgstr "Usa -f si realmente quieres agregarlos.\n"
-
-#, c-format
-#~ msgid "Maybe you wanted to say 'git add .'?\n"
-#~ msgstr "¿Tal vez quiso decir 'git add .'?\n"
-
-#, c-format
-#~ msgid "packfile is invalid: %s"
-#~ msgstr "packfile es inválido: %s"
-
-#, c-format
-#~ msgid "unable to open packfile for reuse: %s"
-#~ msgstr "no es posible abrir packfile para reusar: %s"
-
-#~ msgid "unable to seek in reused packfile"
-#~ msgstr "no es posible buscar en los packfile reusados"
-
-#~ msgid "unable to read from reused packfile"
-#~ msgstr "no es posible leer de packfile reusado"
-
-#~ msgid "no HEAD?"
-#~ msgstr "¿Sin HEAD?"
-
-#~ msgid "preserve empty commits during rebase"
-#~ msgstr "preservar commits vacíos durante el rebase"
-
-#~ msgid "cannot combine --use-bitmap-index with object filtering"
-#~ msgstr "no se puede combinar --use-bitmap-index con objetos de filtrado"
-
-#, sh-format
-#~ msgid ""
-#~ "The following path is ignored by one of your .gitignore files:\n"
-#~ "$sm_path\n"
-#~ "Use -f if you really want to add it."
-#~ msgstr ""
-#~ "La siguiente ruta es ignorada por uno de tus archivos .gitignore:\n"
-#~ "$sm_path\n"
-#~ "Usa -f si en verdad quieres agregarlo."
-
-#~ msgid "Use an experimental heuristic to improve diffs"
-#~ msgstr "Usar un heurístico experimental para mejorar los diffs"
-
-#~ msgid "git commit-graph [--object-dir <objdir>]"
-#~ msgstr "git commit-graph [--object-dir <objdir>]"
-
-#~ msgid "git commit-graph read [--object-dir <objdir>]"
-#~ msgstr "git commit-graph read [--object-dir <objdir>]"
-
-#~ msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
-#~ msgstr ""
-#~ "valor core.untrackedCache '%s' desconocido; usando 'keep' como valor por "
-#~ "defecto"
-
-#~ msgid "cannot change partial clone promisor remote"
-#~ msgstr "no se puede cambiar un clon parcial remoto promisor"
-
-#~ msgid "error building trees"
-#~ msgstr "error construyendo árboles"
-
-#~ msgid "invalid date format '%s' in '%s'"
-#~ msgstr "formato de fecha inválido '%s' en '%s'"
-
-#~ msgid "writing root commit"
-#~ msgstr "escribiendo commit raíz"
-
-#~ msgid "staged changes in the following files may be lost: %s"
-#~ msgstr ""
-#~ "cambios en el área de stage en el siguiente archivo pueden ser perdidos: "
-#~ "%s"
-
-#~ msgid ""
-#~ "--filter can only be used with the remote configured in extensions."
-#~ "partialClone"
-#~ msgstr ""
-#~ "--filter solo puede ser usado con el remoto configurado en extensions."
-#~ "partialClone"
-
-#~ msgid "verify commit-msg hook"
-#~ msgstr "verificar el hook commit-msg"
-
-#~ msgid "cannot combine '--rebase-merges' with '--strategy-option'"
-#~ msgstr "no se puede combinar '--rebase-merges' con '--strategy-option'"
-
-#~ msgid "invalid sparse value '%s'"
-#~ msgstr "valor disperso inválido: '%s'"
-
-#~ msgid "Server supports multi_ack_detailed"
-#~ msgstr "El servidor soporta ulti_ack_detailed"
-
-#~ msgid "Server supports no-done"
-#~ msgstr "El servidor soporta no-done"
-
-#~ msgid "Server supports multi_ack"
-#~ msgstr "El servidor soporta multi_ack"
-
-#~ msgid "Server supports side-band-64k"
-#~ msgstr "El servidor soporta side-band-64k"
-
-#~ msgid "Server supports side-band"
-#~ msgstr "El servidor soporta side-band"
-
-#~ msgid "Server supports allow-tip-sha1-in-want"
-#~ msgstr "El servidor soporta allow-tip-sha1-in-want"
-
-#~ msgid "Server supports allow-reachable-sha1-in-want"
-#~ msgstr "El servidor soporta allow-reachable-sha1-in-want"
-
-#~ msgid "Server supports ofs-delta"
-#~ msgstr "El servidor soporta ofs-delta"
-
-#~ msgid "Checking out files"
-#~ msgstr "Revisando archivos"
-
-#~ msgid "cannot be interactive without stdin connected to a terminal."
-#~ msgstr "no se puede ser interactivo sin stdin conectado a un terminal."
-
-#~ msgid "failed to stat %s\n"
-#~ msgstr "falló al analizar %s\n"
-
-#~ msgid ""
-#~ "If you wish to skip this commit, use:\n"
-#~ "\n"
-#~ "    git reset\n"
-#~ "\n"
-#~ "Then \"git cherry-pick --continue\" will resume cherry-picking\n"
-#~ "the remaining commits.\n"
-#~ msgstr ""
-#~ "Si quiere saltar este commit, use:\n"
-#~ "\n"
-#~ "    git reset\n"
-#~ "\n"
-#~ "Luego \"git cherry-pick --continue\" continuara el cherry-picking\n"
-#~ "para los commits restantes.\n"
-
-#~ msgid "unrecognized verb: %s"
-#~ msgstr "verbo no reconocido: %s"
-
-#~ msgid "option '%s' requires a value"
-#~ msgstr "opción '%s' requiere un valor"
-
-#~ msgid "could not transform the todo list"
-#~ msgstr "no se pudo transformar lista de pendientes"
-
-#~ msgid "default"
-#~ msgstr "default"
-
-#~ msgid "Could not create directory '%s'"
-#~ msgstr "No se pudo crear el directorio '%s'"
-
-#~ msgid "allow rerere to update index with resolved conflict"
-#~ msgstr "permitir rerere actualizar index con conflictos resueltos"
-
-#~ msgid "could not open %s"
-#~ msgstr "no se pudo abrir %s"
-
-#~ msgid "Could not move back to $head_name"
-#~ msgstr "No se puede regresar a $head_name"
-
-#~ msgid ""
-#~ "It seems that there is already a $state_dir_base directory, and\n"
-#~ "I wonder if you are in the middle of another rebase.  If that is the\n"
-#~ "case, please try\n"
-#~ "\t$cmd_live_rebase\n"
-#~ "If that is not the case, please\n"
-#~ "\t$cmd_clear_stale_rebase\n"
-#~ "and run me again.  I am stopping in case you still have something\n"
-#~ "valuable there."
-#~ msgstr ""
-#~ "Parece que ya hay un directorio $state_dir_base, y\n"
-#~ "me pregunto si está en medio de otro rebase. Si ese es el\n"
-#~ "caso, por favor intente\n"
-#~ "\t$cmd_live_rebase\n"
-#~ "Si no es el caso, por favor\n"
-#~ "\t$cmd_clear_stale_rebase\n"
-#~ "y ejecúteme nuevamente.  Me estoy deteniendo en caso de que tenga\n"
-#~ "algo de valor ahí."
-
-#~ msgid ""
-#~ "fatal: cannot combine am options with either interactive or merge options"
-#~ msgstr ""
-#~ "fatal: no se puede combinar opciones am con opciones interactivas o de "
-#~ "merge"
-
-#~ msgid "fatal: cannot combine '--signoff' with '--preserve-merges'"
-#~ msgstr "fatal: no se puede combinar '--signoff' con '--preserve-merges'"
-
-#~ msgid "fatal: cannot combine '--preserve-merges' with '--rebase-merges'"
-#~ msgstr ""
-#~ "fatal: no se puede combinar '--preserve-merges' con '--rebase-merges'"
-
-#~ msgid "fatal: cannot combine '--rebase-merges' with '--strategy-option'"
-#~ msgstr ""
-#~ "fatal: no se puede combinar '--rebase-merges' con '--strategy-option'"
-
-#~ msgid "fatal: cannot combine '--rebase-merges' with '--strategy'"
-#~ msgstr "fatal: no se puede combinar '--rebase-merges' con '--strategy'"
-
-#~ msgid "invalid upstream '$upstream_name'"
-#~ msgstr "upstream inválido '$upstream_name'"
-
-#~ msgid "$onto_name: there are more than one merge bases"
-#~ msgstr "$onto_name: hay más de una base de fusión"
-
-#~ msgid "$onto_name: there is no merge base"
-#~ msgstr "$onto_name: no hay base de fusión"
-
-#~ msgid "Does not point to a valid commit: $onto_name"
-#~ msgstr "No apunta a un commit válido: $onto_name"
-
-#~ msgid "fatal: no such branch/commit '$branch_name'"
-#~ msgstr "fatal: no existe la rama/commit: '$branch_name'"
-
-#~ msgid "Created autostash: $stash_abbrev"
-#~ msgstr "Autostash creado: $stash_abbrev"
-
-#~ msgid "Current branch $branch_name is up to date."
-#~ msgstr "La rama actual $branch_name está actualizada."
-
-#~ msgid "Current branch $branch_name is up to date, rebase forced."
-#~ msgstr "Rama actual $branch_name está actualizada, rebase forzado."
-
-#~ msgid "Changes to $onto:"
-#~ msgstr "Cambios hacia $onto:"
-
-#~ msgid "Changes from $mb to $onto:"
-#~ msgstr "Cambios desde $mb a $onto:"
-
-#~ msgid "Fast-forwarded $branch_name to $onto_name."
-#~ msgstr "Avance rápido de $branch_name a $onto_name."
-
-#~ msgid "First, rewinding head to replay your work on top of it..."
-#~ msgstr ""
-#~ "En primer lugar, rebobinando HEAD para después reproducir tus cambios "
-#~ "encima de ésta..."
-
-#~ msgid "ignoring unknown color-moved-ws mode '%s'"
-#~ msgstr "ignorando modo desconocido color-moved-ws '%s'"
-
-#~ msgid "only 'tree:0' is supported"
-#~ msgstr "solo 'tree:0' es soportado"
-
-#~ msgid "Renaming %s to %s and %s to %s instead"
-#~ msgstr "Renombrando %s a %s y %s a %s más bien"
-
-#~ msgid "Adding merged %s"
-#~ msgstr "Agregar %s fusionado"
-
-#~ msgid "Internal error"
-#~ msgstr "Error interno"
-
-#~ msgid "mainline was specified but commit %s is not a merge."
-#~ msgstr "línea principal especificada pero el commit %s no es una fusión."
-
-#~ msgid "unable to write sha1 filename %s"
-#~ msgstr "incapaz de escribir el nombre de archivo sha1 %s"
-
-#~ msgid "cannot read sha1_file for %s"
-#~ msgstr "no se puede leer sha1_file para %s"
-
-#~ msgid ""
-#~ "error: cannot combine interactive options (--interactive, --exec, --"
-#~ "rebase-merges, --preserve-merges, --keep-empty, --root + --onto) with am "
-#~ "options (%s)"
-#~ msgstr ""
-#~ "error: no se puede combinar opciones interactivas (--interactive, --exec, "
-#~ "--rebase-merges, --preserve-merges, --keep-empty, --root + --onto) con "
-#~ "opciones (%s)"
-
-#~ msgid ""
-#~ "error: cannot combine merge options (--merge, --strategy, --strategy-"
-#~ "option) with am options (%s)"
-#~ msgstr ""
-#~ "error: no se puede combinar opciones de merge (--merge, --strategy, --"
-#~ "strategy-option) con opciones de am (%s)"
-
-#~ msgid "unrecognised option: '$arg'"
-#~ msgstr "opción no reconocida: '$arg'"
-
-#~ msgid "'$invalid' is not a valid commit"
-#~ msgstr "'$invalid' no es un commit válido"
-
-#~ msgid "could not parse '%s' (looking for '%s')"
-#~ msgstr "no se pudo configurar '%s' (buscando '%s')"
-
-#~ msgid "deprecated synonym for --create-reflog"
-#~ msgstr "sinónimo deprecado para --create-reflog"
-
-#~ msgid "Can't stat %s"
-#~ msgstr "No se puede definir %s"
-
-#~ msgid "abort rebase"
-#~ msgstr "abortar rebase"
-
-#~ msgid "make rebase script"
-#~ msgstr "generar script de rebase"
-
-#~ msgid "cannot move a locked working tree"
-#~ msgstr "no se puede mover un árbol de trabajo encerrado"
-
-#~ msgid "cannot remove a locked working tree"
-#~ msgstr "no se puede eliminar árbol de trabajo encerrado"
-
-#~ msgid ""
-#~ "\n"
-#~ "\tHowever, if you remove everything, the rebase will be aborted.\n"
-#~ "\n"
-#~ "\t"
-#~ msgstr ""
-#~ "\n"
-#~ "\tComo sea, si quieres borrar todo, el rebase será abortado.\n"
-#~ "\n"
-#~ "\t"
-
-#~ msgid "Dirty index: cannot merge (dirty: %s)"
-#~ msgstr "Índice sucio: no se puede fusionar (sucio: %s)"
-
-#~ msgid "(+/-)x"
-#~ msgstr "(+/-)x"
-
-#~ msgid "<command>"
-#~ msgstr "<comando>"
-
-#~ msgid "push|fetch"
-#~ msgstr "push|fetch"
-
-#~ msgid "w[,i1[,i2]]"
-#~ msgstr "w[,i1[,i2]]"
-
-#~ msgid "Entering '$displaypath'"
-#~ msgstr "Entrando a '$displaypath'"
-
-#~ msgid "Stopping at '$displaypath'; script returned non-zero status."
-#~ msgstr ""
-#~ "Deteniendo en '$displaypath'; script devolvió un status distinto de cero."
-
-#~ msgid "Everyday Git With 20 Commands Or So"
-#~ msgstr "Git diario con 20 comandos o algo así"
-
-#~ msgid "Could not open '%s' for writing"
-#~ msgstr "No se pudo abrir '%s' para escritura"
-
-#~ msgid ""
-#~ "unexpected 1st line of squash message:\n"
-#~ "\n"
-#~ "\t%.*s"
-#~ msgstr ""
-#~ "1ra línea del mensaje squash no esperada:\n"
-#~ "\n"
-#~ "\t%.*s"
-
-#~ msgid ""
-#~ "invalid 1st line of squash message:\n"
-#~ "\n"
-#~ "\t%.*s"
-#~ msgstr ""
-#~ "1ra línea del mensaje squash inválida:\n"
-#~ "\n"
-#~ "\t%.*s"
-
-#~ msgid "BUG: returned path string doesn't match cwd?"
-#~ msgstr "BUG: string de ruta recibido no concuerda con cwd?"
-
-#~ msgid "Error in object"
-#~ msgstr "Error en el objeto"
-
-#~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
-#~ msgstr "git fetch-pack: se esperaba ACK/NAK, se obtuvo EOF"
-
-#~ msgid "invalid filter-spec expression '%s'"
-#~ msgstr "expresión filter-spec inválida '%s'"
-
-#~ msgid "The copy of the patch that failed is found in: %s"
-#~ msgstr "La copia del parche que fallido se encuentra en: %s"
-
-#~ msgid "pathspec and --all are incompatible"
-#~ msgstr "pathspec y --all son incompatibles"
-
-#~ msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
-#~ msgstr ""
-#~ "Anulado el registro del submódulo '$name' ($url) para la ruta "
-#~ "'$displaypath'"
-
-#~ msgid "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"
-#~ msgstr ""
-#~ "Campos Para/Cc/Bcc no han sido interpretados todavía, han sido ignorados\n"
-
-#~ msgid ""
-#~ "empty strings as pathspecs will be made invalid in upcoming releases. "
-#~ "please use . instead if you meant to match all paths"
-#~ msgstr ""
-#~ "los strings vacíos como pathspecs serán inválidas en las próximas "
-#~ "versiones. por favor use . si quería hacer coincidir todas las rutas"
-
-#~ msgid "could not truncate '%s'"
-#~ msgstr "no se pudo truncar '%s'"
-
-#~ msgid "could not close %s"
-#~ msgstr "no se pudo cerrar %s"
-
-#~ msgid "Copied a misnamed branch '%s' away"
-#~ msgstr "Copiada una rama mal llamada '%s' afuera"
-
-#~ msgid "it does not make sense to create 'HEAD' manually"
-#~ msgstr "No tiene sentido crear 'HEAD' manualmente"
-
-#~ msgid "Don't know how to clone %s"
-#~ msgstr "No se sabe como clonar %s"
-
-#~ msgid "Don't know how to fetch from %s"
-#~ msgstr "No se sabe como extraer de %s"
-
-#~ msgid "'$term' is not a valid term"
-#~ msgstr "'$term' no es un término válido"
-
-#~ msgid ""
-#~ "error: unknown option for 'stash save': $option\n"
-#~ "       To provide a message, use git stash save -- '$option'"
-#~ msgstr ""
-#~ "error: opción desconocida para 'stash save': $option\n"
-#~ "       Esto provee un mensaje , use git stash save -- '$option'"
-
-#~ msgid "Failed to recurse into submodule path '$sm_path'"
-#~ msgstr "Falló al recurrir en la ruta de submódulo '$sm_path'"
-
-#~ msgid "%%(trailers) does not take arguments"
-#~ msgstr "%%(trailers) no toma argumentos"
-
-#~ msgid "submodule update strategy not supported for submodule '%s'"
-#~ msgstr ""
-#~ "estrategia de actualización de submódulo no soportada para submódulo '%s'"
-
-#~ msgid "change upstream info"
-#~ msgstr "cambie info de upstream"
-
-#~ msgid ""
-#~ "\n"
-#~ "If you wanted to make '%s' track '%s', do this:\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Si querías hacer que '%s' rastree '%s', haz esto:\n"
-#~ "\n"
-
-#~ msgid "basename"
-#~ msgstr "nombre base"
-
-#~ msgid ""
-#~ "Warning: the SHA-1 is missing or isn't a commit in the following line:\n"
-#~ " - $line"
-#~ msgstr ""
-#~ "Peligro: falta el SHA-1 o no es un commit en la siguiente línea:\n"
-#~ " - $line"
-
-#~ msgid ""
-#~ "Warning: the command isn't recognized in the following line:\n"
-#~ " - $line"
-#~ msgstr ""
-#~ "Peligro: el comando no es reconocido en la siguiente línea:\n"
-#~ " - $line"
-
-#~ msgid "Or you can abort the rebase with 'git rebase --abort'."
-#~ msgstr "O puedes abortar el rebasamiento con 'git rebase --abort'."
+#~ msgid "remote server sent stateless separator"
+#~ msgstr "el servidor remoto envió un separador sin estado (stateless)"
diff --git a/po/fr.po b/po/fr.po
index 336dc60..59481a7 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -76,8 +76,8 @@
 msgstr ""
 "Project-Id-Version: git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-19 17:43+0200\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 08:28+0200\n"
 "Last-Translator: Cédric Malard <c.malard-git@valdun.net>\n"
 "Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
 "Language: fr\n"
@@ -92,19 +92,24 @@
 msgid "Huh (%s)?"
 msgstr "Hein (%s) ?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493 sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528 builtin/rebase.c:1953
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
+#: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "impossible de lire l'index"
 
-#: add-interactive.c:584 git-add--interactive.perl:269 git-add--interactive.perl:294
+#: add-interactive.c:584 git-add--interactive.perl:269
+#: git-add--interactive.perl:294
 msgid "binary"
 msgstr "binaire"
 
-#: add-interactive.c:642 git-add--interactive.perl:278 git-add--interactive.perl:332
+#: add-interactive.c:642 git-add--interactive.perl:278
+#: git-add--interactive.perl:332
 msgid "nothing"
 msgstr "rien"
 
-#: add-interactive.c:643 git-add--interactive.perl:314 git-add--interactive.perl:329
+#: add-interactive.c:643 git-add--interactive.perl:314
+#: git-add--interactive.perl:329
 msgid "unchanged"
 msgstr "inchangé"
 
@@ -117,7 +122,7 @@
 msgid "could not stage '%s'"
 msgstr "impossible d'indexer '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "impossible d'écrire l'index"
 
@@ -133,7 +138,8 @@
 msgid "note: %s is untracked now.\n"
 msgstr "note : %s n'est plus suivi à présent.\n"
 
-#: add-interactive.c:729 apply.c:4127 builtin/checkout.c:298 builtin/reset.c:145
+#: add-interactive.c:729 apply.c:4127 builtin/checkout.c:298
+#: builtin/reset.c:145
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
 msgstr "échec de make_cache_entry pour le chemin '%s'"
@@ -174,12 +180,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "fichier non-fusionné ignoré : %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Seuls des fichiers binaires ont changé.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Aucune modification.\n"
@@ -198,7 +204,8 @@
 
 #: add-interactive.c:1012
 msgid "add working tree state to the staged set of changes"
-msgstr "ajouter l'état de l'arbre de travail à l'ensemble des modifications indexées"
+msgstr ""
+"ajouter l'état de l'arbre de travail à l'ensemble des modifications indexées"
 
 #: add-interactive.c:1014
 msgid "revert staged set of changes back to the HEAD version"
@@ -214,7 +221,9 @@
 
 #: add-interactive.c:1020
 msgid "add contents of untracked files to the staged set of changes"
-msgstr "ajouter le contenu des fichiers non-suivis à l'ensemble des modifications indexées"
+msgstr ""
+"ajouter le contenu des fichiers non-suivis à l'ensemble des modifications "
+"indexées"
 
 #: add-interactive.c:1028 add-interactive.c:1077
 msgid "Prompt help:"
@@ -256,11 +265,11 @@
 msgid "(empty) select nothing"
 msgstr "(vide) ne rien sélectionner"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Commandes ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Et maintenant"
 
@@ -272,9 +281,14 @@
 msgid "unstaged"
 msgstr "non-indexé"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308 builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128 builtin/fetch.c:152
-#: builtin/merge.c:285 builtin/pull.c:190 builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819 builtin/submodule--helper.c:1822
-#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573 git-add--interactive.perl:213
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
+#: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
+#: git-add--interactive.perl:213
 msgid "path"
 msgstr "chemin"
 
@@ -282,7 +296,7 @@
 msgid "could not refresh index"
 msgstr "impossible de rafraîchir l'index"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Au revoir.\n"
@@ -308,8 +322,12 @@
 msgstr "Indexer cette section [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:39
-msgid "If the patch applies cleanly, the edited hunk will immediately be marked for staging."
-msgstr "Si le patch s'applique proprement, la section éditée sera immédiatement marquée comme indexée."
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"staging."
+msgstr ""
+"Si le patch s'applique proprement, la section éditée sera immédiatement "
+"marquée comme indexée."
 
 #: add-patch.c:42
 msgid ""
@@ -346,8 +364,12 @@
 msgstr "Remiser cette section [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:61
-msgid "If the patch applies cleanly, the edited hunk will immediately be marked for stashing."
-msgstr "Si le patch s'applique proprement, la section éditée sera immédiatement marquée comme remisée."
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"stashing."
+msgstr ""
+"Si le patch s'applique proprement, la section éditée sera immédiatement "
+"marquée comme remisée."
 
 #: add-patch.c:64
 msgid ""
@@ -384,8 +406,12 @@
 msgstr "Désindexer cette section [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:85
-msgid "If the patch applies cleanly, the edited hunk will immediately be marked for unstaging."
-msgstr "Si le patch s'applique proprement, la section éditée sera immédiatement marquée comme desindexée."
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"unstaging."
+msgstr ""
+"Si le patch s'applique proprement, la section éditée sera immédiatement "
+"marquée comme desindexée."
 
 #: add-patch.c:88
 msgid ""
@@ -422,8 +448,12 @@
 msgstr "Appliquer cette section à l'index [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:108 add-patch.c:176 add-patch.c:221
-msgid "If the patch applies cleanly, the edited hunk will immediately be marked for applying."
-msgstr "Si le patch s'applique proprement, la section éditée sera immédiatement marquée comme appliquée."
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"applying."
+msgstr ""
+"Si le patch s'applique proprement, la section éditée sera immédiatement "
+"marquée comme appliquée."
 
 #: add-patch.c:111
 msgid ""
@@ -439,29 +469,37 @@
 "a - appliquer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas appliquer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:126 git-add--interactive.perl:1455 git-add--interactive.perl:1473
+#: add-patch.c:126 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Abandonner le changement de mode dans l'arbre [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:127 git-add--interactive.perl:1456 git-add--interactive.perl:1474
+#: add-patch.c:127 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Abandonner la suppression dans l'arbre [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:128 git-add--interactive.perl:1457 git-add--interactive.perl:1475
+#: add-patch.c:128 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
 msgstr "Abandonner l'ajout dans l'arbre [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:129 git-add--interactive.perl:1458 git-add--interactive.perl:1476
+#: add-patch.c:129 git-add--interactive.perl:1458
+#: git-add--interactive.perl:1476
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Abandonner cette section dans l'arbre [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:131 add-patch.c:154 add-patch.c:199
-msgid "If the patch applies cleanly, the edited hunk will immediately be marked for discarding."
-msgstr "Si le patch s'applique proprement, la section éditée sera immédiatement marquée comme éliminée."
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"discarding."
+msgstr ""
+"Si le patch s'applique proprement, la section éditée sera immédiatement "
+"marquée comme éliminée."
 
 #: add-patch.c:134 add-patch.c:202
 msgid ""
@@ -480,7 +518,8 @@
 #: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Abandonner le changement de mode dans l'index et l'arbre [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Abandonner le changement de mode dans l'index et l'arbre [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
 #, c-format, perl-format
@@ -495,7 +534,8 @@
 #: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1464
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Supprimer la section dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Supprimer la section dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:157
 msgid ""
@@ -514,22 +554,28 @@
 #: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer le changement de mode dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer le changement de mode dans l'index et l'arbre de travail [y,n,q,a,d"
+"%s,?] ? "
 
 #: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1468
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer la suppression dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer la suppression dans l'index et l'arbre de travail [y,n,q,a,d"
+"%s,?] ? "
 
 #: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer l'ajout dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer l'ajout dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1470
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer la section à l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer la section à l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
 
 #: add-patch.c:179
 msgid ""
@@ -559,34 +605,34 @@
 "a - appliquer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas appliquer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "impossible d'analyser l'entête de section '%.*s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "impossible d'analyser l'entête coloré de section '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "impossible d'analyser la diff"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "impossible d'analyser la diff colorée"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "échec pour lancer '%s'"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "sortie sans correspondance depuis interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -594,7 +640,7 @@
 "Votre filtre doit maintenir une correspondance un-pour-un\n"
 "entre les lignes en entrée et en sortie."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -603,7 +649,7 @@
 "ligne de contexte attendue #%d dans\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -616,11 +662,12 @@
 "\tne se termine pas par :\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
-msgstr "Mode d'édition manuelle de section -- voir ci-dessous pour un guide rapide.\n"
+msgstr ""
+"Mode d'édition manuelle de section -- voir ci-dessous pour un guide rapide.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -634,7 +681,7 @@
 "Les lignes commençant par %c seront éliminées.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -644,11 +691,11 @@
 "l'éditer à nouveau. Si toutes les lignes de la section sont supprimées,\n"
 "alors l'édition sera abandonnée et la section conservée.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "impossible d'analyser l'entête de section"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' a échoué"
 
@@ -664,23 +711,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
-msgid "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
-msgstr "Votre section éditée ne s'applique pas. L'éditer à nouveau (\"no\" l'élimine !) [y|n] ? "
+#: add-patch.c:1247 git-add--interactive.perl:1242
+msgid ""
+"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
+msgstr ""
+"Votre section éditée ne s'applique pas. L'éditer à nouveau (\"no\" "
+"l'élimine !) [y|n] ? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Les sections sélectionnées ne s'applique pas à l'index !"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Les appliquer quand même à l'arbre de travail ? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Rien n'a été appliqué.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -702,69 +752,69 @@
 "e - éditer manuellement la section actuelle\n"
 "? - afficher l'aide\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Pas de section précédente"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Pas de section suivante"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Aucune autre section à atteindre"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "aller à quelle section (<ret> pour voir plus) ? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "aller à quelle section ? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Numéro invalide : '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Désolé, %d seule section disponible."
 msgstr[1] "Désolé, Seulement %d sections disponibles."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Aucune autre section à rechercher"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "rechercher la regex ? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Regex de recherche malformée %s : %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Aucune section ne correspond au motif donné"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Désolé, impossible de découper cette section"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Découpée en %d sections."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Désolé, impossible d'éditer cette section"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' a échoué"
 
@@ -819,7 +869,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Abandon à cause de conflit non résolu."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe)."
 
@@ -834,15 +884,20 @@
 #: advice.c:296
 #, c-format
 msgid ""
-"The following pathspecs didn't match any eligible path, but they do match index\n"
+"The following pathspecs didn't match any eligible path, but they do match "
+"index\n"
 "entries outside the current sparse checkout:\n"
 msgstr ""
-"Les spécificateurs de chemin suivants n'ont trouvé aucune correspondance, mais correspondent\n"
+"Les spécificateurs de chemin suivants n'ont trouvé aucune correspondance, "
+"mais correspondent\n"
 "dans les entrées d'index hors de l'extraction clairsemée actuelle :\n"
 
 #: advice.c:303
-msgid "Disable or modify the sparsity rules if you intend to update such entries."
-msgstr "Désactiver ou modifier les règles de partialisation si vous allez mettre à jour de telles entrées."
+msgid ""
+"Disable or modify the sparsity rules if you intend to update such entries."
+msgstr ""
+"Désactiver ou modifier les règles de partialisation si vous allez mettre à "
+"jour de telles entrées."
 
 #: advice.c:310
 #, c-format
@@ -862,16 +917,21 @@
 "\n"
 "  git switch -\n"
 "\n"
-"Turn off this advice by setting config variable advice.detachedHead to false\n"
+"Turn off this advice by setting config variable advice.detachedHead to "
+"false\n"
 "\n"
 msgstr ""
 "Note : basculement sur '%s'.\n"
 "\n"
-"Vous êtes dans l'état « HEAD détachée ». Vous pouvez visiter, faire des modifications\n"
-"expérimentales et les valider. Il vous suffit de faire un autre basculement pour\n"
-"abandonner les commits que vous faites dans cet état sans impacter les autres branches\n"
+"Vous êtes dans l'état « HEAD détachée ». Vous pouvez visiter, faire des "
+"modifications\n"
+"expérimentales et les valider. Il vous suffit de faire un autre basculement "
+"pour\n"
+"abandonner les commits que vous faites dans cet état sans impacter les "
+"autres branches\n"
 "\n"
-"Si vous voulez créer une nouvelle branche pour conserver les commits que vous créez,\n"
+"Si vous voulez créer une nouvelle branche pour conserver les commits que "
+"vous créez,\n"
 "il vous suffit d'utiliser l'option -c de la commande switch comme ceci :\n"
 "\n"
 "  git switch -c <nom-de-la-nouvelle-branche>\n"
@@ -880,7 +940,8 @@
 "\n"
 "  git switch -\n"
 "\n"
-"Désactivez ce conseil en renseignant la variable de configuration advice.detachedHead à false\n"
+"Désactivez ce conseil en renseignant la variable de configuration advice."
+"detachedHead à false\n"
 "\n"
 
 #: alias.c:50
@@ -935,22 +996,29 @@
 #: apply.c:921
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
-msgstr "git apply : mauvais format de git-diff - /dev/null attendu, %s trouvé à la ligne %d"
+msgstr ""
+"git apply : mauvais format de git-diff - /dev/null attendu, %s trouvé à la "
+"ligne %d"
 
 #: apply.c:927
 #, c-format
 msgid "git apply: bad git-diff - inconsistent new filename on line %d"
-msgstr "git apply : mauvais format de git-diff - nouveau nom de fichier inconsistant à la ligne %d"
+msgstr ""
+"git apply : mauvais format de git-diff - nouveau nom de fichier inconsistant "
+"à la ligne %d"
 
 #: apply.c:928
 #, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
-msgstr "git apply : mauvais format de git-diff - ancien nom de fichier inconsistant à la ligne %d"
+msgstr ""
+"git apply : mauvais format de git-diff - ancien nom de fichier inconsistant "
+"à la ligne %d"
 
 #: apply.c:933
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null on line %d"
-msgstr "git apply : mauvais format de git-diff - /dev/null attendu à la ligne %d"
+msgstr ""
+"git apply : mauvais format de git-diff - /dev/null attendu à la ligne %d"
 
 #: apply.c:962
 #, c-format
@@ -964,15 +1032,24 @@
 
 #: apply.c:1371
 #, c-format
-msgid "git diff header lacks filename information when removing %d leading pathname component (line %d)"
-msgid_plural "git diff header lacks filename information when removing %d leading pathname components (line %d)"
-msgstr[0] "information de nom de fichier manquante dans l'en-tête de git diff lors de la suppression de %d composant de préfixe de chemin (ligne %d)"
-msgstr[1] "information de nom de fichier manquante dans l'en-tête de git diff lors de la suppression de %d composants de préfixe de chemin (ligne %d)"
+msgid ""
+"git diff header lacks filename information when removing %d leading pathname "
+"component (line %d)"
+msgid_plural ""
+"git diff header lacks filename information when removing %d leading pathname "
+"components (line %d)"
+msgstr[0] ""
+"information de nom de fichier manquante dans l'en-tête de git diff lors de "
+"la suppression de %d composant de préfixe de chemin (ligne %d)"
+msgstr[1] ""
+"information de nom de fichier manquante dans l'en-tête de git diff lors de "
+"la suppression de %d composants de préfixe de chemin (ligne %d)"
 
 #: apply.c:1384
 #, c-format
 msgid "git diff header lacks filename information (line %d)"
-msgstr "information de nom de fichier manquante dans l'en-tête de git diff (ligne %d)"
+msgstr ""
+"information de nom de fichier manquante dans l'en-tête de git diff (ligne %d)"
 
 #: apply.c:1480
 #, c-format
@@ -1071,17 +1148,22 @@
 #: apply.c:3104
 #, c-format
 msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
-msgstr "impossible d'appliquer l'inverse d'un patch binaire à '%s' sans la section inverse"
+msgstr ""
+"impossible d'appliquer l'inverse d'un patch binaire à '%s' sans la section "
+"inverse"
 
 #: apply.c:3151
 #, c-format
 msgid "cannot apply binary patch to '%s' without full index line"
-msgstr "impossible d'appliquer un patch binaire à '%s' sans la ligne complète d'index"
+msgstr ""
+"impossible d'appliquer un patch binaire à '%s' sans la ligne complète d'index"
 
 #: apply.c:3162
 #, c-format
-msgid "the patch applies to '%s' (%s), which does not match the current contents."
-msgstr "le patch s'applique à '%s' (%s), ce qui ne correspond pas au contenu actuel."
+msgid ""
+"the patch applies to '%s' (%s), which does not match the current contents."
+msgstr ""
+"le patch s'applique à '%s' (%s), ce qui ne correspond pas au contenu actuel."
 
 #: apply.c:3170
 #, c-format
@@ -1101,7 +1183,9 @@
 #: apply.c:3208
 #, c-format
 msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
-msgstr "le patch binaire sur '%s' crée un résultat incorrect (%s attendu, mais %s trouvé)"
+msgstr ""
+"le patch binaire sur '%s' crée un résultat incorrect (%s attendu, mais %s "
+"trouvé)"
 
 #: apply.c:3229
 #, c-format
@@ -1113,7 +1197,8 @@
 msgid "cannot checkout %s"
 msgstr "extraction de %s impossible"
 
-#: apply.c:3404 apply.c:3415 apply.c:3461 midx.c:98 pack-revindex.c:214 setup.c:308
+#: apply.c:3404 apply.c:3415 apply.c:3461 midx.c:98 pack-revindex.c:214
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "échec de la lecture de %s"
@@ -1140,7 +1225,8 @@
 
 #: apply.c:3571
 msgid "repository lacks the necessary blob to perform 3-way merge."
-msgstr "le dépôt n'a pas les blobs nécessaires pour effectuer une fusion à 3 points."
+msgstr ""
+"le dépôt n'a pas les blobs nécessaires pour effectuer une fusion à 3 points."
 
 #: apply.c:3574
 #, c-format
@@ -1186,7 +1272,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s est de type %o, mais %o attendu"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890 read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "chemin invalide '%s'"
@@ -1209,7 +1296,8 @@
 #: apply.c:3981
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o) of %s"
-msgstr "le nouveau mode (%o) de %s ne correspond pas à l'ancien mode (%o) de %s"
+msgstr ""
+"le nouveau mode (%o) de %s ne correspond pas à l'ancien mode (%o) de %s"
 
 #: apply.c:4001
 #, c-format
@@ -1229,7 +1317,8 @@
 #: apply.c:4112
 #, c-format
 msgid "sha1 information is lacking or useless for submodule %s"
-msgstr "l'information sha1 est manquante ou inutilisable pour le sous-module %s"
+msgstr ""
+"l'information sha1 est manquante ou inutilisable pour le sous-module %s"
 
 #: apply.c:4119
 #, c-format
@@ -1269,14 +1358,16 @@
 #: apply.c:4327
 #, c-format
 msgid "unable to create backing store for newly created file %s"
-msgstr "création du magasin de stockage pour le fichier nouvellement créé %s impossible"
+msgstr ""
+"création du magasin de stockage pour le fichier nouvellement créé %s "
+"impossible"
 
 #: apply.c:4333 apply.c:4478
 #, c-format
 msgid "unable to add cache entry for %s"
 msgstr "ajout de l'élément de cache %s impossible"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "échec de l'écriture dans '%s'"
@@ -1366,7 +1457,7 @@
 msgstr[0] "%d ligne ajoutée après correction des erreurs d'espace."
 msgstr[1] "%d lignes ajoutées après correction des erreurs d'espace."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Impossible d'écrire le nouveau fichier d'index"
 
@@ -1378,7 +1469,7 @@
 msgid "apply changes matching the given path"
 msgstr "appliquer les modifications qui correspondent au chemin donné"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "num"
 
@@ -1396,7 +1487,8 @@
 
 #: apply.c:5010
 msgid "show number of added and deleted lines in decimal notation"
-msgstr "afficher le nombre de lignes ajoutées et supprimées en notation décimale"
+msgstr ""
+"afficher le nombre de lignes ajoutées et supprimées en notation décimale"
 
 #: apply.c:5012
 msgid "instead of applying the patch, output a summary for the input"
@@ -1428,11 +1520,13 @@
 
 #: apply.c:5027
 msgid "attempt three-way merge, fall back on normal patch if that fails"
-msgstr "tenter une fusion à 3 points, revenir à un rustinage normal en cas d'échec"
+msgstr ""
+"tenter une fusion à 3 points, revenir à un rustinage normal en cas d'échec"
 
 #: apply.c:5029
 msgid "build a temporary index based on embedded index information"
-msgstr "construire un index temporaire fondé sur l'information de l'index embarqué"
+msgstr ""
+"construire un index temporaire fondé sur l'information de l'index embarqué"
 
 #: apply.c:5032 builtin/checkout-index.c:196 builtin/ls-files.c:617
 msgid "paths are separated with NUL character"
@@ -1442,14 +1536,18 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "s'assurer d'au moins <n> lignes de correspondance de contexte"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296 builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3831 builtin/rebase.c:1347
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
+#: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
+#: builtin/rebase.c:1347
 msgid "action"
 msgstr "action"
 
 #: apply.c:5036
 msgid "detect new or modified lines that have whitespace errors"
-msgstr "détecter des lignes nouvelles ou modifiées qui contiennent des erreurs d'espace"
+msgstr ""
+"détecter des lignes nouvelles ou modifiées qui contiennent des erreurs "
+"d'espace"
 
 #: apply.c:5039 apply.c:5042
 msgid "ignore changes in whitespace when finding context"
@@ -1471,20 +1569,23 @@
 msgid "allow overlapping hunks"
 msgstr "accepter les recouvrements de sections"
 
-#: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22 builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755 builtin/log.c:2295
-#: builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "mode verbeux"
 
 #: apply.c:5054
 msgid "tolerate incorrectly detected missing new-line at the end of file"
-msgstr "tolérer des erreurs de détection de retours chariot manquants en fin de fichier"
+msgstr ""
+"tolérer des erreurs de détection de retours chariot manquants en fin de "
+"fichier"
 
 #: apply.c:5057
 msgid "do not trust the line counts in the hunk headers"
 msgstr "ne pas se fier au compte de lignes dans les en-têtes de section"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "racine"
 
@@ -1526,7 +1627,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "le chemin est trop long (%d caractères, SHA1 : %s) : %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "erreur de compression (%d)"
@@ -1545,8 +1646,11 @@
 msgstr "git archive --list"
 
 #: archive.c:16
-msgid "git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
-msgstr "git archive --remote <dépôt> [--exec <commande>] [<options>] <arbre ou apparenté> [<chemin>...]"
+msgid ""
+"git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
+msgstr ""
+"git archive --remote <dépôt> [--exec <commande>] [<options>] <arbre ou "
+"apparenté> [<chemin>...]"
 
 #: archive.c:17
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
@@ -1557,12 +1661,14 @@
 msgid "cannot read %s"
 msgstr "impossible de lire %s"
 
-#: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095 sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833 builtin/merge.c:1143
+#: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "impossible de lire '%s'"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "le chemin '%s' ne correspond à aucun fichier"
@@ -1604,7 +1710,7 @@
 msgid "archive format"
 msgstr "format d'archive"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "préfixe"
 
@@ -1612,9 +1718,12 @@
 msgid "prepend prefix to each pathname in the archive"
 msgstr "préfixer chaque chemin de fichier dans l'archive"
 
-#: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888 builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
-#: builtin/fast-export.c:1207 builtin/fast-export.c:1209 builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105 builtin/ls-files.c:653
-#: builtin/ls-files.c:656 builtin/notes.c:412 builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
+#: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
+#: builtin/fast-export.c:1207 builtin/fast-export.c:1209
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
+#: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
+#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
 msgstr "fichier"
 
@@ -1642,7 +1751,9 @@
 msgid "list supported archive formats"
 msgstr "afficher les formats d'archive supportés"
 
-#: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121 builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "dépôt"
 
@@ -1650,7 +1761,8 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "récupérer l'archive depuis le dépôt distant <dépôt>"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718 builtin/notes.c:498
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
+#: builtin/notes.c:498
 msgid "command"
 msgstr "commande"
 
@@ -1672,7 +1784,8 @@
 
 #: archive.c:585
 msgid "Options --add-file and --remote cannot be used together"
-msgstr "Les options --add-file et --remote ne peuvent pas être utilisées ensemble"
+msgstr ""
+"Les options --add-file et --remote ne peuvent pas être utilisées ensemble"
 
 #: archive.c:607
 #, c-format
@@ -1763,7 +1876,8 @@
 "We continue anyway."
 msgstr ""
 "la base de fusion entre %s et [%s] doit être évitée.\n"
-"On ne peut donc pas être certain que le premier commit %s se trouve entre %s et %s.\n"
+"On ne peut donc pas être certain que le premier commit %s se trouve entre %s "
+"et %s.\n"
 "On continue tout de même."
 
 #: bisect.c:861
@@ -1831,17 +1945,24 @@
 
 #: blame.c:2811
 msgid "--reverse and --first-parent together require specified latest commit"
-msgstr "--reverse et --first-parent ensemble nécessitent la spécification d'un dernier commit"
+msgstr ""
+"--reverse et --first-parent ensemble nécessitent la spécification d'un "
+"dernier commit"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333 sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344 builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "échec de la préparation du parcours des révisions"
 
 #: blame.c:2838
-msgid "--reverse --first-parent together require range along first-parent chain"
-msgstr "--reverse --first-parent ensemble nécessitent une portée avec la chaîne de premier parent"
+msgid ""
+"--reverse --first-parent together require range along first-parent chain"
+msgstr ""
+"--reverse --first-parent ensemble nécessitent une portée avec la chaîne de "
+"premier parent"
 
 #: blame.c:2849
 #, c-format
@@ -1874,17 +1995,23 @@
 #: branch.c:93
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
-msgstr "La branche '%s' est paramétrée pour suivre la branche distante '%s' de '%s' en rebasant."
+msgstr ""
+"La branche '%s' est paramétrée pour suivre la branche distante '%s' de '%s' "
+"en rebasant."
 
 #: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
-msgstr "La branche '%s' est paramétrée pour suivre la branche distante '%s' depuis '%s'."
+msgstr ""
+"La branche '%s' est paramétrée pour suivre la branche distante '%s' depuis "
+"'%s'."
 
 #: branch.c:98
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
-msgstr "La branche '%s' est paramétrée pour suivre la branche locale '%'s en rebasant."
+msgstr ""
+"La branche '%s' est paramétrée pour suivre la branche locale '%'s en "
+"rebasant."
 
 #: branch.c:99
 #, c-format
@@ -1894,7 +2021,9 @@
 #: branch.c:104
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
-msgstr "La branche '%s' est paramétrée pour suivre la référence distante '%s' en rebasant."
+msgstr ""
+"La branche '%s' est paramétrée pour suivre la référence distante '%s' en "
+"rebasant."
 
 #: branch.c:105
 #, c-format
@@ -1904,7 +2033,9 @@
 #: branch.c:109
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
-msgstr "La branche '%s' est paramétrée pour suivre la référence locale '%s' en rebasant."
+msgstr ""
+"La branche '%s' est paramétrée pour suivre la référence locale '%s' en "
+"rebasant."
 
 #: branch.c:110
 #, c-format
@@ -1937,7 +2068,9 @@
 #: branch.c:233
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
-msgstr "Impossible de paramétrer le suivi de branche ; le point de départ '%s' n'est pas une branche."
+msgstr ""
+"Impossible de paramétrer le suivi de branche ; le point de départ '%s' n'est "
+"pas une branche."
 
 #: branch.c:235
 #, c-format
@@ -1989,117 +2122,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "la HEAD de la copie de travail %s n'est pas mise à jour"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "algorithme d'empreinte du colis inconnu : %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "capacité inconnue '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' ne semble pas être un fichier colis v2 our v3"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "en-tête non reconnu : %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385 builtin/commit.c:861
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "impossible d'ouvrir '%s'"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Le dépôt ne dispose pas des commits prérequis suivants :"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "la vérification d'un colis requiert un dépôt"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Le colis contient cette référence :"
 msgstr[1] "Le colis contient ces %d références :"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Le colis enregistre l'historique complet."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Le colis exige cette référence :"
 msgstr[1] "Le colis exige ces %d références :"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "impossible de dupliquer le descripteur de liasse"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Impossible de créer des objets groupés"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "les objets groupés ont disparu"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "la référence '%s' est exclue par les options de rev-list"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "version de colis non supportée %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "impossible d'écrire une version de colis %d avec l'algorithme %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argument non reconnu : %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Refus de créer un colis vide."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "impossible de créer '%s'"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "l'index de groupe a disparu"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "l'identifiant de terminaison de tronçon apparaît plus tôt qu'attendu"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "décalage(s) de section incorrect(s) %<PRIx64> et %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "ID de section dupliqué %<PRIx32>"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "la section finale a un id non nul %<PRIx32>"
@@ -2120,7 +2254,8 @@
 #: commit-graph.c:355
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
-msgstr "la signature du graphe de commit %X ne correspond pas à la signature %X"
+msgstr ""
+"la signature du graphe de commit %X ne correspond pas à la signature %X"
 
 #: commit-graph.c:362
 #, c-format
@@ -2130,7 +2265,9 @@
 #: commit-graph.c:369
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
-msgstr "l'empreinte de la version %X du graphe de commit ne correspond pas à la version %X"
+msgstr ""
+"l'empreinte de la version %X du graphe de commit ne correspond pas à la "
+"version %X"
 
 #: commit-graph.c:386
 #, c-format
@@ -2148,7 +2285,8 @@
 #: commit-graph.c:540
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
-msgstr "chaîne de graphe de commit invalide : la ligne '%s' n'est pas une empreinte"
+msgstr ""
+"chaîne de graphe de commit invalide : la ligne '%s' n'est pas une empreinte"
 
 #: commit-graph.c:564
 msgid "unable to find all commit-graph files"
@@ -2156,7 +2294,9 @@
 
 #: commit-graph.c:745 commit-graph.c:782
 msgid "invalid commit position. commit-graph is likely corrupt"
-msgstr "position de commit invalide. Le graphe de commit est vraisemblablement corrompu"
+msgstr ""
+"position de commit invalide. Le graphe de commit est vraisemblablement "
+"corrompu"
 
 #: commit-graph.c:766
 #, c-format
@@ -2165,14 +2305,16 @@
 
 #: commit-graph.c:799
 msgid "commit-graph requires overflow generation data but has none"
-msgstr "le graphe de commits requiert des données de génération de débordement mais n'en contient pas"
+msgstr ""
+"le graphe de commits requiert des données de génération de débordement mais "
+"n'en contient pas"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "impossible d'analyser le commit %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "impossible d'obtenir le type de l'objet %s"
@@ -2224,7 +2366,8 @@
 
 #: commit-graph.c:1714
 msgid "Finding commits for commit graph among packed objects"
-msgstr "Recherche de commits pour un graphe de commits parmi les objets empaquetés"
+msgstr ""
+"Recherche de commits pour un graphe de commits parmi les objets empaquetés"
 
 #: commit-graph.c:1732
 msgid "Finding extra edges in commit graph"
@@ -2234,7 +2377,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "échec à l'écriture le nombre correct d'id de base de fusion"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "impossible de créer les répertoires de premier niveau de %s"
@@ -2277,81 +2420,103 @@
 
 #: commit-graph.c:2244
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
-msgstr "essai d'écriture de graphe de commits, mais 'core.commitGraph' est désactivé"
+msgstr ""
+"essai d'écriture de graphe de commits, mais 'core.commitGraph' est désactivé"
 
 #: commit-graph.c:2351
 msgid "too many commits to write graph"
 msgstr "trop de commits pour écrire un graphe"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
-msgstr "le graphe de commit a une somme de contrôle incorrecte et est vraisemblablement corrompu"
+msgstr ""
+"le graphe de commit a une somme de contrôle incorrecte et est "
+"vraisemblablement corrompu"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "le graphe de commit a un ordre d'OID incorrect : %s puis %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
-msgstr "le graphe de commit a une valeur de dispersion incorrecte : dispersion[%d] = %u != %u"
+msgstr ""
+"le graphe de commit a une valeur de dispersion incorrecte : dispersion[%d] = "
+"%u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "échec de l'analyse le commit %s depuis le graphe de commits"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Verification des commits dans le graphe de commits"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
-msgstr "échec de l'analyse du commit %s depuis la base de données d'objets pour le graphe de commit"
+msgstr ""
+"échec de l'analyse du commit %s depuis la base de données d'objets pour le "
+"graphe de commit"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
-msgstr "l'OID de l'arbre racine pour le commit %s dans le graphe de commit est %s != %s"
+msgstr ""
+"l'OID de l'arbre racine pour le commit %s dans le graphe de commit est %s != "
+"%s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
-msgstr "la liste des parents du graphe de commit pour le commit %s est trop longue"
+msgstr ""
+"la liste des parents du graphe de commit pour le commit %s est trop longue"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "le parent du graphe de commit pour %s est %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
-msgstr "la liste de parents du graphe de commit pour le commit %s se termine trop tôt"
+msgstr ""
+"la liste de parents du graphe de commit pour le commit %s se termine trop tôt"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
-msgid "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
-msgstr "le graphe de commit a un numéro de génération nul pour le commit %s, mais non-nul ailleurs"
+msgid ""
+"commit-graph has generation number zero for commit %s, but non-zero elsewhere"
+msgstr ""
+"le graphe de commit a un numéro de génération nul pour le commit %s, mais "
+"non-nul ailleurs"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
-msgid "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
-msgstr "le graphe de commit a un numéro de génération non-nul pour le commit %s, mais nul ailleurs"
+msgid ""
+"commit-graph has non-zero generation number for commit %s, but zero elsewhere"
+msgstr ""
+"le graphe de commit a un numéro de génération non-nul pour le commit %s, "
+"mais nul ailleurs"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
-msgstr "la génération du graphe de commit pour le commit %s est %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+"la génération du graphe de commit pour le commit %s est %<PRIuMAX> < "
+"%<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
-msgstr "la date de validation pour le commit %s dans le graphe de commit est %<PRIuMAX> != %<PRIuMAX>"
+msgstr ""
+"la date de validation pour le commit %s dans le graphe de commit est "
+"%<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416 builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "impossible d'analyser %s"
@@ -2408,8 +2573,10 @@
 "variable i18n.commitencoding to the encoding your project uses.\n"
 msgstr ""
 "Avertissement : le message de validation ne se conforme pas à UTF-8.\n"
-"Vous souhaitez peut-être le modifier après correction du message ou régler la\n"
-"variable de configuration i18n.commitencoding à l'encodage utilisé par votre projet.\n"
+"Vous souhaitez peut-être le modifier après correction du message ou régler "
+"la\n"
+"variable de configuration i18n.commitencoding à l'encodage utilisé par votre "
+"projet.\n"
 
 #: compat/obstack.c:406 compat/obstack.c:408
 msgid "memory exhausted"
@@ -2441,7 +2608,9 @@
 
 #: config.c:199
 msgid "relative config include conditionals must come from files"
-msgstr "les conditions d'inclusion de configuration relative doivent venir de fichiers"
+msgstr ""
+"les conditions d'inclusion de configuration relative doivent venir de "
+"fichiers"
 
 #: config.c:396
 #, c-format
@@ -2558,32 +2727,43 @@
 #: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob %s : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob "
+"%s : %s"
 
 #: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans le fichier %s : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans le fichier "
+"%s : %s"
 
 #: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans l'entrée standard : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans l'entrée "
+"standard : %s"
 
 #: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob de sous-module %s : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob de "
+"sous-module %s : %s"
 
 #: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans la ligne de commande %s : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans la ligne de "
+"commande %s : %s"
 
 #: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
-msgstr "valeur numérique de configuration incorrecte '%s' pour '%s' dans %s : %s"
+msgstr ""
+"valeur numérique de configuration incorrecte '%s' pour '%s' dans %s : %s"
 
 #: config.c:1257
 #, c-format
@@ -2633,7 +2813,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "doit être parmi nothing, matching, simple, upstream ou current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "niveau de compression du paquet %d"
@@ -2653,110 +2833,114 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "impossible de résoudre le blob de config '%s'"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "échec de l'analyse de %s"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "lecture de la configuration de ligne de commande impossible"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "erreur inconnue pendant la lecture des fichiers de configuration"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s invalide : '%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
-msgstr "la valeur '%d' de splitIndex.maxPercentChange devrait se situer entre 0 et 100"
+msgstr ""
+"la valeur '%d' de splitIndex.maxPercentChange devrait se situer entre 0 et "
+"100"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
-msgstr "impossible d'analyser '%s' depuis le configuration en ligne de commande"
+msgstr ""
+"impossible d'analyser '%s' depuis le configuration en ligne de commande"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
-msgstr "variable de configuration '%s' incorrecte dans le fichier '%s' à la ligne %d"
+msgstr ""
+"variable de configuration '%s' incorrecte dans le fichier '%s' à la ligne %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nom de section invalide '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s a des valeurs multiples"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "impossible d'écrire le fichier de configuration %s"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "impossible de verrouiller le fichier de configuration %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "ouverture de %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "motif invalide : %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "fichier de configuration invalide %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "échec de fstat sur %s"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "impossible de réaliser un map de '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "impossible de réaliser un mmap de '%s'%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "échec de chmod sur %s"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "impossible d'écrire le fichier de configuration %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "impossible de régler '%s' à '%s'"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "impossible de désinitialiser '%s'"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "nom de section invalide : %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "valeur manquante pour '%s'"
@@ -2906,11 +3090,14 @@
 
 #: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
-msgstr "aucun chemin spécifié ; référez-vous à 'git help pull' pour une syntaxe d'URL valide"
+msgstr ""
+"aucun chemin spécifié ; référez-vous à 'git help pull' pour une syntaxe "
+"d'URL valide"
 
 #: connect.c:1190
 msgid "newline is forbidden in git:// hosts and repo paths"
-msgstr "le retour chariot est interdit dans les hôtes git:// et les chemins de dépôt"
+msgstr ""
+"le retour chariot est interdit dans les hôtes git:// et les chemins de dépôt"
 
 #: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
@@ -2933,7 +3120,7 @@
 msgid "unable to fork"
 msgstr "fork impossible"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Vérification de la connectivité"
 
@@ -2989,8 +3176,12 @@
 
 #: convert.c:280
 #, c-format
-msgid "The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as working-tree-encoding."
-msgstr "Le fichier '%s' contient un marqueur d'ordre d'octets (BOM). Veuillez utiliser UTF-%.*s comme encodage d'arbre de travail."
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
+"working-tree-encoding."
+msgstr ""
+"Le fichier '%s' contient un marqueur d'ordre d'octets (BOM). Veuillez "
+"utiliser UTF-%.*s comme encodage d'arbre de travail."
 
 #: convert.c:293
 #, c-format
@@ -2999,9 +3190,13 @@
 
 #: convert.c:295
 #, c-format
-msgid "The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-%sLE (depending on the byte order) as working-tree-encoding."
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
 msgstr ""
-"Il manque un marqueur d'ordre d'octets (BOM) au fichier '%s'. Veuillez utiliser UTF-%sBE ou UTF-%sLE (selon l'ordre désiré) comme encodage d'arbre de travail."
+"Il manque un marqueur d'ordre d'octets (BOM) au fichier '%s'. Veuillez "
+"utiliser UTF-%sBE ou UTF-%sLE (selon l'ordre désiré) comme encodage d'arbre "
+"de travail."
 
 #: convert.c:408 convert.c:479
 #, c-format
@@ -3011,7 +3206,9 @@
 #: convert.c:451
 #, c-format
 msgid "encoding '%s' from %s to %s and back is not the same"
-msgstr "encoder '%s' depuis %s vers %s puis inversement ne produit pas le même contenu"
+msgstr ""
+"encoder '%s' depuis %s vers %s puis inversement ne produit pas le même "
+"contenu"
 
 #: convert.c:654
 #, c-format
@@ -3046,21 +3243,25 @@
 msgid "path name too long for external filter"
 msgstr "nom de chemin trop long pour un filtre externe"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
-msgid "external filter '%s' is not available anymore although not all paths have been filtered"
-msgstr "le filtre externe '%s' n'est plus disponible bien que tous les chemins n'aient pas été filtrés"
+msgid ""
+"external filter '%s' is not available anymore although not all paths have "
+"been filtered"
+msgstr ""
+"le filtre externe '%s' n'est plus disponible bien que tous les chemins "
+"n'aient pas été filtrés"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false ne sont pas des encodages d'arbre de travail valides"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s : le filtre clean '%s' a échoué"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s : le filtre smudge '%s' a échoué"
@@ -3068,7 +3269,9 @@
 #: credential.c:96
 #, c-format
 msgid "skipping credential lookup for key: credential.%s"
-msgstr "vérification des informations d'identification sautée pour la clé : credential.%s"
+msgstr ""
+"vérification des informations d'identification sautée pour la clé : "
+"credential.%s"
 
 #: credential.c:112
 msgid "refusing to work with credential missing host field"
@@ -3076,7 +3279,8 @@
 
 #: credential.c:114
 msgid "refusing to work with credential missing protocol field"
-msgstr "refus de travailler avec un champ protocol manquant dans l'identification"
+msgstr ""
+"refus de travailler avec un champ protocol manquant dans l'identification"
 
 #: credential.c:394
 #, c-format
@@ -3178,50 +3382,57 @@
 #: delta-islands.c:390
 #, c-format
 msgid "island regex from config has too many capture groups (max=%d)"
-msgstr "l'expression rationnelle depuis la configuration a trop de groupes de capture (max=%d)"
+msgstr ""
+"l'expression rationnelle depuis la configuration a trop de groupes de "
+"capture (max=%d)"
 
 #: delta-islands.c:467
 #, c-format
 msgid "Marked %d islands, done.\n"
 msgstr "Marquage de %d îlots, fait.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "valeur inconnue pour --diff-merges : %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base ne fonctionne pas avec des plages"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base ne fonctionne qu'avec des commits"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "impossible d'acquérir HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "aucune base de fusion trouvée"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "bases multiples de fusion trouvées"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<options>] <chemin> <chemin>"
 
-#: diff-no-index.c:263
-msgid "Not a git repository. Use --no-index to compare two paths outside a working tree"
-msgstr "Pas un dépôt git. Utilisez --no-index pour comparer deux chemins hors d'un arbre de travail"
+#: diff-no-index.c:262
+msgid ""
+"Not a git repository. Use --no-index to compare two paths outside a working "
+"tree"
+msgstr ""
+"Pas un dépôt git. Utilisez --no-index pour comparer deux chemins hors d'un "
+"arbre de travail"
 
 #: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
-msgstr "  Impossible d'analyser le pourcentage de modification de dirstat '%s'\n"
+msgstr ""
+"  Impossible d'analyser le pourcentage de modification de dirstat '%s'\n"
 
 #: diff.c:161
 #, c-format
@@ -3229,24 +3440,36 @@
 msgstr "  Paramètre dirstat inconnu '%s'\n"
 
 #: diff.c:297
-msgid "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', 'dimmed-zebra', 'plain'"
-msgstr "le paramètre de couleur de déplacement doit être parmi 'no', 'default', 'blocks', 'zebra', 'dimmed_zebra' ou 'plain'"
+msgid ""
+"color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
+"'dimmed-zebra', 'plain'"
+msgstr ""
+"le paramètre de couleur de déplacement doit être parmi 'no', 'default', "
+"'blocks', 'zebra', 'dimmed-zebra' ou 'plain'"
 
 #: diff.c:325
 #, c-format
-msgid "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"
+msgid ""
+"unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
+"'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"
 msgstr ""
-"mode unknown color-moved-ws inconnu '%s', les valeurs possibles sont 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-"
+"mode unknown color-moved-ws inconnu '%s', les valeurs possibles sont 'ignore-"
+"space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-"
 "change'"
 
 #: diff.c:333
-msgid "color-moved-ws: allow-indentation-change cannot be combined with other whitespace modes"
-msgstr "color-moved-ws : allow-indentation-change ne peut pas être combiné avec d'autres modes d'espace"
+msgid ""
+"color-moved-ws: allow-indentation-change cannot be combined with other "
+"whitespace modes"
+msgstr ""
+"color-moved-ws : allow-indentation-change ne peut pas être combiné avec "
+"d'autres modes d'espace"
 
 #: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
-msgstr "Valeur inconnue pour la variable de configuration 'diff.submodule' : '%s'"
+msgstr ""
+"Valeur inconnue pour la variable de configuration 'diff.submodule' : '%s'"
 
 #: diff.c:470
 #, c-format
@@ -3257,34 +3480,50 @@
 "Erreurs dans la variable de configuration 'diff.dirstat' :\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "l'application de diff externe a disparu, arrêt à %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check et -s sont mutuellement exclusifs"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S et --find-object sont mutuellement exclusifs"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G et --pickaxe-regex sont mutuellement exclusifs, utilisez --pickaxe-regex "
+"avec -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all et  --find-object sont mutuellement exclusifs, utilisez --"
+"pickaxe-all avec -G et -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow a besoin d'une spécification de chemin unique"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valeur invalide de --stat : %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308 parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
+#: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s attend une valeur numérique"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3293,504 +3532,567 @@
 "Impossible d'analyser le paramètre de l'option --dirstat/-X :\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
-msgstr "classe de modification inconnue '%c' dans --diff-fileter=%s"
+msgstr "classe de modification inconnue '%c' dans --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valeur inconnue après ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "impossible de résoudre '%s'"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "forme <n>/<m> attendue par %s"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "caractère attendu par %s, '%s' trouvé"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mauvais argument --color-moved : %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "mode invalide '%s' dans --color-moved-ws"
 
-#: diff.c:5068
-msgid "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and \"histogram\""
-msgstr "l'option diff-algorithm accept \"myers\", \"minimal\", \"patience\" et \"histogram\""
+#: diff.c:5078
+msgid ""
+"option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
+"\"histogram\""
+msgstr ""
+"l'option diff-algorithm accept \"myers\", \"minimal\", \"patience\" et "
+"\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argument invalide pour %s"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "regex invalide fournie à -I : '%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "échec de l'analyse du paramètre de l'option --submodule : '%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mauvais argument pour --word-diff : %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Options de format de sortie de diff"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "générer la rustine"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "supprimer la sortie des différences"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "générer les diffs avec <n> lignes de contexte"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "générer le diff en format brut"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "synonyme de '-p --raw'"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "synonyme de '-p --stat'"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "--stat pour traitement automatique"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "afficher seulement la dernière ligne de --stat"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5402
-msgid "output the distribution of relative amount of changes for each sub-directory"
-msgstr "afficher la distribution des quantités de modifications relatives pour chaque sous-répertoire"
+#: diff.c:5412
+msgid ""
+"output the distribution of relative amount of changes for each sub-directory"
+msgstr ""
+"afficher la distribution des quantités de modifications relatives pour "
+"chaque sous-répertoire"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonyme pour --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonyme pour --dirstat=files,param1,param2..."
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
-msgstr "avertir si les modifications introduisent des marqueurs de conflit ou des erreurs d'espace"
+msgstr ""
+"avertir si les modifications introduisent des marqueurs de conflit ou des "
+"erreurs d'espace"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
-msgstr "résumé succinct tel que les créations, les renommages et les modifications de mode"
+msgstr ""
+"résumé succinct tel que les créations, les renommages et les modifications "
+"de mode"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "n'afficher que les noms de fichiers modifiés"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "n'afficher que les noms et les status des fichiers modifiés"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<largeur>[,<largeur-de-nom>[,<compte>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "générer un diffstat"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<largeur>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "générer un diffstat avec la largeur indiquée"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "génerer un diffstat avec la largeur de nom indiquée"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "génerer un diffstat avec la largeur de graphe indiquée"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<compte>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "générer un diffstat avec des lignes limitées"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "générer une résumé compact dans le diffstat"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "produire un diff binaire qui peut être appliqué"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
-msgstr "afficher les noms complets des objets pre- et post-image sur les lignes \"index\""
+msgstr ""
+"afficher les noms complets des objets pre- et post-image sur les lignes "
+"\"index\""
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "afficher un diff coloré"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<sorte>"
 
-#: diff.c:5451
-msgid "highlight whitespace errors in the 'context', 'old' or 'new' lines in the diff"
-msgstr "surligner les erreurs d'espace dans les lignes 'contexte', 'ancien', 'nouveau' dans le diff"
+#: diff.c:5461
+msgid ""
+"highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
+"diff"
+msgstr ""
+"surligner les erreurs d'espace dans les lignes 'contexte', 'ancien', "
+"'nouveau' dans le diff"
 
-#: diff.c:5454
-msgid "do not munge pathnames and use NULs as output field terminators in --raw or --numstat"
-msgstr "ne pas compresser les chemins et utiliser des NULs comme terminateurs de champs dans --raw ou --numstat"
+#: diff.c:5464
+msgid ""
+"do not munge pathnames and use NULs as output field terminators in --raw or "
+"--numstat"
+msgstr ""
+"ne pas compresser les chemins et utiliser des NULs comme terminateurs de "
+"champs dans --raw ou --numstat"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<préfixe>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "afficher le préfixe de source indiqué au lieu de \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "afficher le préfixe de destination indiqué au lieu de \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "préfixer toutes les lignes en sortie avec la chaîne indiquée"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "n'afficher aucun préfixe, ni de source, ni de destination"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
-msgstr "afficher le contexte entre les sections à concurrence du nombre de ligne indiqué"
+msgstr ""
+"afficher le contexte entre les sections à concurrence du nombre de ligne "
+"indiqué"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<caractère>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "spécifier le caractère pour indiquer une nouvelle ligne au lieu de '+'"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "spécifier le caractère pour indiquer une ancienne ligne au lieu de '-'"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
-msgstr "spécifier le caractère pour indiquer une ligne de contexte au lieu de ' '"
+msgstr ""
+"spécifier le caractère pour indiquer une ligne de contexte au lieu de ' '"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Options de renommage de diff"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
-msgstr "casser les modifications d'une réécrire complète en paires de suppression et création"
+msgstr ""
+"casser les modifications d'une réécrire complète en paires de suppression et "
+"création"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "détecter les renommages"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "supprimer la pré-image pour les suppressions"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "détecter les copies"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
-msgstr "utiliser les fichiers non-modifiés comme sources pour trouver des copies"
+msgstr ""
+"utiliser les fichiers non-modifiés comme sources pour trouver des copies"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "désactiver la détection de renommage"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "utiliser des blobs vides comme source de renommage"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "continuer à afficher l'historique d'un fichier au delà des renommages"
 
-#: diff.c:5515
-msgid "prevent rename/copy detection if the number of rename/copy targets exceeds given limit"
-msgstr "empêcher la détection de renommage/copie si le nombre de cibles de renommage/copie excède la limite indiquée"
+#: diff.c:5525
+msgid ""
+"prevent rename/copy detection if the number of rename/copy targets exceeds "
+"given limit"
+msgstr ""
+"empêcher la détection de renommage/copie si le nombre de cibles de renommage/"
+"copie excède la limite indiquée"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Options de l'algorithme de diff"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "produire le diff le plus petit possible"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorer les espaces lors de la comparaison de ligne"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorer des modifications du nombre d'espaces"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorer des modifications d'espace en fin de ligne"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "ignore le retour chariot en fin de ligne"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorer les modifications dont les lignes sont vides"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignorer les modifications dont les lignes correspondent à <regex>"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
-msgstr "heuristique qui déplace les limites de sections de diff pour faciliter la lecture"
+msgstr ""
+"heuristique qui déplace les limites de sections de diff pour faciliter la "
+"lecture"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"patience\""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
-msgstr "générer un diff en utilisant l'algorithme de différence \"histogramme\""
+msgstr ""
+"générer un diff en utilisant l'algorithme de différence \"histogramme\""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<algorithme>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "choisir un algorithme de différence"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<texte>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"ancré\""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<mode>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
-msgstr "afficher des différences par mot, en utilisant <mode> pour délimiter les mots modifiés"
+msgstr ""
+"afficher des différences par mot, en utilisant <mode> pour délimiter les "
+"mots modifiés"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "utiliser <regex> pour décider ce qu'est un mot"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "équivalent à --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "les lignes déplacées sont colorées différemment"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "comment les espaces sont ignorés dans --color-moved"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Autres options diff"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
-msgstr "lancé depuis un sous-répertoire, exclure les modifications en dehors et afficher les chemins relatifs"
+msgstr ""
+"lancé depuis un sous-répertoire, exclure les modifications en dehors et "
+"afficher les chemins relatifs"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "traiter les fichiers comme texte"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "échanger les entrées, inverser le diff"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "sortir un code d'erreur 1 s'il y avait de différences, 0 sinon"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "désactiver tous les affichages du programme"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "autoriser l'exécution d'un assistant externe de diff"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
-msgstr "lancer les filtres externes de conversion en texte lors de la comparaison de fichiers binaires"
+msgstr ""
+"lancer les filtres externes de conversion en texte lors de la comparaison de "
+"fichiers binaires"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<quand>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
-msgstr "ignorer les modifications dans les sous-modules lors de la génération de diff"
+msgstr ""
+"ignorer les modifications dans les sous-modules lors de la génération de diff"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "spécifier comment les différences dans les sous-modules sont affichées"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "masquer les entrées 'git add -N' de l'index"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "traiter les entrées 'git add -N' comme réelles dans l'index"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<chaîne>"
 
-#: diff.c:5604
-msgid "look for differences that change the number of occurrences of the specified string"
-msgstr "rechercher les différences qui modifient le nombre d'occurrences de la chaîne spécifiée"
+#: diff.c:5614
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"string"
+msgstr ""
+"rechercher les différences qui modifient le nombre d'occurrences de la "
+"chaîne spécifiée"
 
-#: diff.c:5607
-msgid "look for differences that change the number of occurrences of the specified regex"
-msgstr "rechercher les différences qui modifient le nombre d'occurrences de la regex spécifiée"
+#: diff.c:5617
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"regex"
+msgstr ""
+"rechercher les différences qui modifient le nombre d'occurrences de la regex "
+"spécifiée"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
-msgstr "afficher toutes les modifications dans l'ensemble de modifications avec -S ou -G"
+msgstr ""
+"afficher toutes les modifications dans l'ensemble de modifications avec -S "
+"ou -G"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
-msgstr "traiter <chaîne> dans -S comme une expression rationnelle POSIX étendue"
+msgstr ""
+"traiter <chaîne> dans -S comme une expression rationnelle POSIX étendue"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "contrôler l'ordre dans lequel les fichiers apparaissent dans la sortie"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<chemin>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "afficher la modification dans le chemin spécifié en premier"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "sauter la sortie pour le chemin spécifié"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<id-objet>"
 
-#: diff.c:5624
-msgid "look for differences that change the number of occurrences of the specified object"
-msgstr "rechercher les différences qui modifient le nombre d'occurrences de l'objet indiqué"
+#: diff.c:5634
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"object"
+msgstr ""
+"rechercher les différences qui modifient le nombre d'occurrences de l'objet "
+"indiqué"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "sélectionner les fichiers par types de diff"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<fichier>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Sortie vers un fichier spécifié"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
-msgstr "détection de renommage inexact annulée à cause d'un trop grand nombre de fichiers."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr ""
+"détection exhaustive de renommage annulée à cause d'un trop grand nombre de "
+"fichiers."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
-msgstr "recherche uniquement des copies par modification de chemin à cause d'un trop grand nombre de fichiers."
+msgstr ""
+"recherche uniquement des copies par modification de chemin à cause d'un trop "
+"grand nombre de fichiers."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
-msgid "you may want to set your %s variable to at least %d and retry the command."
-msgstr "vous souhaitez peut-être régler la variable %s à au moins %d et réessayer le commande."
+msgid ""
+"you may want to set your %s variable to at least %d and retry the command."
+msgstr ""
+"vous souhaitez peut-être régler la variable %s à au moins %d et réessayer le "
+"commande."
 
 #: diffcore-order.c:24
 #, c-format
 msgid "failed to read orderfile '%s'"
 msgstr "impossible de lire le fichier de commande '%s'"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Détection de renommage inexact en cours"
 
@@ -3799,59 +4101,62 @@
 msgid "No such path '%s' in the diff"
 msgstr "Pas de chemin '%s' dans la diff"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
-msgstr "le spécificateur de chemin '%s' ne correspond à aucun fichier connu de git"
+msgstr ""
+"le spécificateur de chemin '%s' ne correspond à aucun fichier connu de git"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "motif non reconnu : '%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "motif négatif non reconnu : '%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
-msgstr "votre fichier d'extraction partielle pourrait présenter des problèmes : le motif '%s' est répété"
+msgstr ""
+"votre fichier d'extraction partielle pourrait présenter des problèmes : le "
+"motif '%s' est répété"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "désactivation de la correspondance de motif de cone"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "impossible d'utiliser %s comme fichier d'exclusion"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "impossible d'ouvrir le répertoire '%s'"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "echec de l'obtention d'information de kernel"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "le cache non suivi est désactivé sur ce système ou sur cet endroit"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "fichier d'index corrompu dans le dépôt %s"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "impossible de créer les répertoires pour %s"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "impossible de migrer le répertoire git de '%s' vers '%s'"
@@ -3859,13 +4164,15 @@
 #: editor.c:74
 #, c-format
 msgid "hint: Waiting for your editor to close the file...%c"
-msgstr "suggestion : en attente de la fermeture du fichier par votre éditeur de texte…%c"
+msgstr ""
+"suggestion : en attente de la fermeture du fichier par votre éditeur de "
+"texte…%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Filtrage du contenu"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "impossible de stat le fichier '%s'"
@@ -3875,7 +4182,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "espaces de nom de Git \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "impossible de régler GIT_DIR à '%s'"
@@ -3891,7 +4198,8 @@
 
 #: fetch-pack.c:185
 msgid "git fetch-pack: expected a flush packet after shallow list"
-msgstr "git fetch-pack : paquet de vidage attendu après une liste superficielle"
+msgstr ""
+"git fetch-pack : paquet de vidage attendu après une liste superficielle"
 
 #: fetch-pack.c:196
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
@@ -4004,8 +4312,10 @@
 msgid "Server version is %.*s"
 msgstr "La version du serveur est %.*s"
 
-#: fetch-pack.c:1027 fetch-pack.c:1033 fetch-pack.c:1036 fetch-pack.c:1042 fetch-pack.c:1046 fetch-pack.c:1050 fetch-pack.c:1054 fetch-pack.c:1058
-#: fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070 fetch-pack.c:1074 fetch-pack.c:1080 fetch-pack.c:1086 fetch-pack.c:1091 fetch-pack.c:1096
+#: fetch-pack.c:1027 fetch-pack.c:1033 fetch-pack.c:1036 fetch-pack.c:1042
+#: fetch-pack.c:1046 fetch-pack.c:1050 fetch-pack.c:1054 fetch-pack.c:1058
+#: fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070 fetch-pack.c:1074
+#: fetch-pack.c:1080 fetch-pack.c:1086 fetch-pack.c:1091 fetch-pack.c:1096
 #, c-format
 msgid "Server supports %s"
 msgstr "Le serveur supporte %s"
@@ -4038,7 +4348,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "le dépôt source est superficiel, clonage rejeté."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack : échec de le récupération."
 
@@ -4060,7 +4370,7 @@
 msgid "Server supports filter"
 msgstr "Le serveur supporte filter"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "impossible d'écrire la requête sur le distant"
 
@@ -4116,24 +4426,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack : paquet de fin de réponse attendu"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "pas de HEAD distante correspondante"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "le serveur distant n'a pas envoyé tous les objets nécessaires"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "'ready' inattendu depuis le distant"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "référence distante inconnue %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Le serveur n'autorise pas de requête pour l'objet %s non annoncé"
@@ -4153,24 +4463,29 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr "couleur invalide '%.*s' ignorée dans log.graphColors"
 
 #: grep.c:531
-msgid "given pattern contains NULL byte (via -f <file>). This is only supported with -P under PCRE v2"
-msgstr "le motif fourni contient des octets NUL (via -f <fichier>). Ce n'est supporté qu'avec -P avec PCRE v2"
+msgid ""
+"given pattern contains NULL byte (via -f <file>). This is only supported "
+"with -P under PCRE v2"
+msgstr ""
+"le motif fourni contient des octets NUL (via -f <fichier>). Ce n'est "
+"supporté qu'avec -P avec PCRE v2"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s' : lecture de %s impossible"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90 builtin/rm.c:136
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "échec du stat de '%s'"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s' : lecture tronquée"
@@ -4181,7 +4496,8 @@
 
 #: help.c:24
 msgid "work on the current change (see also: git help everyday)"
-msgstr "travailler sur la modification actuelle (voir aussi : git help revisions)"
+msgstr ""
+"travailler sur la modification actuelle (voir aussi : git help revisions)"
 
 #: help.c:25
 msgid "examine the history and state (see also: git help revisions)"
@@ -4251,7 +4567,9 @@
 
 #: help.c:429
 msgid "See 'git help <command>' to read about a specific subcommand"
-msgstr "Référez-vous à 'git help <commande>' pour des informations sur une sous-commande spécifique"
+msgstr ""
+"Référez-vous à 'git help <commande>' pour des informations sur une sous-"
+"commande spécifique"
 
 #: help.c:434
 msgid "External commands"
@@ -4282,7 +4600,8 @@
 #: help.c:613
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
-msgstr "ATTENTION : vous avez invoqué une commande Git nommée '%s' qui n'existe pas."
+msgstr ""
+"ATTENTION : vous avez invoqué une commande Git nommée '%s' qui n'existe pas."
 
 #: help.c:618
 #, c-format
@@ -4292,7 +4611,8 @@
 #: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
-msgstr "Continuons dans %0.1f secondes en supposant que vous avez voulu dire '%s'."
+msgstr ""
+"Continuons dans %0.1f secondes en supposant que vous avez voulu dire '%s'."
 
 #: help.c:635
 msgid ""
@@ -4408,7 +4728,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "'%s' pour 'object:type=<type>' n'est pas un type d'objet valide"
 
 #: list-objects-filter-options.c:124
@@ -4419,7 +4739,8 @@
 #: list-objects-filter-options.c:140
 #, c-format
 msgid "must escape char in sub-filter-spec: '%c'"
-msgstr "le caractère doit être échappé dans le spécificateur de sous-filtre : '%c'"
+msgstr ""
+"le caractère doit être échappé dans le spécificateur de sous-filtre : '%c'"
 
 #: list-objects-filter-options.c:182
 msgid "expected something after combine:"
@@ -4431,7 +4752,9 @@
 
 #: list-objects-filter-options.c:376
 msgid "unable to upgrade repository format to support partial clone"
-msgstr "impossible de mettre à jour le format de dépôt pour supporter les clones partiels"
+msgstr ""
+"impossible de mettre à jour le format de dépôt pour supporter les clones "
+"partiels"
 
 #: list-objects-filter.c:532
 #, c-format
@@ -4446,14 +4769,16 @@
 #: list-objects.c:127
 #, c-format
 msgid "entry '%s' in tree %s has tree mode, but is not a tree"
-msgstr "l'entrée '%s' dans l'arbre %s a un mode d'arbre, mais n'est pas un arbre"
+msgstr ""
+"l'entrée '%s' dans l'arbre %s a un mode d'arbre, mais n'est pas un arbre"
 
 #: list-objects.c:140
 #, c-format
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
-msgstr "l'entrée '%s' dans l'arbre %s a un mode de blob, mais n'est pas un blob"
+msgstr ""
+"l'entrée '%s' dans l'arbre %s a un mode de blob, mais n'est pas un blob"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "impossible de charger l'arbre racine pour le commit %s"
@@ -4500,41 +4825,44 @@
 msgid "bad action '%s' for '%s'"
 msgstr "action invalide '%s' pour '%s'"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Échec de la fusion du sous-module %s (non extrait)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Échec de fusion du sous-module %s (commits non présents)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
-msgstr "Échec de la fusion du sous-module %s (les commits ne descendent pas de la base de fusion)"
+msgstr ""
+"Échec de la fusion du sous-module %s (les commits ne descendent pas de la "
+"base de fusion)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Note : Avance rapide du sous-module %s à %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "Échec de la fusion du sous-module %s"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
 "%s\n"
 msgstr ""
-"Échec de fusion du sous-module %s mais une résolution possible de fusion existe :\n"
+"Échec de fusion du sous-module %s mais une résolution possible de fusion "
+"existe :\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4551,412 +4879,504 @@
 "\n"
 "qui acceptera cette suggestion.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
 "%s"
 msgstr ""
-"Échec de fusion du sous-module %s mais de multiples solutions de fusion existent :\n"
+"Échec de fusion du sous-module %s mais de multiples solutions de fusion "
+"existent :\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Échec à l'exécution de la fusion interne"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Impossible d'ajouter %s à la base de données"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Fusion automatique de %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
-#, c-format
-msgid "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of implicit directory rename(s) putting the following path(s) there: %s."
-msgstr "CONFLIT (renommage implicite de répertoire) : le répertoire/fichier %s gêne des renommages implicites de répertoire déplaçant les chemins suivants : %s."
-
-#: merge-ort.c:1576 merge-recursive.c:2132
-#, c-format
-msgid "CONFLICT (implicit dir rename): Cannot map more than one path to %s; implicit directory renames tried to put these paths there: %s"
-msgstr "CONFLIT (renommage implicite de répertoire) : impossible de transformer plusieurs chemins sur %s ; les chemins concernés sont : %s"
-
-#: merge-ort.c:1634
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
-"CONFLICT (directory rename split): Unclear where to rename %s to; it was renamed to multiple other directories, with no destination getting a majority of the "
-"files."
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
 msgstr ""
-"CONFLIT (renommage de répertoire coupé) : le renommage de %s n'est pas clair parce que le répertoire a été renommé en plusieurs autres répertoires, sans aucune "
-"destination récupérant la majorité des fichiers."
+"CONFLIT (renommage implicite de répertoire) : le répertoire/fichier %s gêne "
+"des renommages implicites de répertoire déplaçant les chemins suivants : %s."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
-msgid "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was renamed."
-msgstr "AVERTISSEMENT : ne renomme pas %s->%s dans %s, parce que %s lui-même a été renommé."
-
-#: merge-ort.c:1932 merge-recursive.c:3244
-#, c-format
-msgid "Path updated: %s added in %s inside a directory that was renamed in %s; moving it to %s."
-msgstr "Chemin mis à jour : %s ajouté dans %s dans un répertoire qui a été renommé en %s ; déplacé dans %s."
-
-#: merge-ort.c:1939 merge-recursive.c:3251
-#, c-format
-msgid "Path updated: %s renamed to %s in %s, inside a directory that was renamed in %s; moving it to %s."
-msgstr "Chemin mis à jour : %s renommé en %s dans %s, dans un répertoire qui a été renommé en %s ; déplacé dans %s."
-
-#: merge-ort.c:1952 merge-recursive.c:3247
-#, c-format
-msgid "CONFLICT (file location): %s added in %s inside a directory that was renamed in %s, suggesting it should perhaps be moved to %s."
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
 msgstr ""
-"CONFLIT (localisation de fichier) : %s ajouté dans %s dans un répertoire qui a été renommé dans %s, ce qui suggère qu'il devrait peut-être être déplacé vers %s."
+"CONFLIT (renommage implicite de répertoire) : impossible de transformer "
+"plusieurs chemins sur %s ; les chemins concernés sont : %s"
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2087
 #, c-format
-msgid "CONFLICT (file location): %s renamed to %s in %s, inside a directory that was renamed in %s, suggesting it should perhaps be moved to %s."
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
 msgstr ""
-"CONFLIT (localisation de fichier) : %s renommé en %s dans %s, dans un répertoire qui a été renommé dans %s, ce qui suggère qu'il devrait peut-être être déplacé "
+"CONFLIT (renommage de répertoire coupé) : le renommage de %s n'est pas clair "
+"parce que le répertoire a été renommé en plusieurs autres répertoires, sans "
+"aucune destination récupérant la majorité des fichiers."
+
+#: merge-ort.c:2241 merge-recursive.c:2464
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"AVERTISSEMENT : ne renomme pas %s->%s dans %s, parce que %s lui-même a été "
+"renommé."
+
+#: merge-ort.c:2385 merge-recursive.c:3247
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"Chemin mis à jour : %s ajouté dans %s dans un répertoire qui a été renommé "
+"en %s ; déplacé dans %s."
+
+#: merge-ort.c:2392 merge-recursive.c:3254
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Chemin mis à jour : %s renommé en %s dans %s, dans un répertoire qui a été "
+"renommé en %s ; déplacé dans %s."
+
+#: merge-ort.c:2405 merge-recursive.c:3250
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"CONFLIT (localisation de fichier) : %s ajouté dans %s dans un répertoire qui "
+"a été renommé dans %s, ce qui suggère qu'il devrait peut-être être déplacé "
 "vers %s."
 
-#: merge-ort.c:2103
-#, c-format
-msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
-msgstr "CONFLIT (renommage/renommage) : %s renommé en %s dans %s et en %s dans %s."
-
-#: merge-ort.c:2198
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
-"CONFLICT (rename involved in collision): rename of %s -> %s has content conflicts AND collides with another path; this may result in nested conflict markers."
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
-"CONFLIT (renommage au sein d'une collision) : lre renommage de %s -> %s a des conflits de contenu ET entre en collision avec un autre chemin ; ceci peut "
-"resulter en des marqueurs de conflit imbriqués."
+"CONFLIT (localisation de fichier) : %s renommé en %s dans %s, dans un "
+"répertoire qui a été renommé dans %s, ce qui suggère qu'il devrait peut-être "
+"être déplacé vers %s."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2569
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"CONFLIT (renommage/renommage) : %s renommé en %s dans %s et en %s dans %s."
+
+#: merge-ort.c:2664
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"CONFLIT (renommage au sein d'une collision) : lre renommage de %s -> %s a "
+"des conflits de contenu ET entre en collision avec un autre chemin ; ceci "
+"peut resulter en des marqueurs de conflit imbriqués."
+
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
-msgstr "CONFLIT (renommage/suppression) : Renommage de %s en %s dans %s mais supprimé dans %s."
+msgstr ""
+"CONFLIT (renommage/suppression) : Renommage de %s en %s dans %s mais "
+"supprimé dans %s."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "impossible de lire l'objet %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "l'objet %s n'est pas un blob"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
-msgid "CONFLICT (file/directory): directory in the way of %s from %s; moving it to %s instead."
-msgstr "CONFLIT (fichier/répertoire) : répertoire au milieu de %s depuis %s ; déplacement dans %s à la place."
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"CONFLIT (fichier/répertoire) : répertoire au milieu de %s depuis %s ; "
+"déplacement dans %s à la place."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
-msgid "CONFLICT (distinct types): %s had different types on each side; renamed both of them so each can be recorded somewhere."
-msgstr "CONFLIT (types différents) : %s a des types différents des deux côtés ; renommé chacune de manière à pouvoir enregistrer les deux quelque part."
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed both "
+"of them so each can be recorded somewhere."
+msgstr ""
+"CONFLIT (types différents) : %s a des types différents des deux côtés ; "
+"renommé chacune de manière à pouvoir enregistrer les deux quelque part."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
-msgid "CONFLICT (distinct types): %s had different types on each side; renamed one of them so each can be recorded somewhere."
-msgstr "CONFLIT (types différents) : %s a des types différents des deux côtés ; renommé une d'entre elles de manière à pouvoir enregistrer les deux quelque part."
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed one "
+"of them so each can be recorded somewhere."
+msgstr ""
+"CONFLIT (types différents) : %s a des types différents des deux côtés ; "
+"renommé une d'entre elles de manière à pouvoir enregistrer les deux quelque "
+"part."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "contenu"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "ajout/ajout"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "sous-module"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "CONFLIT (%s) : Conflit de fusion dans %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
-msgid "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s of %s left in tree."
-msgstr "CONFLIT (modification/suppression) : %s supprimé dans %s et modifié dans %s. Version %s de %s laissée dans l'arbre."
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"CONFLIT (modification/suppression) : %s supprimé dans %s et modifié dans %s. "
+"Version %s de %s laissée dans l'arbre."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
-msgid "Note: %s not up to date and in way of checking out conflicted version; old copy renamed to %s"
-msgstr "Note :%s pas à jour et au milieu de l'extraction d'une version conflictuelle ; la vielle copie a été renommée en %s"
+msgid ""
+"Note: %s not up to date and in way of checking out conflicted version; old "
+"copy renamed to %s"
+msgstr ""
+"Note :%s pas à jour et au milieu de l'extraction d'une version "
+"conflictuelle ; la vielle copie a été renommée en %s"
 
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "échec de collecte l'information de fusion pour les arbres %s, %s, %s"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "  %s"
 msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :\n"
+"Vos modifications locales aux fichiers suivants seraient écrasées par la "
+"fusion :\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Déjà à jour."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(mauvais commit)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
+msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
+msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "impossible de créer le chemin '%s' %s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Suppression de %s pour faire de la place pour le sous-répertoire\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": peut-être un conflit D/F ?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "refus de perdre le fichier non suivi '%s'"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "impossible de lire l'objet %s '%s'"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "blob attendu pour %s '%s'"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "échec à l'ouverture de '%s' : %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "échec à la création du lien symbolique '%s' : %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "ne sait pas traiter %06o %s '%s'"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Avance rapide du sous-module %s au commit suivant :"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Avance rapide du sous-module %s"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
+msgstr ""
+"Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Échec de fusion du sous-module %s (pas en avance rapide)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Résolution possible de fusion trouvée pour le sous-module :\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "Échec de fusion du sous-module %s (plusieurs fusions trouvées)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la place."
+msgstr ""
+"Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la "
+"place."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
-msgid "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left in tree."
-msgstr "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de %s laissée dans l'arbre."
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
+"%s laissée dans l'arbre."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
-msgid "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s left in tree."
-msgstr "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version %s de %s laissée dans l'arbre."
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
+"%s de %s laissée dans l'arbre."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
-msgid "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left in tree at %s."
-msgstr "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de %s laissée dans l'arbre dans le fichier %s."
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
+"%s laissée dans l'arbre dans le fichier %s."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
-msgid "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s left in tree at %s."
-msgstr "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version %s de %s laissée dans l'arbre dans le fichier %s."
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree at %s."
+msgstr ""
+"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
+"%s de %s laissée dans l'arbre dans le fichier %s."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "renommage"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "renommé"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Refus de perdre le fichier modifié %s"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr "Refus de perdre le fichier non suivi %s, même s'il gêne."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
-msgstr "CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
+msgstr ""
+"CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s est un répertoire dans %s ajouté plutôt comme %s"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr "Refus de perdre le fichier non suivi %s ; ajout comme %s à la place"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
-msgid "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s\"->\"%s\" in \"%s\"%s"
-msgstr "CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la branche \"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
+msgid ""
+"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
+"\"->\"%s\" in \"%s\"%s"
+msgstr ""
+"CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la branche "
+"\"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (laissé non résolu)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr "CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage '%s'->'%s' dans %s"
+msgstr ""
+"CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage '%s'-"
+">'%s' dans %s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because directory %s was renamed to multiple other directories, with no destination getting a "
-"majority of the files."
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
 msgstr ""
-"CONFLIT (renommage de répertoire coupé) : la place de %s n'est pas claire parce que le répertoire %s a été renommé en plusieurs autres répertoires, sans aucune "
-"destination récupérant la majorité des fichiers."
+"CONFLIT (renommage de répertoire coupé) : la place de %s n'est pas claire "
+"parce que le répertoire %s a été renommé en plusieurs autres répertoires, "
+"sans aucune destination récupérant la majorité des fichiers."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
-msgid "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s->%s in %s"
-msgstr "CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. Renommage de répertoire %s->%s dans %s"
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. "
+"Renommage de répertoire %s->%s dans %s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "modification"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "modifié"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s sauté (fusion identique à l'existant)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Ajout plutôt comme %s"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "Suppression de %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "fichier/répertoire"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "répertoire/fichier"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr "CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
+msgstr ""
+"CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "Ajout de %s"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLIT (ajout/ajout) : Conflit de fusion dans %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "échec de fusion des arbres %s et %s"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Fusion :"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u ancêtre commun trouvé :"
 msgstr[1] "%u ancêtres communs trouvés :"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "la fusion n'a pas retourné de commit"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Impossible d'analyser l'objet '%s'"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900 builtin/stash.c:473
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
+#: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Impossible d'écrire l'index."
 
@@ -4964,7 +5384,9 @@
 msgid "failed to read the cache"
 msgstr "impossible de lire le cache"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965 builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821 builtin/stash.c:267
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
+#: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "impossible d'écrire le nouveau fichier d'index"
 
@@ -4980,7 +5402,9 @@
 #: midx.c:121
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
-msgstr "la signature de l'index multi-paquet 0x%08x ne correspond pas à la signature 0x%08x"
+msgstr ""
+"la signature de l'index multi-paquet 0x%08x ne correspond pas à la signature "
+"0x%08x"
 
 #: midx.c:126
 #, c-format
@@ -4990,7 +5414,9 @@
 #: midx.c:131
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
-msgstr "la version d'empreinte d'index multi-paquet %u ne correspond pas à la version %u"
+msgstr ""
+"la version d'empreinte d'index multi-paquet %u ne correspond pas à la "
+"version %u"
 
 #: midx.c:148
 msgid "multi-pack-index missing required pack-name chunk"
@@ -5011,7 +5437,8 @@
 #: midx.c:170
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
-msgstr "index multi-paquet les noms de paquets sont en désordre : '%s' avant '%s'"
+msgstr ""
+"index multi-paquet les noms de paquets sont en désordre : '%s' avant '%s'"
 
 #: midx.c:214
 #, c-format
@@ -5020,7 +5447,8 @@
 
 #: midx.c:264
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
-msgstr "l'index multi-paquet stock un décalage en 64-bit, mais off_t est trop petit"
+msgstr ""
+"l'index multi-paquet stock un décalage en 64-bit, mais off_t est trop petit"
 
 #: midx.c:490
 #, c-format
@@ -5037,105 +5465,117 @@
 msgid "failed to locate object %d in packfile"
 msgstr "échec de localisation de l'objet %d dans le fichier paquet"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "impossible de stocker le fichier d'index inversé"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+"index multi-paquet existant ignoré ; non-concordance de la somme de contrôle"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Ajout de fichiers paquet à un index multi-paquet"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "fichier paquet à éliminer %s non trouvé"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "paquet préféré inconnu : %s"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "le paquet préféré '%s' est expiré"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "aucun fichier paquet à l'index."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "échec de la suppression de %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "échec du nettoyage de l'index de multi-paquet à %s"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "le fichier d'index multi-paquet existe mais n'a pu être analysé"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "somme de contrôle incorrecte"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Recherche de fichiers paquets référencés"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
-msgid "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
-msgstr "étalement oid en désordre : étalement[%d] = %<PRIx32> > %<PRIx32> = étalement[%d]"
+msgid ""
+"oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
+msgstr ""
+"étalement oid en désordre : étalement[%d] = %<PRIx32> > %<PRIx32> = "
+"étalement[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "le midx ne contient aucun oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Vérification de l'ordre des OID dans l'index multi-paquet"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "recherche d'oid en désordre : oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Classement des objets par fichier paquet"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Vérification des décalages des objets"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "échec de la lecture de l'élément de cache pour oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "impossible de lire le fichier paquet %s"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "décalage d'objet incorrect pour oid[%d] = %s : %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Comptage des objets référencés"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Recherche et effacement des fichiers paquets non-référencés"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "impossible de démarrer le groupement d'objets"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "impossible de finir le groupement d'objets"
 
@@ -5158,10 +5598,12 @@
 #, c-format
 msgid ""
 "You have not concluded your previous notes merge (%s exists).\n"
-"Please, use 'git notes merge --commit' or 'git notes merge --abort' to commit/abort the previous merge before you start a new notes merge."
+"Please, use 'git notes merge --commit' or 'git notes merge --abort' to "
+"commit/abort the previous merge before you start a new notes merge."
 msgstr ""
 "Vous n'avez pas terminé votre précédente fusion de notes (%s existe).\n"
-"Veuillez utiliser 'git notes merge --commit' ou 'git notes merge --abort' pour valider/abandonner la fusion en cours avant d'en démarrer une nouvelle."
+"Veuillez utiliser 'git notes merge --commit' ou 'git notes merge --abort' "
+"pour valider/abandonner la fusion en cours avant d'en démarrer une nouvelle."
 
 #: notes-merge.c:284
 #, c-format
@@ -5194,267 +5636,272 @@
 #: object-file.c:526
 #, c-format
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
+msgstr ""
+"le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "impossible de normaliser le chemin d'objet alternatif : %s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s : magasins d'objets alternatifs ignorés, récursion trop profonde"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "impossible de normaliser le répertoire d'objet : %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "impossible d'ouvrir (fdopen) le fichier verrou des alternatives"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "lecture du fichier d'alternatives impossible"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "impossible de déplacer le nouveau fichier d'alternative"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "le chemin '%s' n'existe pas"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "extraire le dépôt de référence '%s' comme une extraction liée n'est pas encore supporté."
+msgstr ""
+"extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
+"encore supporté."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "le dépôt de référence '%s' n'est pas un dépôt local."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "le dépôt de référence '%s' est superficiel"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "le dépôt de référence '%s' est greffé"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "ligne invalide pendant l'analyse des refs alternatives : %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "essai de mmap %<PRIuMAX> au delà de la limite %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "échec de mmap"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "échec de mmap%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "le fichier objet %s est vide"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "objet libre corrompu '%s'"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "données incorrectes à la fin de l'objet libre '%s'"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "type d'objet invalide"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr "impossible de dépaqueter l'entête %s avec --allow-unknow-type"
+msgstr "impossible de dépaqueter l'entête %s avec --allow-unknown-type"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "impossible de dépaqueter l'entête %s"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
-msgstr "impossible d'analyser l'entête %s avec --allow-unknow-type"
+msgstr "impossible d'analyser l'entête %s avec --allow-unknown-type"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "impossible d'analyser l'entête %s"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "impossible de lire l'objet %s"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "remplacement %s non trouvé pour %s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "l'objet libre %s (stocké dans %s) est corrompu"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "l'objet empaqueté %s (stocké dans %s) est corrompu"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "impossible d'écrire le fichier %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "impossible de régler les droits de '%s'"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "erreur d'écriture d'un fichier"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "erreur en fermeture du fichier d'objet esseulé"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
-msgstr "droits insuffisants pour ajouter un objet à la base de données %s du dépôt"
+msgstr ""
+"droits insuffisants pour ajouter un objet à la base de données %s du dépôt"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "impossible de créer un fichier temporaire"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "impossible d'écrire le fichier d'objet esseulé"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "impossible de compresser le nouvel objet %s (%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "échec de deflateEnd sur l'objet %s (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "données de source d'objet instable pour %s"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "échec de utime() sur %s"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "impossible de lire l'objet pour %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "commit corrompu"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "étiquette corrompue"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "erreur de lecture à l'indexation de %s"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "lecture tronquée pendant l'indexation de %s"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s : échec de l'insertion dans la base de données"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s : type de fichier non supporté"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s n'est pas un objet valide"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s n'est pas un objet '%s' valide"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "impossible d'ouvrir %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "incohérence de hachage pour %s (%s attendu)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "impossible de mmap %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "impossible de dépaqueter l'entête de %s"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "impossible d'analyser l'entête de %s"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "impossible de dépaqueter le contenu de %s"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "l'id court d'objet %s est ambigu"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Les candidats sont :"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5472,26 +5919,28 @@
 "\n"
 "  git switch -c $br $(git rev-parse ...)\n"
 "\n"
-"où \"$br\" est d'une manière ou d'une autre vide et une référence 40-hexa est créée.\n"
-"Veuillez examiner ces références et peut-être les supprimer. Désactivez ce message\n"
+"où \"$br\" est d'une manière ou d'une autre vide et une référence 40-hexa "
+"est créée.\n"
+"Veuillez examiner ces références et peut-être les supprimer. Désactivez ce "
+"message\n"
 "en lançant \"git config advice.objectNameWarning false\""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "le journal de '%.*s' ne remonte qu'à %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "le journal de '%.*s' n'a que %d entrées"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "le chemin '%s' existe sur le disque, mais pas dans '%.*s'"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5500,12 +5949,12 @@
 "le chemin '%s' existe, mais pas '%s'\n"
 "conseil : peut-être vouliez-vous dire '%.*s:%s', soit '%.*s:./%s' ?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "le chemin '%s' n'existe pas dans '%.*s'"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5514,7 +5963,7 @@
 "le chemin '%s' est dans l'index, mais pas à l'étape %d\n"
 "conseil : vous vouliez peut-être dire ':%d:%s' ?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5523,21 +5972,23 @@
 "le chemin '%s' est dans l'index, mais pas '%s'\n"
 "conseil : peut-être vouliez-vous dire ':%d:%s', soit '%d:./%s' ?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "le chemin '%s' existe sur le disque, mais pas dans l'index"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "le chemin '%s' n'existe pas (ni sur le disque, ni dans l'index)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
-msgstr "la syntaxe de chemin relatif ne peut pas être utilisée hors de l'arbre de travail"
+msgstr ""
+"la syntaxe de chemin relatif ne peut pas être utilisée hors de l'arbre de "
+"travail"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "nom d'objet invalide : '%.*s'."
@@ -5552,27 +6003,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "l'objet %s est de type %s, pas de type %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "l'objet %s a un id de type inconnu %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "impossible d'analyser l'objet : %s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "incohérence de hachage %s"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "impossible de récupérer la taille de %s"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "impossible de récupérer l'utilisation du disque de %s"
@@ -5625,15 +6076,21 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset avant la fin du fichier paquet (.idx cassé ?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "le fichier paquet %s ne peut être mmap%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "offset avant le début de l'index de paquet pour %s (index corrompu ?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "offset au delà de la fin de l'index de paquet pour %s (index tronqué ?)"
+msgstr ""
+"offset au delà de la fin de l'index de paquet pour %s (index tronqué ?)"
 
 #: parse-options-cb.c:20 parse-options-cb.c:24
 #, c-format
@@ -5748,7 +6205,9 @@
 
 #: pathspec.c:151
 msgid "Escape character '\\' not allowed as last character in attr value"
-msgstr "Le caractère d'échappement '\\\\' interdit comme dernier caractère dans une valeur d'attribut"
+msgstr ""
+"Le caractère d'échappement '\\\\' interdit comme dernier caractère dans une "
+"valeur d'attribut"
 
 #: pathspec.c:169
 msgid "Only one 'attr:' specification is allowed."
@@ -5765,11 +6224,17 @@
 
 #: pathspec.c:280
 msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "les réglages de spécificateurs de chemin généraux 'glob' et 'noglob' sont incompatibles"
+msgstr ""
+"les réglages de spécificateurs de chemin généraux 'glob' et 'noglob' sont "
+"incompatibles"
 
 #: pathspec.c:287
-msgid "global 'literal' pathspec setting is incompatible with all other global pathspec settings"
-msgstr "le réglage global de spécificateur de chemin 'literal' est incompatible avec tous les autres réglages globaux de spécificateur de chemin"
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr ""
+"le réglage global de spécificateur de chemin 'literal' est incompatible avec "
+"tous les autres réglages globaux de spécificateur de chemin"
 
 #: pathspec.c:327
 msgid "invalid parameter for pathspec magic 'prefix'"
@@ -5808,7 +6273,9 @@
 #: pathspec.c:552
 #, c-format
 msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s : le spécificateur magique de chemin n'est pas supporté par cette commande : %s"
+msgstr ""
+"%s : le spécificateur magique de chemin n'est pas supporté par cette "
+"commande : %s"
 
 #: pathspec.c:619
 #, c-format
@@ -5829,8 +6296,8 @@
 msgstr "impossible d'écrire le paquet de délimitation"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "impossible d'écrire le paquet de séparateur sans état"
+msgid "unable to write response end packet"
+msgstr "impossible d'écrire le paquet de fin de réponse"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -5846,7 +6313,9 @@
 
 #: pkt-line.c:204
 msgid "packet write failed - data exceeds max packet size"
-msgstr "échec de l'écriture d'un paquet ‑ les données dépassent la taille maximale d'un paquet"
+msgstr ""
+"échec de l'écriture d'un paquet ‑ les données dépassent la taille maximale "
+"d'un paquet"
 
 #: pkt-line.c:222
 #, c-format
@@ -5889,19 +6358,23 @@
 msgid "unable to parse --pretty format"
 msgstr "impossible d'analyser le format --pretty"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
-msgstr "promisor-remote : impossible de créer un sous-processus de récupération"
+msgstr ""
+"promisor-remote : impossible de créer un sous-processus de récupération"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
-msgstr "promisor-remote : impossible d'écrire vers un sous-processus de récupération"
+msgstr ""
+"promisor-remote : impossible d'écrire vers un sous-processus de récupération"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
-msgstr "promisor-remote : impossible de fermer l'entrée standard du sous-processus de récupération"
+msgstr ""
+"promisor-remote : impossible de fermer l'entrée standard du sous-processus "
+"de récupération"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "un nom de prometteur distant ne peut pas commencer par '/' : %s"
@@ -5922,87 +6395,93 @@
 msgid "could not read `log` output"
 msgstr "impossible de lire la sortie de `log`"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "impossible d'analyser le commit '%s'"
 
 #: range-diff.c:115
 #, c-format
-msgid "could not parse first line of `log` output: did not start with 'commit ': '%s'"
-msgstr "impossible d'analyser la première ligne de la sortie de `log` : ne commence pas par 'commit' : '%s'"
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+"impossible d'analyser la première ligne de la sortie de `log` : ne commence "
+"pas par 'commit' : '%s'"
 
 #: range-diff.c:140
 #, c-format
 msgid "could not parse git header '%.*s'"
 msgstr "impossible d'analyser l'entête git '%.*s'"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "échec de la génération de diff"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only et --right-only sont mutuellement exclusifs"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "impossible d'analyser le journal pour '%s'"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "pas d'ajout d'alias de fichier '%s'(« %s » existe déjà dans l'index)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "impossible de créer un blob vide dans la base de donnée d'objets"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
-msgstr "%s : ne peut ajouter que des fichiers normaux, des liens symboliques ou des répertoires git"
+msgstr ""
+"%s : ne peut ajouter que des fichiers normaux, des liens symboliques ou des "
+"répertoires git"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' n'a pas de commit extrait"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "indexation du fichier '%s' impossible"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "impossible d'ajouter '%s' à l'index"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "fstat de '%s' impossible"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' existe à la fois comme un fichier et un répertoire"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Rafraîchir l'index"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
-"version d'index renseignée, mais la valeur est invalide.\n"
+"index.version renseignée, mais la valeur est invalide.\n"
 "Utilisation de la version %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6011,156 +6490,163 @@
 "GIT_INDEX_VERSION est renseigné, mais la valeur est invalide.\n"
 "Utilisation de la version %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "signature incorrecte 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "mauvaise version d'index %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "mauvaise signature sha1 d'index"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "l'index utilise l'extension %.4s qui n'est pas comprise"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "extension %.4s ignorée"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "format d'entrée d'index inconnu 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "champ de nom malformé dans l'index, près du chemin '%s'"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "entrées de préparation non ordonnées dans l'index"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "entrées multiples de préparation pour le fichier fusionné '%s'"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "entrées de préparation non ordonnées pour '%s'"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095 submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991 builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505 builtin/mv.c:146
-#: builtin/reset.c:247 builtin/rm.c:291 builtin/submodule--helper.c:332
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
+#: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "fichier d'index corrompu"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "impossible de créer le fil load_cache_entries : %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
-msgstr "impossible de joindre le fil load_cach_entries : %s"
+msgstr "impossible de joindre le fil load_cache_entries : %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s : l'ouverture du fichier d'index a échoué"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s : impossible de faire un stat sur l'index ouvert"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s : fichier d'index plus petit qu'attendu"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s : impossible de mapper le fichier d'index"
+msgid "%s: unable to map index file%s"
+msgstr "%s : impossible de mapper le fichier d'index%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "impossible de créer le fil load_index_extensions : %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "impossible de joindre le fil load_index_extensions : %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "impossible de rafraîchir l'index partagé '%s'"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "index cassé, %s attendu dans %s, %s obtenu"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "impossible de fermer '%s'"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "échec de conversion d'un index clairsemé"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "impossible de stat '%s'"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "impossible d'ouvrir le répertoire git : %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "échec lors de l'unlink : %s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "impossible de régler les bits de droit de '%s'"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s : impossible de revenir à l'étape 0"
 
 #: rebase-interactive.c:11
 msgid ""
-"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.\n"
+"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
+"continue'.\n"
 "Or you can abort the rebase with 'git rebase --abort'.\n"
 msgstr ""
-"Vous pouvez corriger ceci avec 'git rebase --edit-todo' puis lancez 'git rebase --continue'.\n"
+"Vous pouvez corriger ceci avec 'git rebase --edit-todo' puis lancez 'git "
+"rebase --continue'.\n"
 "Ou vous pouvez abandonner le rebasage avec 'git rebase --abort'.\n"
 
 #: rebase-interactive.c:33
 #, c-format
-msgid "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr "paramètre non reconnu %s pour l'option rebase.missingCommitsCheck. Ignoré."
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+"paramètre non reconnu %s pour l'option rebase.missingCommitsCheck. Ignoré."
 
 #: rebase-interactive.c:42
 msgid ""
@@ -6191,13 +6677,18 @@
 " p, pick <commit> = utiliser le commit\n"
 " r, reword <commit> = utiliser le commit, mais reformuler son message\n"
 " e, edit <commit> = utiliser le commit, mais s'arrêter pour le modifier\n"
-" s, squash <commit> = utiliser le commit, mais le fusionner avec le précédent\n"
-" f, fixup [-C | -c] <commit> = comme \"squash\", mais en ne gardant que le message\n"
-"                    du commit précédent, à moins que -C ne soit utilisé, auquel cas, conserver\n"
-"                    ne conserver que le message de ce commit ; -c est identique à -C mais ouvre\n"
+" s, squash <commit> = utiliser le commit, mais le fusionner avec le "
+"précédent\n"
+" f, fixup [-C | -c] <commit> = comme \"squash\", mais en ne gardant que le "
+"message\n"
+"                    du commit précédent, à moins que -C ne soit utilisé, "
+"auquel cas, conserver\n"
+"                    ne conserver que le message de ce commit ; -c est "
+"identique à -C mais ouvre\n"
 "                    un éditeur\n"
 " x, exec <commit> = lancer la commande (reste de la ligne) dans un shell\n"
-" b, break = s'arrêter ici (on peut continuer ensuite avec 'git rebase --continue')\n"
+" b, break = s'arrêter ici (on peut continuer ensuite avec 'git rebase --"
+"continue')\n"
 " d, drop <commit> = supprimer le commit\n"
 " l, label <label> = étiqueter la HEAD courante avec un nom\n"
 " t, reset <label> = réinitialiser HEAD à label\n"
@@ -6221,7 +6712,8 @@
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 "\n"
-"Ne supprimez aucune ligne. Utilisez 'drop' explicitement pour supprimer un commit.\n"
+"Ne supprimez aucune ligne. Utilisez 'drop' explicitement pour supprimer un "
+"commit.\n"
 
 #: rebase-interactive.c:78 git-rebase--preserve-merges.sh:222
 msgid ""
@@ -6240,7 +6732,8 @@
 "\n"
 msgstr ""
 "\n"
-"Vous êtes en train d'éditer le fichier todo d'un rebasage interactif en cours.\n"
+"Vous êtes en train d'éditer le fichier todo d'un rebasage interactif en "
+"cours.\n"
 "Pour continuer le rebasage après édition, lancez :\n"
 "    git rebase --continue\n"
 "\n"
@@ -6255,12 +6748,14 @@
 "Cependant, si vous effacez tout, le rebasage sera annulé.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816 sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "impossible d'écrire '%s'"
 
-#: rebase-interactive.c:119 builtin/rebase.c:203 builtin/rebase.c:229 builtin/rebase.c:253
+#: rebase-interactive.c:119 builtin/rebase.c:203 builtin/rebase.c:229
+#: builtin/rebase.c:253
 #, c-format
 msgid "could not write '%s'."
 msgstr "impossible d'écrire '%s'."
@@ -6279,23 +6774,28 @@
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
 "\n"
-"Use 'git config rebase.missingCommitsCheck' to change the level of warnings.\n"
+"Use 'git config rebase.missingCommitsCheck' to change the level of "
+"warnings.\n"
 "The possible behaviours are: ignore, warn, error.\n"
 "\n"
 msgstr ""
-"Pour éviter ce message, utilisez \"drop\" pour supprimer explicitement un commit.\n"
+"Pour éviter ce message, utilisez \"drop\" pour supprimer explicitement un "
+"commit.\n"
 "\n"
-"Utilisez 'git config rebase.missingCommitsCheck' pour changer le niveau d'avertissements.\n"
+"Utilisez 'git config rebase.missingCommitsCheck' pour changer le niveau "
+"d'avertissements.\n"
 "Les comportements disponibles sont : ignore, warn, error.\n"
 "\n"
 
-#: rebase-interactive.c:236 rebase-interactive.c:241 sequencer.c:2597 builtin/rebase.c:189 builtin/rebase.c:214 builtin/rebase.c:240 builtin/rebase.c:265
+#: rebase-interactive.c:236 rebase-interactive.c:241 sequencer.c:2597
+#: builtin/rebase.c:189 builtin/rebase.c:214 builtin/rebase.c:240
+#: builtin/rebase.c:265
 #, c-format
 msgid "could not read '%s'."
 msgstr "impossible de lire '%s'."
 
 # à priori on parle d'une branche ici
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "disparue"
 
@@ -6314,246 +6814,248 @@
 msgid "ahead %d, behind %d"
 msgstr "en avance de %d, en retard de %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "format attendu : %%(color:<couleur>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "couleur non reconnue : %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Valeur entière attendue refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valeur entière attendue refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "argument %%(%s) non reconnu : %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) n'accepte pas d'argument"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "argument %%(objectsize) non reconnu : %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) n'accepte pas d'argument"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) n'accepte pas d'argument"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "argument %%(subject) non reconnu : %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "%%(trailers:key=<value>) attendu"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "argument %%(trailers) inconnu : %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valeur positive attendue contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "argument %%(contents) non reconnu : %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "valeur positive attendue '%s' dans %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "argument '%s' non reconnu dans %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "option de courriel non reconnue : %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "format attendu : %%(align:<largeur>,<position>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "position non reconnue : %s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "largeur non reconnue : %s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argument %%(align) non reconnu : %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "valeur positive attendue avec l'atome %%(align)"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "argument %%(if) non reconnu : %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nom de champ malformé %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nom de champ inconnu : %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
-msgid "not a git repository, but the field '%.*s' requires access to object data"
-msgstr "pas un dépôt git, mais le champ '%.*s' nécessite l'accès aux données d'objet"
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"pas un dépôt git, mais le champ '%.*s' nécessite l'accès aux données d'objet"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "format : atome %%(if) utilisé sans un atome %%(then)"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "format : atome %%(then) utilisé sans un atome %%(if)"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "format : atome %%(then) utilisé plus d'une fois"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "format: atome %%(then) utilisé après %%(else)"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "format : atome %%(else) utilisé sans un atome %%(if)"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "format : atome %%(else) utilisé sans un atome %%(then)"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "format : atome %%(else) utilisé plus d'une fois"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "format : atome %%(end) utilisé sans atome correspondant"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "chaîne de formatage mal formée %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(aucune branche, rebasage de %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(aucune branche, rebasage de la HEAD détachée %s)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(aucune branche, bisect a démarré sur %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD détachée sur %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD détachée depuis %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(aucune branche)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "objet manquant %s pour %s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "échec de parse_object_buffer sur %s pour %s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objet malformé à '%s'"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "réf avec un nom cassé %s ignoré"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "réf cassé %s ignoré"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "format: atome %%(end) manquant"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "nom d'objet malformé %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "l'option '%s' doit pointer sur un commit"
@@ -6656,7 +7158,8 @@
 msgid "could not remove reference %s"
 msgstr "impossible de supprimer la référence %s"
 
-#: refs/files-backend.c:1242 refs/packed-backend.c:1542 refs/packed-backend.c:1552
+#: refs/files-backend.c:1242 refs/packed-backend.c:1542
+#: refs/packed-backend.c:1552
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "impossible de supprimer la référence %s : %s"
@@ -6674,7 +7177,8 @@
 #: remote.c:351
 #, c-format
 msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "un raccourci de configuration de distant ne peut pas commencer par '/' : %s"
+msgstr ""
+"un raccourci de configuration de distant ne peut pas commencer par '/' : %s"
 
 #: remote.c:399
 msgid "more than one receivepack given, using the first"
@@ -6712,12 +7216,14 @@
 #: remote.c:1083
 #, c-format
 msgid "src refspec %s does not match any"
-msgstr "le spécificateur de référence source %s ne correspond à aucune référence"
+msgstr ""
+"le spécificateur de référence source %s ne correspond à aucune référence"
 
 #: remote.c:1088
 #, c-format
 msgid "src refspec %s matches more than one"
-msgstr "le spécificateur de référence source %s correspond à plus d'une référence"
+msgstr ""
+"le spécificateur de référence source %s correspond à plus d'une référence"
 
 #. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
@@ -6744,7 +7250,8 @@
 "  est une référence dans \"refs/{heads,tags}/\". Si oui, ajout du préfixe\n"
 "  refs/{heads,tags}/ correspondant du côté distant.\n"
 "\n"
-"Aucune n'a fonctionné, donc abandon. Veuillez spécifier une référence totalement qualifiée."
+"Aucune n'a fonctionné, donc abandon. Veuillez spécifier une référence "
+"totalement qualifiée."
 
 #: remote.c:1123
 #, c-format
@@ -6803,7 +7310,9 @@
 #: remote.c:1197
 #, c-format
 msgid "dst refspec %s matches more than one"
-msgstr "le spécificateur de référence dst %s correspond à plus d'un spécificateur de références"
+msgstr ""
+"le spécificateur de référence dst %s correspond à plus d'un spécificateur de "
+"références"
 
 #: remote.c:1204
 #, c-format
@@ -6832,7 +7341,9 @@
 #: remote.c:1757
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "la destination de poussée '%s' sur le serveur distant '%s' n'a pas de branche locale de suivi"
+msgstr ""
+"la destination de poussée '%s' sur le serveur distant '%s' n'a pas de "
+"branche locale de suivi"
 
 #: remote.c:1769
 #, c-format
@@ -6850,7 +7361,8 @@
 
 #: remote.c:1814
 msgid "cannot resolve 'simple' push to a single destination"
-msgstr "impossible de résoudre une poussée 'simple' pour une destination unique"
+msgstr ""
+"impossible de résoudre une poussée 'simple' pour une destination unique"
 
 #: remote.c:1943
 #, c-format
@@ -6900,9 +7412,14 @@
 #: remote.c:2146
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
-msgid_plural "Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
-msgstr[0] "Votre branche est en retard sur '%s' de %d commit, et peut être mise à jour en avance rapide.\n"
-msgstr[1] "Votre branche est en retard sur '%s' de %d commits, et peut être mise à jour en avance rapide.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"Votre branche est en retard sur '%s' de %d commit, et peut être mise à jour "
+"en avance rapide.\n"
+msgstr[1] ""
+"Votre branche est en retard sur '%s' de %d commits, et peut être mise à jour "
+"en avance rapide.\n"
 
 #: remote.c:2154
 msgid "  (use \"git pull\" to update your local branch)\n"
@@ -6925,7 +7442,8 @@
 
 #: remote.c:2167
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
-msgstr "  (utilisez \"git pull\" pour fusionner la branche distante dans la vôtre)\n"
+msgstr ""
+"  (utilisez \"git pull\" pour fusionner la branche distante dans la vôtre)\n"
 
 #: remote.c:2359
 #, c-format
@@ -7005,7 +7523,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "Pré-image enregistrée pour '%s'"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000 builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "impossible de créer le répertoire '%s'"
@@ -7043,49 +7562,52 @@
 msgid "could not determine HEAD revision"
 msgstr "impossible de déterminer la révision HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "impossible de trouver l'arbre de %s"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<fichier-paquet> n'est plus géré"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "votre branche actuelle semble cassée"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "votre branche actuelle '%s' ne contient encore aucun commit"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L ne supporte pas encore les formats de diff autres que -p et -s"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "échec de l'ouverture de /dev/null"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "impossible de créer un fil asynchrone : %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
 "Le crochet '%s' a été ignoré parce qu'il n'est pas marqué comme exécutable.\n"
-"Vous pouvez désactiver cet avertissement avec `git config advice.ignoredHook false`."
+"Vous pouvez désactiver cet avertissement avec `git config advice.ignoredHook "
+"false`."
 
 #: send-pack.c:150
 msgid "unexpected flush packet while reading remote unpack status"
-msgstr "paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage distant"
+msgstr ""
+"paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage "
+"distant"
 
 #: send-pack.c:152
 #, c-format
@@ -7107,25 +7629,30 @@
 
 #: send-pack.c:455
 msgid "push negotiation failed; proceeding anyway with push"
-msgstr "le négociation de poussée a échoué ; poursuite de la poussée de toute façon"
+msgstr ""
+"le négociation de poussée a échoué ; poursuite de la poussée de toute façon"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "le receveur ne gère pas l'algorithme d'empreinte de ce dépôt"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr "le receveur ne gère pas les poussées avec --signed"
 
-#: send-pack.c:531
-msgid "not sending a push certificate since the receiving end does not support --signed push"
-msgstr "pas d'envoi de certificat de poussée car le receveur ne gère pas les poussées avec --signed"
+#: send-pack.c:537
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"pas d'envoi de certificat de poussée car le receveur ne gère pas les "
+"poussées avec --signed"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "le receveur ne gère pas les poussées avec --atomic"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "le receveur ne gère pas les options de poussées"
 
@@ -7184,7 +7711,8 @@
 msgid "could not lock '%s'"
 msgstr "impossible de verrouiller '%s'"
 
-#: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289 sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "impossible d'écrire dans '%s'"
@@ -7194,7 +7722,8 @@
 msgid "could not write eol to '%s'"
 msgstr "impossible d'écrire la fin de ligne dans '%s'"
 
-#: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291 sequencer.c:3554
+#: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "échec lors de la finalisation de '%s'"
@@ -7244,7 +7773,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "impossible de décoter la valeur de '%s'"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728 builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "impossible d'ouvrir '%s' en lecture"
@@ -7325,15 +7855,18 @@
 "\n"
 "    git commit --amend --reset-author\n"
 msgstr ""
-"Votre nom et votre adresse courriel ont été configurés automatiquement en se\n"
+"Votre nom et votre adresse courriel ont été configurés automatiquement en "
+"se\n"
 "fondant sur votre nom d'utilisateur et le nom de votre machine. Veuillez \n"
 "vérifier qu'ils sont corrects. Vous pouvez supprimer ce message en les \n"
 "paramétrant explicitement. Lancez les commandes suivantes et suivez les\n"
-"instructions dans votre éditeur pour éditer votre fichier de configuration :\n"
+"instructions dans votre éditeur pour éditer votre fichier de "
+"configuration :\n"
 "\n"
 "    git config --global --edit\n"
 "\n"
-"Après ceci, vous pouvez corriger l'identité utilisée pour cette validation avec :\n"
+"Après ceci, vous pouvez corriger l'identité utilisée pour cette validation "
+"avec :\n"
 "\n"
 "    git commit --amend --reset-author\n"
 
@@ -7350,8 +7883,10 @@
 "\n"
 "    git commit --amend --reset-author\n"
 msgstr ""
-"Votre nom et votre adresse courriel ont été configurés automatiquement en se fondant\n"
-"sur votre nom d'utilisateur et le nom de votre machine. Veuillez vérifier qu'ils sont corrects.\n"
+"Votre nom et votre adresse courriel ont été configurés automatiquement en se "
+"fondant\n"
+"sur votre nom d'utilisateur et le nom de votre machine. Veuillez vérifier "
+"qu'ils sont corrects.\n"
 "Vous pouvez supprimer ce message en les paramétrant explicitement :\n"
 "\n"
 "    git config --global user.name \"Votre Nom\"\n"
@@ -7390,7 +7925,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s n'est pas un commit !"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "impossible d'analyser le commit HEAD"
 
@@ -7398,7 +7933,7 @@
 msgid "unable to parse commit author"
 msgstr "impossible d'analyser l'auteur du commit"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree a échoué à écrire un arbre"
 
@@ -7416,11 +7951,13 @@
 msgid "corrupt author: missing date information"
 msgstr "auteur corrompu : information de date manquante"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909 builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "échec de l'écriture de l'objet commit"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "impossible de mettre à jour %s"
@@ -7472,7 +8009,7 @@
 msgid "need a HEAD to fixup"
 msgstr "une HEAD est nécessaire à la correction"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "impossible de lire HEAD"
 
@@ -7613,7 +8150,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "feuille d'options malformée : %s"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "l'ensemble de commits spécifié est vide"
 
@@ -7644,7 +8181,7 @@
 msgid "could not lock HEAD"
 msgstr "impossible de verrouiller HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "aucun picorage ou retour en cours"
 
@@ -7656,7 +8193,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "impossible d'abandonner depuis une branche non encore créée"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "impossible d'ouvrir '%s'"
@@ -7677,7 +8214,8 @@
 
 #: sequencer.c:3179
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "Vous semblez avoir déplacé la HEAD. Pas de rembobinage, vérifiez votre HEAD !"
+msgstr ""
+"Vous semblez avoir déplacé la HEAD. Pas de rembobinage, vérifiez votre HEAD !"
 
 #: sequencer.c:3220
 msgid "no revert in progress"
@@ -7702,9 +8240,9 @@
 "try \"git %s --continue\""
 msgstr ""
 "avez-vous déjà validé ?\n"
-"essayez \"git %s -continue\""
+"essayez \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "impossible de lire HEAD"
 
@@ -7788,90 +8326,91 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "nom de label illégal '%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "écriture d'un commit racine bidon"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "écriture de 'écraser-sur'"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "impossible de résoudre '%s'"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "impossible de fusionner avec une révision courante"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "impossible d'analyser '%.*s'"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "rien à fusionner : '%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
-msgstr "une fusion octopus ne peut pas être exécutée par dessus une nouvelle racine"
+msgstr ""
+"une fusion octopus ne peut pas être exécutée par dessus une nouvelle racine"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "impossible de lire le message de validation de '%s'"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "impossible de seulement essayer de fusionner '%.*s'"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "fusion : Impossible d'écrire le nouveau fichier index"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Autoremisage impossible"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Réponse de remisage inattendue : '%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Impossible de créer le répertoire pour '%s'"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Autoremisage créé : %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "impossible de réinitialiser --hard"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Autoremisage appliqué.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "impossible de stocker %s"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -7882,29 +8421,30 @@
 "Vos  modifications sont à l'abri dans la remise.\n"
 "Vous pouvez lancer \"git stash pop\" ou \"git stash drop\" à tout moment.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "L'application du remisage automatique a créé des conflits."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
-msgstr "Un remisage automatique existe ; création d'une nouvelle entrée de remisage."
+msgstr ""
+"Un remisage automatique existe ; création d'une nouvelle entrée de remisage."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "impossible de détacher HEAD"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Arrêt à HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Arrêté à %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -7925,58 +8465,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Rebasage (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Arrêt à %s... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "commande inconnue %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "impossible de lire orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "impossible de lire 'onto'"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "impossible de mettre à jour HEAD sur %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Rebasage et mise à jour de %s avec succès.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "impossible de rebaser : vous avez des modifications non indexées."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "impossible de corriger un commit non-existant"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "fichier invalide : '%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "contenu invalide : '%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -7986,50 +8526,50 @@
 "Vous avez des modifications non validées dans votre copie de travail.\n"
 "Veuillez les valider d'abord, puis relancer 'git rebase --continue'."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "impossible d'écrire le fichier : '%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "impossible de supprimer CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "impossible de valider les modifications indexées."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s : impossible de picorer un %s"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s : mauvaise révision"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "impossible d'annuler en tant que commit initial"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script : options non gérées"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script : erreur lors de la préparation des révisions"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "rien à faire"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "impossible d'éviter les commandes de picorage non nécessaires"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "le script a déjà été réarrangé."
 
@@ -8045,7 +8585,8 @@
 "Use 'git <command> -- <path>...' to specify paths that do not exist locally."
 msgstr ""
 "%s : ce chemin n'existe pas dans la copie de travail.\n"
-"Utilisez 'git <commande> -- <chemin>...' pour spécifier des chemins qui n'existent pas localement."
+"Utilisez 'git <commande> -- <chemin>...' pour spécifier des chemins qui "
+"n'existent pas localement."
 
 #: setup.c:198
 #, c-format
@@ -8061,7 +8602,9 @@
 #: setup.c:264
 #, c-format
 msgid "option '%s' must come before non-option arguments"
-msgstr "l'option '%s' doit être présente avant les arguments qui ne sont pas des options"
+msgstr ""
+"l'option '%s' doit être présente avant les arguments qui ne sont pas des "
+"options"
 
 #: setup.c:283
 #, c-format
@@ -8076,132 +8619,143 @@
 
 #: setup.c:419
 msgid "unable to set up work tree using invalid config"
-msgstr "impossible de mettre en place le répertoire de travail en utilisant une configuration invalide"
+msgstr ""
+"impossible de mettre en place le répertoire de travail en utilisant une "
+"configuration invalide"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "cette opération doit être effectuée dans un arbre de travail"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Version attendue du dépôt git <= %d, %d trouvée"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "extensions de dépôt inconnues trouvées :"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "extension de dépôt inconnue trouvée :"
+msgstr[1] "extensions de dépôt inconnues trouvées :"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "la version du dépôt est 0, mais des extensions uniquement v1 trouvées :"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] ""
+"la version du dépôt est 0, mais une extension uniquement v1 trouvée :"
+msgstr[1] ""
+"la version du dépôt est 0, mais des extensions uniquement v1 trouvées :"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "erreur à l'ouverture de '%s'"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "trop gros pour être une fichier .git : '%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "erreur à la lecture de %s"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "format de fichier git invalide : %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "aucun chemin dans le fichier git : %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "ce n'est pas un dépôt git : %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' trop gros"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "ce n'est pas un dépôt git : '%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "impossible de se déplacer vers le répertoire (chdir) '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "impossible de revenir au répertoire de travail courant"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "échec du stat de '%*s%s%s'"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Impossible d'accéder au répertoire de travail courant"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "impossible de modifier en '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "ni ceci ni aucun de ses répertoires parents n'est un dépôt git : %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"ni ceci ni aucun de ses répertoires parents (jusqu'au point de montage %s) n'est un dépôt git\n"
-"Arrêt à la limite du système de fichiers (GIT_DISCOVERY_ACROSS_FILESYSTEM n'est pas défini)."
+"ni ceci ni aucun de ses répertoires parents (jusqu'au point de montage %s) "
+"n'est un dépôt git\n"
+"Arrêt à la limite du système de fichiers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
+"n'est pas défini)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
 "The owner of files must always have read and write permissions."
 msgstr ""
 "problème avec la valeur de core.sharedRepository (0%.3o).\n"
-"Le propriétaire des fichiers doit toujours avoir les droits en lecture et écriture."
+"Le propriétaire des fichiers doit toujours avoir les droits en lecture et "
+"écriture."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "échec de l'ouverture ou au dup de /dev/null"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "échec de la bifurcation"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "échec du setsid"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "tentative d'utilisation de l'index partiel sans mode cone"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "impossible de mettre à jour l'arbre de cache, full conservé"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "l'entrée d'index est un répertoire, mais pas clairsemé (%08x)"
@@ -8258,7 +8812,8 @@
 msgstr[0] "%u octet/s"
 msgstr[1] "%u octets/s"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737 builtin/rebase.c:866
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "impossible d'ouvrir '%s' en écriture"
@@ -8275,12 +8830,14 @@
 
 #: submodule-config.c:304
 msgid "negative values not allowed for submodule.fetchjobs"
-msgstr "les valeurs négatives ne sont pas permises pour submodule.fetchJobs"
+msgstr "les valeurs négatives ne sont pas permises pour submodule.fetchjobs"
 
 #: submodule-config.c:402
 #, c-format
 msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
-msgstr "'%s' ignoré et qui peut être interprété comme une option de ligne de commande : %s"
+msgstr ""
+"'%s' ignoré et qui peut être interprété comme une option de ligne de "
+"commande : %s"
 
 #: submodule-config.c:499
 #, c-format
@@ -8294,7 +8851,9 @@
 
 #: submodule.c:114 submodule.c:143
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
-msgstr "Modification impossible de .gitmodules non fusionné, résolvez les conflits d'abord"
+msgstr ""
+"Modification impossible de .gitmodules non fusionné, résolvez les conflits "
+"d'abord"
 
 #: submodule.c:118 submodule.c:147
 #, c-format
@@ -8326,51 +8885,59 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "mauvais argument --ignore-submodules : %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
-msgid "Submodule in commit %s at path: '%s' collides with a submodule named the same. Skipping it."
-msgstr "Le sous-module dans le commit %s au chemin : '%s' entre en collision avec un sous-module du même nom. Ignoré."
+msgid ""
+"Submodule in commit %s at path: '%s' collides with a submodule named the "
+"same. Skipping it."
+msgstr ""
+"Le sous-module dans le commit %s au chemin : '%s' entre en collision avec un "
+"sous-module du même nom. Ignoré."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "l'entrée de sous-module '%s' (%s) est un %s, pas un commit"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
-msgid "Could not run 'git rev-list <commits> --not --remotes -n 1' command in submodule %s"
-msgstr "Impossible de lancer la commande 'git rev-list <commits> --not --remotes -n 1' dans le sous-module %s"
+msgid ""
+"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
+"submodule %s"
+msgstr ""
+"Impossible de lancer la commande 'git rev-list <commits> --not --remotes -n "
+"1' dans le sous-module %s"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "le processus pour le sous-module '%s' a échoué"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Échec de résolution de HEAD comme référence valide."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Poussée du sous-module '%s'\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Impossible de pousser le sous-module '%s'\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Récupération du sous-module %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Impossible d'accéder au sous-module '%s'\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8379,76 +8946,81 @@
 "Erreurs pendant la récupération du sous-module :\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' n'est pas reconnu comme dépôt git"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "impossible de lancer 'git status --porcelain=2' dans le sous-module %s"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --porcelain=2' a échoué dans le sous-module %s"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "impossible de démarrer 'git status' dans le sous-module '%s'"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "impossible de lancer 'git status' dans le sous-module '%s'"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Impossible de désactiver core.worktree dans le sous-module '%s'"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "impossible de réinitialiser l'index du sous-module"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "le sous-module '%s' a un index sale"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Le sous-module '%s' n'a pas pu être mis à jour."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
-msgstr "le répertoire git du sous-module '%s' est à l'intérieur du répertoire git '%.*s'"
+msgstr ""
+"le répertoire git du sous-module '%s' est à l'intérieur du répertoire git "
+"'%.*s'"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
-msgid "relocate_gitdir for submodule '%s' with more than one worktree not supported"
-msgstr "relocate_gitdir pour le sous-module '%s' avec plus d'un arbre de travail n'est pas supporté"
+msgid ""
+"relocate_gitdir for submodule '%s' with more than one worktree not supported"
+msgstr ""
+"relocate_gitdir pour le sous-module '%s' avec plus d'un arbre de travail "
+"n'est pas supporté"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "impossible de trouve le nom pour le sous-module '%s'"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "refus de déplacer '%s' dans une répertoire git existant"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8459,11 +9031,11 @@
 "'%s' sur\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "impossible de démarrer ls-files dans .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree a renvoyé un code de retour inattendu %d"
@@ -8478,12 +9050,14 @@
 msgid "running trailer command '%s' failed"
 msgstr "échec de la commande trailer '%s'"
 
-#: trailer.c:493 trailer.c:498 trailer.c:503 trailer.c:562 trailer.c:566 trailer.c:570
+#: trailer.c:493 trailer.c:498 trailer.c:503 trailer.c:562 trailer.c:566
+#: trailer.c:570
 #, c-format
 msgid "unknown value '%s' for key '%s'"
 msgstr "valeur inconnue '%s' pour la clé '%s'"
 
-#: trailer.c:547 trailer.c:552 trailer.c:557 builtin/remote.c:299 builtin/remote.c:324
+#: trailer.c:547 trailer.c:552 trailer.c:557 builtin/remote.c:299
+#: builtin/remote.c:324
 #, c-format
 msgid "more than one %s"
 msgstr "plus d'un %s"
@@ -8498,7 +9072,7 @@
 msgid "could not read input file '%s'"
 msgstr "impossible de lire le fichier d'entrée '%s'"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "impossible de lire depuis l'entrée standard"
 
@@ -8537,12 +9111,17 @@
 
 #: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
-msgstr "impossible de dupliquer le descripteur de flux de sortie de l'assistant"
+msgstr ""
+"impossible de dupliquer le descripteur de flux de sortie de l'assistant"
 
 #: transport-helper.c:214
 #, c-format
-msgid "unknown mandatory capability %s; this remote helper probably needs newer version of Git"
-msgstr "capacité obligatoire inconnue %s ; cet assistant distant requiert probablement une une nouvelle version de Git"
+msgid ""
+"unknown mandatory capability %s; this remote helper probably needs newer "
+"version of Git"
+msgstr ""
+"capacité obligatoire inconnue %s ; cet assistant distant requiert "
+"probablement une une nouvelle version de Git"
 
 #: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
@@ -8578,13 +9157,15 @@
 
 #: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
-msgstr "la spécification du chemin de service distant n'est pas supportée par le protocole"
+msgstr ""
+"la spécification du chemin de service distant n'est pas supportée par le "
+"protocole"
 
 #: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "chemin de service distant invalide"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "option non supportée par le protocole"
 
@@ -8593,9 +9174,9 @@
 msgid "can't connect to subservice %s"
 msgstr "impossible de se connecter au sous-service %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
-msgstr "--negociate-only requiert le protocole v2"
+msgstr "--negotiate-only requiert le protocole v2"
 
 #: transport-helper.c:755
 msgid "'option' without a matching 'ok/error' directive"
@@ -8643,7 +9224,9 @@
 
 #: transport-helper.c:1060
 msgid "remote-helper doesn't support push; refspec needed"
-msgstr "l'assistant %s ne gère pas push ; un spécificateur de référence est nécessaire"
+msgstr ""
+"l'assistant %s ne gère pas push ; un spécificateur de référence est "
+"nécessaire"
 
 #: transport-helper.c:1065
 #, c-format
@@ -8726,46 +9309,46 @@
 msgid "could not read bundle '%s'"
 msgstr "impossible de lire la liasse '%s'"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport : option de profondeur invalide '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "voir protocol.version dans 'git help config' pour plus d'information"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "les options de serveur exigent une version 2 ou supérieure"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "le serveur ne prend pas en charge wait-for-done"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "impossible d'analyser la configuration transport.color.*"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "le support du protocole v2 n'est pas encore implanté"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valeur inconnue pour la config '%s' : %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transport '%s' non permis"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync n'est plus supporté"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8774,7 +9357,7 @@
 "Les chemins suivants de sous-module contiennent des modifications\n"
 "qui ne peuvent être trouvées sur aucun distant :\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -8801,11 +9384,11 @@
 "pour les pousser vers un serveur distant.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Abandon."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "échec de la poussée de tous les sous-modules nécessaires"
 
@@ -8831,8 +9414,10 @@
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%sPlease commit your changes or stash them before you switch branches."
 msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par l'extraction :\n"
-"%%sVeuillez valider ou remiser vos modifications avant de basculer de branche."
+"Vos modifications locales aux fichiers suivants seraient écrasées par "
+"l'extraction :\n"
+"%%sVeuillez valider ou remiser vos modifications avant de basculer de "
+"branche."
 
 #: unpack-trees.c:117
 #, c-format
@@ -8840,7 +9425,8 @@
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%s"
 msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par l'extraction :\n"
+"Vos modifications locales aux fichiers suivants seraient écrasées par "
+"l'extraction :\n"
 "%%s"
 
 #: unpack-trees.c:120
@@ -8849,7 +9435,8 @@
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%sPlease commit your changes or stash them before you merge."
 msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :\n"
+"Vos modifications locales aux fichiers suivants seraient écrasées par la "
+"fusion :\n"
 "%%sVeuillez valider ou remiser vos modifications avant la fusion."
 
 #: unpack-trees.c:122
@@ -8858,7 +9445,8 @@
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%s"
 msgstr ""
-"Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :\n"
+"Vos modifications locales aux fichiers suivants seraient écrasées par la "
+"fusion :\n"
 "%%s"
 
 #: unpack-trees.c:125
@@ -8885,7 +9473,8 @@
 "Updating the following directories would lose untracked files in them:\n"
 "%s"
 msgstr ""
-"La mise à jour des répertoires suivants effacerait les fichiers non suivis contenus :\n"
+"La mise à jour des répertoires suivants effacerait les fichiers non suivis "
+"contenus :\n"
 "%s"
 
 #: unpack-trees.c:136
@@ -8894,7 +9483,8 @@
 "The following untracked working tree files would be removed by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient effacés par l'extraction :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient effacés par "
+"l'extraction :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant de basculer de branche."
 
 #: unpack-trees.c:138
@@ -8912,7 +9502,8 @@
 "The following untracked working tree files would be removed by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient effacés par la fusion :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient effacés par "
+"la fusion :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant la fusion."
 
 #: unpack-trees.c:143
@@ -8930,7 +9521,8 @@
 "The following untracked working tree files would be removed by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient effacés par %s :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient effacés par "
+"%s :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant %s."
 
 #: unpack-trees.c:148
@@ -8945,16 +9537,19 @@
 #: unpack-trees.c:154
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by checkout:\n"
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient écrasés par l'extraction :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient écrasés par "
+"l'extraction :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant de basculer de branche."
 
 #: unpack-trees.c:156
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by checkout:\n"
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
 "%%s"
 msgstr ""
 "Les fichiers suivants non suivis seraient écrasés par l'extraction :\n"
@@ -8966,7 +9561,8 @@
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient effacés par la fusion :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient effacés par "
+"la fusion :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant la fusion."
 
 #: unpack-trees.c:161
@@ -8984,7 +9580,8 @@
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr ""
-"Les fichiers suivants non suivis de la copie de travail seraient écrasés par %s :\n"
+"Les fichiers suivants non suivis de la copie de travail seraient écrasés par "
+"%s :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant %s."
 
 #: unpack-trees.c:166
@@ -9013,10 +9610,12 @@
 #: unpack-trees.c:180
 #, c-format
 msgid ""
-"The following paths are not up to date and were left despite sparse patterns:\n"
+"The following paths are not up to date and were left despite sparse "
+"patterns:\n"
 "%s"
 msgstr ""
-"Les chemins suivants ne sont pas à jour et ont été laissés malgré les motifs clairsemés :\n"
+"Les chemins suivants ne sont pas à jour et ont été laissés malgré les motifs "
+"clairsemés :\n"
 "%s"
 
 #: unpack-trees.c:182
@@ -9025,16 +9624,19 @@
 "The following paths are unmerged and were left despite sparse patterns:\n"
 "%s"
 msgstr ""
-"Les chemins suivants ne sont pas fusionnés et ont été laissés malgré les motifs clairsemés :\n"
+"Les chemins suivants ne sont pas fusionnés et ont été laissés malgré les "
+"motifs clairsemés :\n"
 "%s"
 
 #: unpack-trees.c:184
 #, c-format
 msgid ""
-"The following paths were already present and thus not updated despite sparse patterns:\n"
+"The following paths were already present and thus not updated despite sparse "
+"patterns:\n"
 "%s"
 msgstr ""
-"Les chemins suivants étaient déjà présents et ont été laissés malgré les motifs clairsemés :\n"
+"Les chemins suivants étaient déjà présents et ont été laissés malgré les "
+"motifs clairsemés :\n"
 "%s"
 
 #: unpack-trees.c:264
@@ -9044,8 +9646,12 @@
 
 #: unpack-trees.c:291
 #, c-format
-msgid "After fixing the above paths, you may want to run `git sparse-checkout reapply`.\n"
-msgstr "Après correction des chemins ci-dessus, vous voulez peut-être lancer `git sparse-checkout reapply`.\n"
+msgid ""
+"After fixing the above paths, you may want to run `git sparse-checkout "
+"reapply`.\n"
+msgstr ""
+"Après correction des chemins ci-dessus, vous voulez peut-être lancer `git "
+"sparse-checkout reapply`.\n"
 
 #: unpack-trees.c:352
 msgid "Updating files"
@@ -9061,14 +9667,15 @@
 "sensibles à la casse dans une système de fichier insensible) et un\n"
 "seul du groupe en collision est dans l'arbre de travail :\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "Mise à jour des drapeaux de l'index"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
-msgstr "l'arbre de travail et le commit non suivi ont des entrées dupliquées : %s"
+msgstr ""
+"l'arbre de travail et le commit non suivi ont des entrées dupliquées : %s"
 
 #: upload-pack.c:1548
 msgid "expected flush after fetch arguments"
@@ -9107,99 +9714,104 @@
 msgid "Fetching objects"
 msgstr "Récupération des objets"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "échec de la lecture de '%s'"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
-msgstr "'%s' dans l'arbre de travail principal n'est pas le répertoire de dépôt"
+msgstr ""
+"'%s' dans l'arbre de travail principal n'est pas le répertoire de dépôt"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
-msgstr "le fichier '%s' ne contient pas de chemin absolu à l'emplacement de l'arbre de travail"
+msgstr ""
+"le fichier '%s' ne contient pas de chemin absolu à l'emplacement de l'arbre "
+"de travail"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' n'existe pas"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' n'est pas un fichier .git, code d'erreur %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' ne pointe pas en retour sur '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "pas un répertoire"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git n'est pas un fichier"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr "fichier .git cassé"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr "fichier .git incorrect"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "pas un chemin valide"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "impossible de localiser le dépôt ; .git n'est pas un fichier"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
-msgstr "impossible de localiser le dépôt ; .git ne fait pas référence à un dépôt"
+msgstr ""
+"impossible de localiser le dépôt ; .git ne fait pas référence à un dépôt"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "impossible de localiser le dépôt ; fichier .git cassé"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir non lisible"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir incorrect"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "pas un répertoire valide"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "le fichier gitdir n'existe pas"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "impossible de lire le fichier gitdir (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "lecture trop courte ( %<PRIuMAX> octets attendus, %<PRIuMAX> octets lus)"
+msgstr ""
+"lecture trop courte ( %<PRIuMAX> octets attendus, %<PRIuMAX> octets lus)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "fichier gitdir invalide"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "le fichier gitdir pointe sur un endroit inexistant"
 
@@ -9228,7 +9840,9 @@
 #: wt-status.c:190 wt-status.c:222
 #, c-format
 msgid "  (use \"git restore --source=%s --staged <file>...\" to unstage)"
-msgstr "  (utilisez \"git restore --source=%s --staged <fichier>...\" pour désindexer)"
+msgstr ""
+"  (utilisez \"git restore --source=%s --staged <fichier>...\" pour "
+"désindexer)"
 
 #: wt-status.c:193 wt-status.c:225
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
@@ -9240,40 +9854,50 @@
 
 #: wt-status.c:199 wt-status.c:203
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
-msgstr "  (utilisez \"git add/rm <fichier>...\" si nécessaire pour marquer comme résolu)"
+msgstr ""
+"  (utilisez \"git add/rm <fichier>...\" si nécessaire pour marquer comme "
+"résolu)"
 
 #: wt-status.c:201
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (utilisez \"git rm <fichier>...\" pour marquer comme résolu)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Modifications qui seront validées :"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Modifications qui ne seront pas validées :"
 
 #: wt-status.c:238
 msgid "  (use \"git add <file>...\" to update what will be committed)"
-msgstr "  (utilisez \"git add <fichier>...\" pour mettre à jour ce qui sera validé)"
+msgstr ""
+"  (utilisez \"git add <fichier>...\" pour mettre à jour ce qui sera validé)"
 
 #: wt-status.c:240
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
-msgstr "  (utilisez \"git add/rm <fichier>...\" pour mettre à jour ce qui sera validé)"
+msgstr ""
+"  (utilisez \"git add/rm <fichier>...\" pour mettre à jour ce qui sera "
+"validé)"
 
 #: wt-status.c:241
-msgid "  (use \"git restore <file>...\" to discard changes in working directory)"
-msgstr "  (utilisez \"git restore <fichier>...\" pour annuler les modifications dans le répertoire de travail)"
+msgid ""
+"  (use \"git restore <file>...\" to discard changes in working directory)"
+msgstr ""
+"  (utilisez \"git restore <fichier>...\" pour annuler les modifications dans "
+"le répertoire de travail)"
 
 #: wt-status.c:243
 msgid "  (commit or discard the untracked or modified content in submodules)"
-msgstr "  (valider ou annuler le contenu non suivi ou modifié dans les sous-modules)"
+msgstr ""
+"  (valider ou annuler le contenu non suivi ou modifié dans les sous-modules)"
 
 #: wt-status.c:254
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
-msgstr "  (utilisez \"git %s <fichier>...\" pour inclure dans ce qui sera validé)"
+msgstr ""
+"  (utilisez \"git %s <fichier>...\" pour inclure dans ce qui sera validé)"
 
 #: wt-status.c:266
 msgid "both deleted:"
@@ -9347,22 +9971,22 @@
 msgid "untracked content, "
 msgstr "contenu non suivi, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Votre remisage contient actuellement %d entrée"
 msgstr[1] "Votre remisage contient actuellement %d entrées"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Sous-modules modifiés mais non mis à jour :"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Changements du sous-module à valider :"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9370,7 +9994,7 @@
 "Ne touchez pas à la ligne ci-dessus.\n"
 "Tout ce qui suit sera éliminé."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9378,256 +10002,275 @@
 "You can use '--no-ahead-behind' to avoid this.\n"
 msgstr ""
 "\n"
-"%.2f secondes ont été nécessaires pour calculer les valeurs d'avance/retard de la branche.\n"
+"%.2f secondes ont été nécessaires pour calculer les valeurs d'avance/retard "
+"de la branche.\n"
 "Vous pouvez utiliser '--no-ahead-behind' pour éviter ceci.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Vous avez des chemins non fusionnés."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (réglez les conflits puis lancez \"git commit\")"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (utilisez \"git merge --abort\" pour annuler la fusion)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tous les conflits sont réglés mais la fusion n'est pas terminée."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (utilisez \"git commit\" pour terminer la fusion)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Vous êtes au milieu d'une session am."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Le patch actuel est vide."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git am --continue\")"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (utilisez \"git am --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (utilisez \"git am --abort\" pour restaurer la branche d'origine)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo est manquant."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Aucune commande réalisée."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Dernière commande effectuée (%d commande effectuée) :"
 msgstr[1] "Dernières commandes effectuées (%d commandes effectuées) :"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (voir plus dans le fichier %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Aucune commande restante."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Prochaine commande à effectuer (%d commande restante) :"
 msgstr[1] "Prochaines commandes à effectuer (%d commandes restantes) :"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (utilisez \"git rebase --edit-todo\" pour voir et éditer)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Vous êtes en train de rebaser la branche '%s' sur '%s'."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Vous êtes en train de rebaser."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git rebase --continue\")"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (utilisez \"git rebase --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (utilisez \"git rebase --abort\" pour extraire la branche d'origine)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
-msgid "You are currently splitting a commit while rebasing branch '%s' on '%s'."
-msgstr "Vous êtes actuellement en train de fractionner un commit pendant un rebasage de la branche '%s' sur '%s'."
+msgid ""
+"You are currently splitting a commit while rebasing branch '%s' on '%s'."
+msgstr ""
+"Vous êtes actuellement en train de fractionner un commit pendant un rebasage "
+"de la branche '%s' sur '%s'."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
-msgstr "Vous êtes actuellement en train de fractionner un commit pendant un rebasage."
+msgstr ""
+"Vous êtes actuellement en train de fractionner un commit pendant un rebasage."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
-msgstr "  (Une fois la copie de travail nettoyée, lancez \"git rebase --continue\")"
+msgstr ""
+"  (Une fois la copie de travail nettoyée, lancez \"git rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
-msgstr "Vous êtes actuellement en train d'éditer un commit pendant un rebasage de la branche '%s' sur '%s'."
+msgstr ""
+"Vous êtes actuellement en train d'éditer un commit pendant un rebasage de la "
+"branche '%s' sur '%s'."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
-msgstr "Vous êtes actuellement en train d'éditer un commit pendant un rebasage."
+msgstr ""
+"Vous êtes actuellement en train d'éditer un commit pendant un rebasage."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (utilisez \"git commit --amend\" pour corriger le commit actuel)"
 
-#: wt-status.c:1409
-msgid "  (use \"git rebase --continue\" once you are satisfied with your changes)"
-msgstr "  (utilisez \"git rebase --continue\" quand vous avez effectué toutes vos modifications)"
+#: wt-status.c:1459
+msgid ""
+"  (use \"git rebase --continue\" once you are satisfied with your changes)"
+msgstr ""
+"  (utilisez \"git rebase --continue\" quand vous avez effectué toutes vos "
+"modifications)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Picorage en cours."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Vous êtes actuellement en train de picorer le commit %s."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (lancez \"git cherry-pick --continue\" pour continuer)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
-msgstr "  (tous les conflits sont réglés : lancez \"git cherry-pick --continue\")"
+msgstr ""
+"  (tous les conflits sont réglés : lancez \"git cherry-pick --continue\")"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (utilisez \"git cherry-pick --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (utilisez \"git cherry-pick --abort\" pour annuler le picorage)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Rétablissement en cours."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Vous êtes actuellement en train de rétablir le commit %s."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (lancez \"git revert --continue\" pour continuer)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git revert --continue\")"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (utilisez \"git revert --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (utilisez \"git revert --abort\" pour annuler le rétablissement)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Vous êtes en cours de bissection, depuis la branche '%s'."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Vous êtes en cours de bissection."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (utilisez \"git bisect reset\" pour revenir à la branche d'origine)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Vous êtes dans une extraction clairsemée."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
-msgstr "Vous êtes dans une extraction partielle avec %d %% de fichiers suivis présents."
+msgstr ""
+"Vous êtes dans une extraction partielle avec %d %% de fichiers suivis "
+"présents."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "Sur la branche "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "rebasage interactif en cours ; sur "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "rebasage en cours ; sur "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD détachée sur "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD détachée depuis "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Actuellement sur aucun branche."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Validation initiale"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Aucun commit"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Fichiers non suivis"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Fichiers ignorés"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9636,110 +10279,121 @@
 msgstr ""
 "L'énumération des fichiers non suivis a duré %.2f secondes. 'status -uno'\n"
 "peut l'accélérer, mais vous devez alors faire attention à ne pas\n"
-"oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help status')."
+"oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help "
+"status')."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Fichiers non suivis non affichés%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (utilisez -u pour afficher les fichiers non suivis)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Aucune modification"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
-msgstr "aucune modification n'a été ajoutée à la validation (utilisez \"git add\" ou \"git commit -a\")\n"
+msgstr ""
+"aucune modification n'a été ajoutée à la validation (utilisez \"git add\" ou "
+"\"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "aucune modification ajoutée à la validation\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
-msgid "nothing added to commit but untracked files present (use \"git add\" to track)\n"
-msgstr "aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez \"git add\" pour les suivre)\n"
+msgid ""
+"nothing added to commit but untracked files present (use \"git add\" to "
+"track)\n"
+msgstr ""
+"aucune modification ajoutée à la validation mais des fichiers non suivis "
+"sont présents (utilisez \"git add\" pour les suivre)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
-msgstr "aucune modification ajoutée à la validation mais des fichiers non suivis sont présents\n"
+msgstr ""
+"aucune modification ajoutée à la validation mais des fichiers non suivis "
+"sont présents\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
-msgstr "rien à valider (créez/copiez des fichiers et utilisez \"git add\" pour les suivre)\n"
+msgstr ""
+"rien à valider (créez/copiez des fichiers et utilisez \"git add\" pour les "
+"suivre)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "rien à valider\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "rien à valider (utilisez -u pour afficher les fichiers non suivis)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "rien à valider, la copie de travail est propre\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Encore aucun commit sur "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (aucune branche)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "différent"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "derrière "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "devant "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "impossible de %s : vous avez des modifications non indexées."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "de plus, votre index contient des modifications non validées."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s impossible : votre index contient des modifications non validées."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "impossible de trouver le commit %"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "impossible de lire la réponse IPC"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "impossible de démarrer accept_thread '%s'"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "impossible de démarrer worker[0] pour '%s'"
@@ -9776,7 +10430,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Modifications non indexées après rafraîchissement de l'index :"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Impossible de lire l'index"
 
@@ -9809,9 +10463,11 @@
 
 #: builtin/add.c:343
 msgid "The following paths are ignored by one of your .gitignore files:\n"
-msgstr "Les chemins suivants sont ignorés par un de vos fichiers .gitignore :\n"
+msgstr ""
+"Les chemins suivants sont ignorés par un de vos fichiers .gitignore :\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124 builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "simuler l'action"
@@ -9820,7 +10476,7 @@
 msgid "interactive picking"
 msgstr "sélection interactive"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "sélection interactive des sections"
 
@@ -9838,7 +10494,8 @@
 
 #: builtin/add.c:371
 msgid "renormalize EOL of tracked files (implies -u)"
-msgstr "renormaliser les fins de lignes (EOL) des fichiers suivis (implique -u)"
+msgstr ""
+"renormaliser les fins de lignes (EOL) des fichiers suivis (implique -u)"
 
 #: builtin/add.c:372
 msgid "record only the fact that the path will be added later"
@@ -9850,7 +10507,8 @@
 
 #: builtin/add.c:376
 msgid "ignore paths removed in the working tree (same as --no-all)"
-msgstr "ignorer les chemins effacés dans la copie de travail (identique à --no-all)"
+msgstr ""
+"ignorer les chemins effacés dans la copie de travail (identique à --no-all)"
 
 #: builtin/add.c:378
 msgid "don't add, only refresh the index"
@@ -9858,7 +10516,9 @@
 
 #: builtin/add.c:379
 msgid "just skip files which cannot be added because of errors"
-msgstr "sauter seulement les fichiers qui ne peuvent pas être ajoutés du fait d'erreurs"
+msgstr ""
+"sauter seulement les fichiers qui ne peuvent pas être ajoutés du fait "
+"d'erreurs"
 
 #: builtin/add.c:380
 msgid "check if - even missing - files are ignored in dry run"
@@ -9944,18 +10604,21 @@
 
 #: builtin/add.c:522
 msgid "Option --ignore-missing can only be used together with --dry-run"
-msgstr "L'option --ignore-missing ne peut être utilisée qu'en complément de --dry-run"
+msgstr ""
+"L'option --ignore-missing ne peut être utilisée qu'en complément de --dry-run"
 
 #: builtin/add.c:526
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "Le paramètre '%s' de --chmod doit être soit -x soit +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363 builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file est incompatible avec pathspec arguments"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369 builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul nécessite --pathspec-from-file"
 
@@ -9974,105 +10637,112 @@
 "Éliminez ce message en lançant\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "impossible d'analyser l'auteur du script"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' a été effacé par le crochet applypatch-msg"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Ligne en entrée malformée : '%s'."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Impossible de copier les notes de '%s' vers '%s'"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "échec de fseek"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "impossible d'analyser le patch '%s'"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Seulement une série de patchs StGIT peut être appliquée à la fois"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "horodatage invalide"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "ligne de Date invalide"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "décalage horaire invalide"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Échec de détection du format du patch."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "échec de la création du répertoire '%s'"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Échec de découpage des patchs."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Quand vous avez résolu ce problème, lancez \"%s --continue\"."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Si vous préférez plutôt sauter ce patch, lancez \"%s --skip\"."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
-msgstr "Pour restaurer la branche originale et arrêter de patcher, lancez \"%s --abort\"."
+msgstr ""
+"Pour restaurer la branche originale et arrêter de patcher, lancez \"%s --"
+"abort\"."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
-msgstr "Rustine envoyée avec format=flowed ; les espaces en fin de ligne peuvent être perdus."
+msgstr ""
+"Rustine envoyée avec format=flowed ; les espaces en fin de ligne peuvent "
+"être perdus."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Le patch actuel est vide."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "ligne d'auteur manquante dans le commit %s"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "ligne d'identification invalide : %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
-msgstr "Le dépôt n'a pas les blobs nécessaires pour un retour à une fusion à 3 points."
+msgstr ""
+"Le dépôt n'a pas les blobs nécessaires pour un retour à une fusion à 3 "
+"points."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
-msgstr "Utilisation de l'information de l'index pour reconstruire un arbre de base..."
+msgstr ""
+"Utilisation de l'information de l'index pour reconstruire un arbre de base..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10080,24 +10750,24 @@
 "Avez-vous édité le patch à la main ?\n"
 "Il ne s'applique pas aux blobs enregistrés dans son index."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Retour à un patch de la base et fusion à 3 points..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Échec d'intégration des modifications."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "application à un historique vide"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "impossible de continuer : %s n'existe pas."
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Le corps de la validation est :"
 
@@ -10105,39 +10775,40 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Appliquer ? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all : "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "impossible d'écrire le fichier d'index"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Index sale : impossible d'appliquer des patchs (sales : %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Application de  %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Pas de changement -- Patch déjà appliqué."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "l'application de la rustine a échoué à %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
-msgstr "Utilisez 'git am --show-current-patch=diff' pour visualiser le patch en échec"
+msgstr ""
+"Utilisez 'git am --show-current-patch=diff' pour visualiser le patch en échec"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10145,28 +10816,33 @@
 msgstr ""
 "Aucun changement - avez-vous oublié d'utiliser 'git add' ?\n"
 "S'il n'y a plus rien à indexer, il se peut qu'autre chose ait déjà\n"
-"introduit les mêmes changements ; vous pourriez avoir envie de sauter ce patch."
+"introduit les mêmes changements ; vous pourriez avoir envie de sauter ce "
+"patch."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
-"You should 'git add' each file with resolved conflicts to mark them as such.\n"
+"You should 'git add' each file with resolved conflicts to mark them as "
+"such.\n"
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 "Vous avez encore des chemin non-fusionnés dans votre index.\n"
-"Vous devriez lancer 'git add' sur chaque conflit résolu pour les marquer comme tel.\n"
-"Vous pouvez lancer 'git rm' sur un fichier \"supprimé par eux\" pour accepter son état."
+"Vous devriez lancer 'git add' sur chaque conflit résolu pour les marquer "
+"comme tel.\n"
+"Vous pouvez lancer 'git rm' sur un fichier \"supprimé par eux\" pour "
+"accepter son état."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347 builtin/reset.c:355
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
+#: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Impossible d'analyser l'objet '%s'."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "échec du nettoyage de l'index"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10174,150 +10850,160 @@
 "Vous semblez avoir déplacé la HEAD depuis le dernier échec de 'am'.\n"
 "Pas de retour à ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Valeur invalide pour --patch-format : %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Valeur invalide pour --show-current-patch : %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s est incompatible avec --show-current-patch=%s"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<options>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<options>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "exécution interactive"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "option historique -- no-op"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "permettre de revenir à une fusion à 3 points si nécessaire"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16 builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "être silencieux"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "ajouter une ligne terminale Signed-off-by au message de validation"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "recoder en utf-8 (par défaut)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "passer l'option -k à git-mailinfo"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "passer l'option -b à git-mailinfo"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "passer l'option -m à git-mailinfo"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "passer l'option --keep-cr à git-mailsplit fpour le format mbox"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
-msgstr "ne pas passer l'option --keep-cr à git-mailsplit indépendamment de am.keepcr"
+msgstr ""
+"ne pas passer l'option --keep-cr à git-mailsplit indépendamment de am.keepcr"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "retirer tout le contenu avant la ligne des ciseaux"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "le passer à travers git-mailinfo"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306 builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "le passer jusqu'à git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17 builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261 builtin/pull.c:141
-#: builtin/pull.c:200 builtin/pull.c:217 builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487 builtin/repack.c:489 builtin/show-branch.c:650
-#: builtin/show-ref.c:172 builtin/tag.c:447 parse-options.h:155 parse-options.h:176 parse-options.h:317
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
+#: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
+#: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
+#: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:447 parse-options.h:155 parse-options.h:176
+#: parse-options.h:317
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137 builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481 builtin/verify-tag.c:38
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
+#: builtin/verify-tag.c:38
 msgid "format"
 msgstr "format"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "format de présentation des patchs"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "surcharger le message d'erreur lors d'un échec d'application de patch"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "continuer à appliquer les patchs après résolution d'un conflit"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "synonymes de --continue"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "sauter le patch courant"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "restaurer la branche originale et abandonner les applications de patch"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "abandonne l'opération de patch mais garde HEAD où il est"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "afficher le patch en cours d'application"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "mentir sur la date de validation"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "utiliser l'horodatage actuel pour la date d'auteur"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630 builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537 builtin/rebase.c:1395
-#: builtin/revert.c:117 builtin/tag.c:462
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
+#: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "id-clé"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "signer les commits avec GPG"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(utilisation interne pour git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10325,16 +11011,17 @@
 "L'option -b/--binary ne fait plus rien depuis longtemps,\n"
 "et elle sera supprimée. Veuillez ne plus l'utiliser."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "échec à la lecture de l'index"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
-msgstr "le répertoire précédent de rebasage %s existe toujours mais mbox donnée."
+msgstr ""
+"le répertoire précédent de rebasage %s existe toujours mais mbox donnée."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10343,11 +11030,13 @@
 "Répertoire abandonné %s trouvé.\n"
 "Utilisez \"git am --abort\" pour le supprimer."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
-msgstr "Pas de résolution de l'opération en cours, nous ne sommes pas dans une reprise."
+msgstr ""
+"Pas de résolution de l'opération en cours, nous ne sommes pas dans une "
+"reprise."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "le mode interactif requiert des rustines sur la ligne de commande"
 
@@ -10391,17 +11080,26 @@
 
 #: builtin/bisect--helper.c:24
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
-msgstr "git bisect--helper --bisect-next-check <terme-pour-bon> <terme-pour-mauvais> [<term>]"
+msgstr ""
+"git bisect--helper --bisect-next-check <terme-pour-bon> <terme-pour-mauvais> "
+"[<term>]"
 
 #: builtin/bisect--helper.c:25
-msgid "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --term-new]"
-msgstr "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --term-new]"
+msgid ""
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"term-new]"
+msgstr ""
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"term-new]"
 
 #: builtin/bisect--helper.c:26
 msgid ""
-"git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<paths>...]"
+"git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
+"=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
+"[<paths>...]"
 msgstr ""
-"git bisect--helper --bisect-start [--term-{new,bad}=<terme> --term-{old,good}=<terme>][--no-checkout] [--first-parent] [<mauvais> [<bon>...]] [--] "
+"git bisect--helper --bisect-start [--term-{new,bad}=<terme> --term-{old,good}"
+"=<terme>][--no-checkout] [--first-parent] [<mauvais> [<bon>...]] [--] "
 "[<chemins>...]"
 
 #: builtin/bisect--helper.c:28
@@ -10410,15 +11108,15 @@
 
 #: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
-msgstr "git bisect--helper --bisect-reset (bad|new) [<rév>]"
+msgstr "git bisect--helper --bisect-state (bad|new) [<rév>]"
 
 #: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
-msgstr "git bisect--helper --bisect-reset (good|old) [<rév>...]"
+msgstr "git bisect--helper --bisect-state (good|old) [<rév>...]"
 
 #: builtin/bisect--helper.c:31
 msgid "git bisect--helper --bisect-replay <filename>"
-msgstr "git bisect--helper --bisect-next <nom-de-fichier>"
+msgstr "git bisect--helper --bisect-replay <nom-de-fichier>"
 
 #: builtin/bisect--helper.c:32
 msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
@@ -10434,61 +11132,64 @@
 msgid "could not write to file '%s'"
 msgstr "impossible d'écrire le fichier '%s'"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' n'est pas un terme valide"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "impossible d'utiliser la commande incluse '%s' comme terme"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "impossible de modifier la signification du terme '%s'"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "veuillez utiliser deux termes différents"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Pas de bissection en cours.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' n'est pas un commit valide"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
-msgid "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
-msgstr "échec d'extraction de la HEAD d'origine '%s'. Essayez 'git bisect reset <commit>'."
+msgid ""
+"could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
+msgstr ""
+"échec d'extraction de la HEAD d'origine '%s'. Essayez 'git bisect reset "
+"<commit>'."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Mauvais argument pour bisect_write : %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "impossible d'obtenir l'oid de la révision '%s'"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "impossible d'ouvrir le fichier '%s'"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Commande invalide : vous êtes actuellement dans une bissection %s/%s"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10497,7 +11198,7 @@
 "Vous devez me donner au moins une révision %s et une révision %s.\n"
 "Vous pouvez utiliser \"git bisect %s\" et \"git bisect %s\" pour cela."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10508,7 +11209,7 @@
 "Puis vous devez me donner au moins une révision %s et une révision %s.\n"
 "Vous pouvez utiliser \"git bisect %s\" et \"git bisect %s\" pour cela."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "bissection avec seulement un commit %s"
@@ -10517,15 +11218,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Confirmez-vous [Y/n] ? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "aucun terme défini"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10534,61 +11235,63 @@
 "Vos termes actuels sont %s pour l'état ancien\n"
 "et %s pour le nouvel état.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
 "argument invalide %s pour 'git bisect terms'.\n"
-"Les options supportées sont : --term-good|--term-old et --term-bad|--term-new."
+"Les options supportées sont : --term-good|--term-old et --term-bad|--term-"
+"new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "échec de la préparation du parcours des révisions\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "impossible d'ouvrir '%s' en ajout"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' n'est pas un terme valide"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "option non reconnue : '%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' ne semble être une révision valide"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "mauvaise HEAD - j'ai besoin d'une HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
-msgstr "l'extraction de '%s' a échoué. Essayez 'git bisect start <branche-valide>'."
+msgstr ""
+"l'extraction de '%s' a échoué. Essayez 'git bisect start <branche-valide>'."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "refus de bissecter sur un arbre 'cg-seeked'"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mauvaise HEAD - référence symbolique douteuse"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "réference invalide : '%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Vous devez démarrer avec \"git bisect start\"\n"
 
@@ -10596,104 +11299,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Souhaitez-vous que je le fasse pour vous [Y/n] ? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Veuillez appeler `--bisect-state` avec au moins un argument"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' n'accepte qu'un seul argument."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Mauvaise révision en entrée : %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Mauvaise révision en entrée (pas un commit) : %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "Pas de bissection en cours."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "'%s' ?? de quoi parlez-vous ?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "impossible de lire le fichier '%s' pour rejouer"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "réinitialiser l'état de la bissection"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "vérifier si les termes bons ou mauvais existent"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "afficher les termes de bissection"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "démarrer une session de bissection"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "trouver le prochain commit de bissection"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "marquer l'état d'une références (ou plusieurs)"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "lister les étapes de bissection jusqu'ici"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "rejouer le processus de bissection depuis le fichier fourni"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "sauter certains commits pour l'extraction"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "pas de journal pour BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset supporte soit aucun argument, soit un commit"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check exige 2 ou 3 arguments"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms exige 0 ou 1 argument"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next exige 0 argument"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log exige 0 argument"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "pas de fichier de log donné"
 
@@ -10717,7 +11420,7 @@
 #: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
-msgstr "couleur invalide '%s' dans color.blame.repeatedlines"
+msgstr "couleur invalide '%s' dans color.blame.repeatedLines"
 
 #: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
@@ -10730,22 +11433,29 @@
 
 #: builtin/blame.c:867
 msgid "show blame entries as we find them, incrementally"
-msgstr "montrer les éléments de blâme au fur et à mesure de leur découverte, de manière incrémentale"
+msgstr ""
+"montrer les éléments de blâme au fur et à mesure de leur découverte, de "
+"manière incrémentale"
 
 #: builtin/blame.c:868
 msgid "do not show object names of boundary commits (Default: off)"
-msgstr "ne pas montrer les noms des objets pour les commits de limite (Défaut : désactivé)"
+msgstr ""
+"ne pas montrer les noms des objets pour les commits de limite (Défaut : "
+"désactivé)"
 
 #: builtin/blame.c:869
 msgid "do not treat root commits as boundaries (Default: off)"
-msgstr "ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
+msgstr ""
+"ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
 
 #: builtin/blame.c:870
 msgid "show work cost statistics"
 msgstr "montrer les statistiques de coût d'activité"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94 builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179 builtin/merge.c:297
-#: builtin/multi-pack-index.c:55 builtin/pull.c:119 builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
+#: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "forcer l'affichage de l'état d'avancement"
 
@@ -10793,7 +11503,7 @@
 msgid "ignore whitespace differences"
 msgstr "ignorer les différences d'espace"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "rév"
 
@@ -10807,7 +11517,8 @@
 
 #: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
-msgstr "colorer différemment les métadonnées redondantes avec la ligne précédente"
+msgstr ""
+"colorer différemment les métadonnées redondantes avec la ligne précédente"
 
 #: builtin/blame.c:886
 msgid "color lines by age"
@@ -10815,11 +11526,13 @@
 
 #: builtin/blame.c:887
 msgid "spend extra cycles to find better match"
-msgstr "dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
+msgstr ""
+"dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
 
 #: builtin/blame.c:888
 msgid "use revisions from <file> instead of calling git-rev-list"
-msgstr "utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
+msgstr ""
+"utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
 
 #: builtin/blame.c:889
 msgid "use <file>'s contents as the final image"
@@ -10843,11 +11556,15 @@
 
 #: builtin/blame.c:893
 msgid "process only line range <start>,<end> or function :<funcname>"
-msgstr "traiter seulement l'intervalle de ligne <début>,<fin> ou la fonction : <nom-de-fonction>"
+msgstr ""
+"traiter seulement l'intervalle de ligne <début>,<fin> ou la fonction : <nom-"
+"de-fonction>"
 
 #: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
-msgstr "--progress ne peut pas être utilisé avec --incremental ou les formats porcelaine"
+msgstr ""
+"--progress ne peut pas être utilisé avec --incremental ou les formats "
+"porcelaine"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -10886,11 +11603,13 @@
 
 #: builtin/branch.c:32
 msgid "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>"
-msgstr "git branch [<options>] (-m | -M) [<ancienne-branche>] <nouvelle-branche>"
+msgstr ""
+"git branch [<options>] (-m | -M) [<ancienne-branche>] <nouvelle-branche>"
 
 #: builtin/branch.c:33
 msgid "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>"
-msgstr "git branch [<options>] (-c | -C) [<ancienne-branche>] <nouvelle-branche>"
+msgstr ""
+"git branch [<options>] (-c | -C) [<ancienne-branche>] <nouvelle-branche>"
 
 #: builtin/branch.c:34
 msgid "git branch [<options>] [-r | -a] [--points-at]"
@@ -11030,11 +11749,15 @@
 
 #: builtin/branch.c:579
 msgid "Branch is renamed, but update of config-file failed"
-msgstr "La branche est renommée, mais la mise à jour du fichier de configuration a échoué"
+msgstr ""
+"La branche est renommée, mais la mise à jour du fichier de configuration a "
+"échoué"
 
 #: builtin/branch.c:581
 msgid "Branch is copied, but update of config-file failed"
-msgstr "La branche est copiée, mais la mise à jour du fichier de configuration a échoué"
+msgstr ""
+"La branche est copiée, mais la mise à jour du fichier de configuration a "
+"échoué"
 
 #: builtin/branch.c:597
 #, c-format
@@ -11159,7 +11882,9 @@
 msgid "list branches in columns"
 msgstr "afficher les branches en colonnes"
 
-#: builtin/branch.c:669 builtin/for-each-ref.c:44 builtin/notes.c:415 builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584 builtin/tag.c:477
+#: builtin/branch.c:669 builtin/for-each-ref.c:44 builtin/notes.c:415
+#: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
+#: builtin/tag.c:477
 msgid "object"
 msgstr "objet"
 
@@ -11171,7 +11896,8 @@
 msgid "sorting and filtering are case insensitive"
 msgstr "le tri et le filtrage sont non-sensibles à la casse"
 
-#: builtin/branch.c:672 builtin/for-each-ref.c:40 builtin/tag.c:482 builtin/verify-tag.c:38
+#: builtin/branch.c:672 builtin/for-each-ref.c:40 builtin/tag.c:482
+#: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "format à utiliser pour la sortie"
 
@@ -11219,8 +11945,11 @@
 
 #: builtin/branch.c:814
 #, c-format
-msgid "could not set upstream of HEAD to %s when it does not point to any branch."
-msgstr "impossible de spécifier une branche amont de HEAD par %s qui ne pointe sur aucune branche."
+msgid ""
+"could not set upstream of HEAD to %s when it does not point to any branch."
+msgstr ""
+"impossible de spécifier une branche amont de HEAD par %s qui ne pointe sur "
+"aucune branche."
 
 #: builtin/branch.c:817 builtin/branch.c:840
 #, c-format
@@ -11238,7 +11967,9 @@
 
 #: builtin/branch.c:838
 msgid "could not unset upstream of HEAD when it does not point to any branch."
-msgstr "impossible de désactiver une branche amont de HEAD quand elle ne pointe sur aucune branche."
+msgstr ""
+"impossible de désactiver une branche amont de HEAD quand elle ne pointe sur "
+"aucune branche."
 
 #: builtin/branch.c:844
 #, c-format
@@ -11250,12 +11981,17 @@
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
 "Did you mean to use: -a|-r --list <pattern>?"
 msgstr ""
-"Les options -a et -r de 'git branch' n'ont pas de sens avec un nom de branche.\n"
+"Les options -a et -r de 'git branch' n'ont pas de sens avec un nom de "
+"branche.\n"
 "Vouliez-vous plutôt dire -a|-r --list <motif> ?"
 
 #: builtin/branch.c:858
-msgid "the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead."
-msgstr "l'option '--set-upstream' est obsolète. Utilisez '--track' ou '--set-upstream-to' à la place."
+msgid ""
+"the '--set-upstream' option is no longer supported. Please use '--track' or "
+"'--set-upstream-to' instead."
+msgstr ""
+"l'option '--set-upstream' est obsolète. Utilisez '--track' ou '--set-"
+"upstream-to' à la place."
 
 #: builtin/bugreport.c:15
 msgid "git version:\n"
@@ -11301,15 +12037,18 @@
 "You can delete any lines you don't wish to share.\n"
 msgstr ""
 "Merci de remplir le rapport de bogue Git !\n"
-"Veuillez répondre aux questions suivantes pour nous aider à comprendre votre problème.\n"
+"Veuillez répondre aux questions suivantes pour nous aider à comprendre votre "
+"problème.\n"
 "\n"
-"Qu'avez-vous fait avant l'apparition du bogue ? (Étapes pour reproduire votre problème)\n"
+"Qu'avez-vous fait avant l'apparition du bogue ? (Étapes pour reproduire "
+"votre problème)\n"
 "\n"
 "Quel était le résultat attendu ? (comportement attendu)\n"
 "\n"
 "Que s'est-il passé à la place ? (comportement observé)\n"
 "\n"
-"Quelle différence y a-t-il entre ce que vous attendiez et ce qu'il s'est passé ?\n"
+"Quelle différence y a-t-il entre ce que vous attendiez et ce qu'il s'est "
+"passé ?\n"
 "\n"
 "Autres remarques :\n"
 "\n"
@@ -11368,19 +12107,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fichier> [<nom-de-ref>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "ne pas afficher la barre de progression"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "afficher la barre de progression"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "afficher la barre de progression durant la phase d'écrite des objets"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similaire à --all-progress quand la barre de progression est affichée"
 
@@ -11392,101 +12131,112 @@
 msgid "Need a repository to create a bundle."
 msgstr "La création d'un colis requiert un dépôt."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "ne pas afficher les détails du colis"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s est correct\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Le dépaquetage d'un colis requiert un dépôt."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "être verbeux : doit être placé avant une sous-commande"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Sous-commande inconnue : %s"
 
-#: builtin/cat-file.c:598
-msgid "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <type> | --textconv | --filters) [--path=<path>] <object>"
-msgstr "git cat-file (-t [--allow-unknow-type] | -s [--allow-unknow-type] | -e | -p | <type> | --textconv | --filters) [--path=<chemin>] <objet>"
+#: builtin/cat-file.c:596
+msgid ""
+"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
+"p | <type> | --textconv | --filters) [--path=<path>] <object>"
+msgstr ""
+"git cat-file (-t [--allow-unknow-type] | -s [--allow-unknow-type] | -e | -p "
+"| <type> | --textconv | --filters) [--path=<chemin>] <objet>"
 
-#: builtin/cat-file.c:599
-msgid "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-symlinks] [--textconv | --filters]"
-msgstr "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-symlinks] [--textconv | --filters]"
+#: builtin/cat-file.c:597
+msgid ""
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
+msgstr ""
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "une seule option de traitement ne peut être spécifiée à la fois"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<type> peut être : blob, tree, commit ou tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "afficher le type de l'objet"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "afficher la taille de l'objet"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "sortir avec un code d'erreur nul quand il n'y a aucune erreur"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "afficher avec mise en forme le contenu de l'objet"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "pour les objets blob, lancer textconv sur le contenu de l'objet"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "pour les objets blob, lancer les filtres sur le contenu de l'objet"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "utiliser un chemin spécifique pour --textconv/--filters"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "autoriser -s et -t à travailler sur des objets cassés/corrompus"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "bufferiser la sortie de --batch"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
-msgstr "afficher l'information et le contenu des objets passés en entrée standard"
+msgstr ""
+"afficher l'information et le contenu des objets passés en entrée standard"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "afficher l'information des objets passés en entrée standard"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
-msgstr "suivre les liens symbolique internes à la copie de travail (utilisé avec --batch ou --batch-check)"
+msgstr ""
+"suivre les liens symbolique internes à la copie de travail (utilisé avec --"
+"batch ou --batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "montrer tous les objets avec --batch ou --batch-check"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "ne pas ordonner la sortie de --batch-all-objects"
 
@@ -11512,9 +12262,11 @@
 
 #: builtin/check-attr.c:25 builtin/check-ignore.c:27
 msgid "terminate input and output records by a NUL character"
-msgstr "terminer les enregistrements en entrée et en sortie par un caractère NUL"
+msgstr ""
+"terminer les enregistrements en entrée et en sortie par un caractère NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549 builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "supprimer l'état d'avancement"
 
@@ -11568,12 +12320,15 @@
 msgstr "aucun contact spécifié"
 
 #: builtin/checkout--worker.c:110
-#| msgid "git checkout [<options>] <branch>"
 msgid "git checkout--worker [<options>]"
 msgstr "git checkout--worker [<options>]"
 
-#: builtin/checkout--worker.c:118 builtin/checkout-index.c:201 builtin/column.c:31 builtin/submodule--helper.c:1825 builtin/submodule--helper.c:1828
-#: builtin/submodule--helper.c:1836 builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "chaîne"
 
@@ -11599,7 +12354,9 @@
 
 #: builtin/checkout-index.c:190
 msgid "no warning for existing files and files not in index"
-msgstr "pas d'avertissement pour les fichiers existants et les fichiers absents de l'index"
+msgstr ""
+"pas d'avertissement pour les fichiers existants et les fichiers absents de "
+"l'index"
 
 #: builtin/checkout-index.c:192
 msgid "don't checkout new files"
@@ -11667,119 +12424,123 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Impossible d'ajouter le résultat de fusion pour '%s'"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "%d conflit du fusion recréé"
 msgstr[1] "%d conflits du fusion recréés"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "%d chemin mis à jour depuis %s"
 msgstr[1] "%d chemins mis à jour depuis %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "%d chemin mis à jour depuis l'index"
 msgstr[1] "%d chemins mis à jour depuis l'index"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455 builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' ne peut pas être utilisé avec des mises à jour de chemins"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' ne peut pas être utilisé avec %s"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
-msgstr "Impossible de mettre à jour les chemins et basculer sur la branche '%s' en même temps."
+msgstr ""
+"Impossible de mettre à jour les chemins et basculer sur la branche '%s' en "
+"même temps."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "ni '%s', ni '%s' spécifié"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s' ne peut pas être utilisé quand '%s' n'est pas spécifié"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' ou '%s' ne peut pas être utilisé avec %s"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "le chemin '%s' n'est pas fusionné"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "vous devez d'abord résoudre votre index courant"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
-"impossible de continuer avec des modifications indexées dans les fichiers suivants :\n"
+"impossible de continuer avec des modifications indexées dans les fichiers "
+"suivants :\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Impossible de faire un reflog pour '%s' : %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD est maintenant sur"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "impossible de mettre à jour HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Déjà sur '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Basculement et remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Basculement sur la nouvelle branche '%s'\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Basculement sur la branche '%s'\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... et %d en plus.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11802,7 +12563,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11817,31 +12578,33 @@
 " git branch <new-branch-name> %s\n"
 "\n"
 msgstr[0] ""
-"Si vous souhaitez le garder en créant une nouvelle branche, c'est le bon moment\n"
+"Si vous souhaitez le garder en créant une nouvelle branche, c'est le bon "
+"moment\n"
 "pour le faire avec :\n"
 "\n"
 "git branch <nouvelle-branche> %s\n"
 "\n"
 msgstr[1] ""
-"Si vous souhaitez les garder en créant une nouvelle branche, c'est le bon moment\n"
+"Si vous souhaitez les garder en créant une nouvelle branche, c'est le bon "
+"moment\n"
 "pour le faire avec :\n"
 "\n"
 "git branch <nouvelle-branche> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "erreur interne lors du parcours des révisions"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "La position précédente de HEAD était sur"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Vous êtes sur une branche qui doit encore naître"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11850,7 +12613,7 @@
 "'%s' pourrait être un fichier local ou un branche de suivi.\n"
 "Veuillez utiliser -- (et --no-guess en facultatif) pour les distinguer"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11870,51 +12633,51 @@
 "ambigu, vous pouvez positionner checkout.defaultRemote=origin dans\n"
 "votre config."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' correspond à plusieurs (%d) branches de suivi à distance"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "une seule référence attendue"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "une seule référence attendue, %d fournies."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide : %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la référence n'est pas un arbre : %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "branche attendue, mais étiquette '%s' reçue"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "une branche est attendue, mais une branche distante '%s' a été reçue"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "une branche est attendue, mais '%s' a été reçue"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "une branche est attendue, mais un commit '%s' a été reçu"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11922,7 +12685,7 @@
 "impossible de basculer de branche pendant une fusion\n"
 "Envisagez \"git merge --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11930,7 +12693,7 @@
 "impossible de basculer de branche pendant une session am\n"
 "Envisagez \"git am --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11938,7 +12701,7 @@
 "impossible de basculer de branche pendant un rebasage\n"
 "Envisagez \"git rebase --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11946,7 +12709,7 @@
 "impossible de basculer de branche pendant un picorage\n"
 "Envisagez \"git cherry-pick --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11954,136 +12717,139 @@
 "impossible de basculer de branche pendant un retour\n"
 "Envisagez \"git revert --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "vous basculez de branche en cours de bissection"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "impossible d'utiliser des chemins avec un basculement de branches"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' ne peut pas être utilisé avec un basculement de branches"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460 builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' ne peut pas être utilisé avec '%s'"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' n'accepte pas <point-de-départ>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Impossible de basculer de branche vers '%s' qui n'est pas un commit"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "argument de branche ou de commit manquant"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "effectuer une fusion à 3 points avec la nouvelle branche"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "style"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "style de conflit (merge (fusion) ou diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "détacher la HEAD au commit nommé"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "paramétrer les coordonnées de branche amont pour une nouvelle branche"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "forcer l'extraction (laisser tomber les modifications locales)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "nouvelle branche"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "nouvelle branche sans parent"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "mettre à jour les fichiers ignorés (par défaut)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
-msgstr "ne pas vérifier si une autre copie de travail contient le référence fournie"
+msgstr ""
+"ne pas vérifier si une autre copie de travail contient le référence fournie"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "extraire notre version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "extraire leur version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "ne pas limiter les spécificateurs de chemins aux seuls éléments creux"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c et --orphan sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p et --overlay sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track requiert un nom de branche"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "nom de branche manquant ; essayez -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "impossible de résoudre %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "spécification de chemin invalide"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
-msgstr "'%s' n'est pas un commit et une branche '%s' ne peut pas en être créée depuis"
+msgstr ""
+"'%s' n'est pas un commit et une branche '%s' ne peut pas en être créée depuis"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach n'accepte pas un argument de chemin '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file est incompatible avec --detach"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file est incompatible avec --patch"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12091,74 +12857,80 @@
 "git checkout: --ours/--theirs, --force et --merge sont incompatibles lors\n"
 "de l'extraction de l'index."
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "vous devez spécifier un ou des chemins à restaurer"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836 builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170 builtin/remote.c:172
-#: builtin/submodule--helper.c:2720 builtin/worktree.c:484 builtin/worktree.c:486
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
+#: builtin/worktree.c:486
 msgid "branch"
 msgstr "branche"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "créer et extraire une nouvelle branche"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "créer/réinitialiser et extraire une branche"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "créer un reflog pour une nouvelle branche"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
-msgstr "essayer d'interpréter 'git checkout <branche-inexistante>' (par défaut)"
+msgstr ""
+"essayer d'interpréter 'git checkout <branche-inexistante>' (par défaut)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "utiliser le mode de superposition (défaut)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "créer et basculer sur une nouvelle branche"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "créer/réinitialiser et basculer sur une branche"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "interpréter 'git switch <branche-inexistante>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "laisser tomber les modifications locales"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "de quel <arbre-esque> faire l'extraction"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "restaurer l'index"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "restaurer l'arbre de travail (par défaut)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "ignorer les entrées non-fusionnées"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "utiliser le mode de superposition"
 
 #: builtin/clean.c:29
-msgid "git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
-msgstr "git clean [-d] [-f] [-i] [-n] [-q] [-e <motif>] [-x | -X] [--] <chemins>..."
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+msgstr ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <motif>] [-x | -X] [--] <chemins>..."
 
 #: builtin/clean.c:33
 #, c-format
@@ -12185,7 +12957,7 @@
 msgid "could not lstat %s\n"
 msgstr "lstat de %s impossible\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12198,7 +12970,7 @@
 "foo         - sélectionner un élément par un préfixe unique\n"
 "            - (vide) ne rien sélectionner\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12219,32 +12991,33 @@
 "*          - choisir tous les éléments\n"
 "           - (vide) terminer la sélection\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568 git-add--interactive.perl:573
+#: builtin/clean.c:519 git-add--interactive.perl:568
+#: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Hein (%s) ?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Entrez les motifs à ignorer>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "ATTENTION : Impossible de trouver les éléments correspondant à : %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Sélectionner les éléments à supprimer"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Supprimer %s [y/N] ? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12262,58 +13035,68 @@
 "help                - cet écran\n"
 "?                   - aide pour la sélection en ligne"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Supprimerait l'élément suivant :"
 msgstr[1] "Supprimerait les éléments suivants :"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Plus de fichier à nettoyer, sortie."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "ne pas afficher les noms des fichiers supprimés"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "forcer"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "nettoyage interactif"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "supprimer les répertoires entiers"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567 builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186 builtin/ls-files.c:650
-#: builtin/name-rev.c:526 builtin/name-rev.c:528 builtin/show-ref.c:179
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "motif"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "ajouter <motif> aux règles ignore"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "supprimer les fichiers ignorés, aussi"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "supprimer seulement les fichiers ignorés"
 
-#: builtin/clean.c:929
-msgid "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to clean"
-msgstr "clean.requireForce positionné à true et ni -i, -n ou -f fourni ; refus de nettoyer"
+#: builtin/clean.c:925
+msgid ""
+"clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
+"clean"
+msgstr ""
+"clean.requireForce positionné à true et ni -i, -n ou -f fourni ; refus de "
+"nettoyer"
 
-#: builtin/clean.c:932
-msgid "clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean"
-msgstr "clean.requireForce à true par défaut et ni -i, -n ou -f fourni ; refus de nettoyer"
+#: builtin/clean.c:928
+msgid ""
+"clean.requireForce defaults to true and neither -i, -n, nor -f given; "
+"refusing to clean"
+msgstr ""
+"clean.requireForce à true par défaut et ni -i, -n ou -f fourni ; refus de "
+"nettoyer"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x et -X ne peuvent pas être utilisés ensemble"
 
@@ -12329,7 +13112,7 @@
 msgid "don't create a checkout"
 msgstr "ne pas créer d'extraction"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "créer un dépôt nu"
 
@@ -12361,23 +13144,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "nombre de sous-modules clonés en parallèle"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "répertoire-modèle"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "répertoire depuis lequel les modèles vont être utilisés"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832 builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "dépôt de référence"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834 builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "utiliser seulement --reference pour cloner"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549 builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "nom"
@@ -12394,7 +13180,8 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "chemin vers git-upload-pack sur le serveur distant"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863 builtin/pull.c:208
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
+#: builtin/pull.c:208
 msgid "depth"
 msgstr "profondeur"
 
@@ -12402,7 +13189,8 @@
 msgid "create a shallow clone of that depth"
 msgstr "créer un clone superficiel de cette profondeur"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804 builtin/pull.c:211
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
+#: builtin/pull.c:211
 msgid "time"
 msgstr "heure"
 
@@ -12410,31 +13198,36 @@
 msgid "create a shallow clone since a specific time"
 msgstr "créer un clone superficiel depuis une date spécifique"
 
-#: builtin/clone.c:134 builtin/fetch.c:184 builtin/fetch.c:207 builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1318
+#: builtin/clone.c:134 builtin/fetch.c:184 builtin/fetch.c:207
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1318
 msgid "revision"
 msgstr "révision"
 
 #: builtin/clone.c:135 builtin/fetch.c:185 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
-msgstr "approfondir l'historique d'un clone superficiel en excluant une révision"
+msgstr ""
+"approfondir l'historique d'un clone superficiel en excluant une révision"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844 builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "cloner seulement une branche, HEAD ou --branch"
 
 #: builtin/clone.c:139
 msgid "don't clone any tags, and make later fetches not to follow them"
-msgstr "ne pas cloner les tags et indiquer aux récupérations futures de ne pas le faire"
+msgstr ""
+"ne pas cloner les tags et indiquer aux récupérations futures de ne pas le "
+"faire"
 
 #: builtin/clone.c:141
 msgid "any cloned submodules will be shallow"
 msgstr "tous les sous-modules clonés seront superficiels"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "séparer le répertoire git de la copie de travail"
 
@@ -12446,29 +13239,36 @@
 msgid "set config inside the new repository"
 msgstr "régler la configuration dans le nouveau dépôt"
 
-#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77 builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "spécifique au serveur"
 
-#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77 builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "option à transmettre"
 
-#: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234 builtin/push.c:585
+#: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "n'utiliser que des adresses IPv4"
 
-#: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237 builtin/push.c:587
+#: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "n'utiliser que des adresses IPv6"
 
 #: builtin/clone.c:154
 msgid "any cloned submodules will use their remote-tracking branch"
-msgstr "tous les sous-modules clonés utiliseront leur branche de suivi à distance"
+msgstr ""
+"tous les sous-modules clonés utiliseront leur branche de suivi à distance"
 
 #: builtin/clone.c:156
 msgid "initialize sparse-checkout file to include only files at root"
-msgstr "initialiser le fichier d'extraction clairsemée pour n'inclure que les fichiers à la racine"
+msgstr ""
+"initialiser le fichier d'extraction clairsemée pour n'inclure que les "
+"fichiers à la racine"
 
 #: builtin/clone.c:292
 msgid ""
@@ -12539,7 +13339,9 @@
 
 #: builtin/clone.c:784
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
-msgstr "la HEAD distante réfère à une référence non existante, impossible de l'extraire.\n"
+msgstr ""
+"la HEAD distante réfère à une référence non existante, impossible de "
+"l'extraire.\n"
 
 #: builtin/clone.c:816
 msgid "unable to checkout working tree"
@@ -12557,7 +13359,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "impossible de délier le fichier temporaire alternates"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Trop d'arguments."
 
@@ -12579,7 +13381,7 @@
 msgid "repository '%s' does not exist"
 msgstr "le dépôt '%s' n'existe pas"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "la profondeur %s n'est pas un entier positif"
@@ -12587,7 +13389,8 @@
 #: builtin/clone.c:1049
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
-msgstr "le chemin de destination '%s' existe déjà et n'est pas un répertoire vide."
+msgstr ""
+"le chemin de destination '%s' existe déjà et n'est pas un répertoire vide."
 
 #: builtin/clone.c:1055
 #, c-format
@@ -12599,7 +13402,8 @@
 msgid "working tree '%s' already exists."
 msgstr "la copie de travail '%s' existe déjà."
 
-#: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272 builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "impossible de créer les répertoires de premier niveau dans '%s'"
@@ -12620,8 +13424,12 @@
 msgstr "Clonage dans '%s'...\n"
 
 #: builtin/clone.c:1135
-msgid "clone --recursive is not compatible with both --reference and --reference-if-able"
-msgstr "clone --recursive n'est pas compatible avec à la fois --reference et --reference-if-able"
+msgid ""
+"clone --recursive is not compatible with both --reference and --reference-if-"
+"able"
+msgstr ""
+"clone --recursive n'est pas compatible avec à la fois --reference et --"
+"reference-if-able"
 
 #: builtin/clone.c:1188 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
@@ -12630,15 +13438,20 @@
 
 #: builtin/clone.c:1229
 msgid "--depth is ignored in local clones; use file:// instead."
-msgstr "--depth est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
+msgstr ""
+"--depth est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
 
 #: builtin/clone.c:1231
 msgid "--shallow-since is ignored in local clones; use file:// instead."
-msgstr "--shallow-since est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
+msgstr ""
+"--shallow-since est ignoré dans les clones locaux : utilisez plutôt \"file://"
+"\"."
 
 #: builtin/clone.c:1233
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
-msgstr "--shallow-exclude est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
+msgstr ""
+"--shallow-exclude est ignoré dans les clones locaux : utilisez plutôt "
+"\"file://\"."
 
 #: builtin/clone.c:1235
 msgid "--filter is ignored in local clones; use file:// instead."
@@ -12652,12 +13465,16 @@
 msgid "--local is ignored"
 msgstr "--local est ignoré"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "le transport distant a retourné une erreur"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "La branche distante %s n'a pas été trouvée dans le dépôt amont %s"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Vous semblez avoir cloné un dépôt vide."
 
@@ -12694,33 +13511,40 @@
 msgstr "--command doit être le premier argument"
 
 #: builtin/commit-graph.c:13 builtin/commit-graph.c:22
-msgid "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
-msgstr "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
+msgid ""
+"git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
+msgstr ""
+"git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 
 #: builtin/commit-graph.c:14 builtin/commit-graph.c:27
 msgid ""
-"git commit-graph write [--object-dir <objdir>] [--append] [--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-paths] [--[no-]max-new-"
-"filters <n>] [--[no-]progress] <split options>"
+"git commit-graph write [--object-dir <objdir>] [--append] [--"
+"split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
+"paths] [--[no-]max-new-filters <n>] [--[no-]progress] <split options>"
 msgstr ""
-"git commit-graph write [--object-dir <répertoire-d'objet>] [--append] [--split[=<stratégie>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-paths] [--"
-"[no-]max-new-filters <n>] [--[no-]progress] <options de division>"
+"git commit-graph write [--object-dir <répertoire-d'objet>] [--append] [--"
+"split[=<stratégie>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
+"paths] [--[no-]max-new-filters <n>] [--[no-]progress] <options de division>"
 
 #: builtin/commit-graph.c:64
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "impossible de trouver le répertoire objet correspondant à %s"
 
-#: builtin/commit-graph.c:80 builtin/commit-graph.c:210 builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:80 builtin/commit-graph.c:210
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "répertoire"
 
-#: builtin/commit-graph.c:81 builtin/commit-graph.c:211 builtin/commit-graph.c:317
+#: builtin/commit-graph.c:81 builtin/commit-graph.c:211
+#: builtin/commit-graph.c:317
 msgid "the object directory to store the graph"
 msgstr "le répertoire d'objet où stocker le graphe"
 
 #: builtin/commit-graph.c:83
 msgid "if the commit-graph is split, only verify the tip file"
-msgstr "si le graphe de commit est divisé, vérifier seulement le fichier sommet"
+msgstr ""
+"si le graphe de commit est divisé, vérifier seulement le fichier sommet"
 
 #: builtin/commit-graph.c:106
 #, c-format
@@ -12756,7 +13580,8 @@
 
 #: builtin/commit-graph.c:219
 msgid "include all commits already in the commit-graph file"
-msgstr "inclure tous les commits déjà présents dans le fichier de graphe de commits"
+msgstr ""
+"inclure tous les commits déjà présents dans le fichier de graphe de commits"
 
 #: builtin/commit-graph.c:221
 msgid "enable computation for changed paths"
@@ -12768,7 +13593,8 @@
 
 #: builtin/commit-graph.c:228
 msgid "maximum number of commits in a non-base split commit-graph"
-msgstr "le nombre maximum de commits dans un graphe de commit divisé pas de base"
+msgstr ""
+"le nombre maximum de commits dans un graphe de commit divisé pas de base"
 
 #: builtin/commit-graph.c:230
 msgid "maximum ratio between two levels of a split commit-graph"
@@ -12791,15 +13617,19 @@
 msgstr "Collecte des commits depuis l'entrée"
 
 #: builtin/commit-tree.c:18
-msgid "git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F <file>)...] <tree>"
-msgstr "git commit-tree [(-p <parent>)...] [-S[<idclé>]] [(-m <message>)...] [(-F <fichier>)...] <arbre>"
+msgid ""
+"git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F "
+"<file>)...] <tree>"
+msgstr ""
+"git commit-tree [(-p <parent>)...] [-S[<idclé>]] [(-m <message>)...] [(-F "
+"<fichier>)...] <arbre>"
 
 #: builtin/commit-tree.c:31
 #, c-format
 msgid "duplicate parent %s ignored"
 msgstr "le parent dupliqué %s est ignoré"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "nom d'objet invalide %s"
@@ -12827,11 +13657,13 @@
 msgid "id of a parent commit object"
 msgstr "id d'un objet commit parent"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282 builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605 builtin/tag.c:456
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
+#: builtin/tag.c:456
 msgid "message"
 msgstr "message"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "message de validation"
 
@@ -12839,7 +13671,8 @@
 msgid "read commit log message from file"
 msgstr "lire le message de validation depuis un fichier"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299 builtin/pull.c:176 builtin/revert.c:118
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
+#: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "signer la validation avec GPG"
 
@@ -12865,7 +13698,8 @@
 "it empty. You can repeat your command with --allow-empty, or you can\n"
 "remove the commit entirely with \"git reset HEAD^\".\n"
 msgstr ""
-"Vous avez demandé de corriger le commit le plus récent, mais le faire le rendrait\n"
+"Vous avez demandé de corriger le commit le plus récent, mais le faire le "
+"rendrait\n"
 "vide. Vous pouvez répéter votre commande avec --allow-empty, ou vous pouvez\n"
 "supprimer complètement le commit avec \"git reset HEAD^\".\n"
 
@@ -12877,7 +13711,8 @@
 "    git commit --allow-empty\n"
 "\n"
 msgstr ""
-"Le picorage précédent est à présent vide, vraisemblablement dû à une résolution de conflit.\n"
+"Le picorage précédent est à présent vide, vraisemblablement dû à une "
+"résolution de conflit.\n"
 "Si vous souhaitez tout de même le valider, utilisez :\n"
 "\n"
 "    git commit --allow-empty\n"
@@ -12910,7 +13745,7 @@
 "pour continuer le picorage des commits restants.\n"
 "Si vous souhaitez sauter ce commit, utilisez :\n"
 "\n"
-"    git cherry-pick --skipped\n"
+"    git cherry-pick --skip\n"
 "\n"
 
 #: builtin/commit.c:324
@@ -12987,7 +13822,7 @@
 "impossible de sélectionner un caractère de commentaire\n"
 "qui n'est pas utilisé dans le message de validation actuel"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "impossible de rechercher le commit %s"
@@ -13023,7 +13858,48 @@
 msgid "could not write commit template"
 msgstr "impossible d'écrire le modèle de commit"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
+"commençant par '%c' seront ignorées.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
+"commençant par '%c' seront ignorées, et un message vide abandonne la "
+"validation.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes "
+"commençant\n"
+"par '%c' seront conservées ; vous pouvez les supprimer vous-même si vous le "
+"souhaitez.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
+"commençant par '%c' seront conservées ; vous pouvez les supprimer vous-même\n"
+"si vous le souhaitez. Un message vide abandonne la validation.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13037,7 +13913,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "et essayez à nouveau.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13051,379 +13927,389 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "et essayez à nouveau.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
-"commençant par '%c' seront ignorées, et un message vide abandonne la validation.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
-"commençant par '%c' seront conservées ; vous pouvez les supprimer vous-même\n"
-"si vous le souhaitez. Un message vide abandonne la validation.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAuteur :     %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sDate :       %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sValidateur : %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Impossible de lire l'index"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "impossible de passer les lignes finales à --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Erreur lors de la construction des arbres"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Veuillez fournir le message en utilisant l'option -m ou -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
-msgstr "--author '%s' n'est pas de la forme 'Nom <email>' ni ne correspond à aucun auteur existant"
+msgstr ""
+"--author '%s' n'est pas de la forme 'Nom <email>' ni ne correspond à aucun "
+"auteur existant"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Mode de fichier ignoré invalide '%s'"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Mode de fichier non suivi invalide '%s'"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long et -z sont incompatibles"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Vous êtes en pleine fusion -- impossible de reformuler."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "Vous êtes en plein picorage -- impossible de reformuler."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr "impossible de combiner l'option reword de --fixup avec le chemin '%s'"
 
-#: builtin/commit.c:1226
-msgid "reword option of --fixup is mutually exclusive with --patch/--interactive/--all/--include/--only"
-msgstr "l'option reword de --fixup est mutuellement exclusive avec --patch/--interactive/--all/--include/--only"
+#: builtin/commit.c:1233
+msgid ""
+"reword option of --fixup is mutually exclusive with --patch/--interactive/--"
+"all/--include/--only"
+msgstr ""
+"l'option reword de --fixup est mutuellement exclusive avec --patch/--"
+"interactive/--all/--include/--only"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "L'utilisation simultanée de --reset-author et --author n'a pas de sens"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Il n'y a rien à corriger."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Vous êtes en pleine fusion -- impossible de corriger (amend)."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Vous êtes en plein picorage -- impossible de corriger (amend)."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "Vous êtes en plein rebasage -- impossible de corriger (amend)."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Les options --squash et --fixup ne peuvent pas être utilisées ensemble"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Une seule option parmi -c/-C/-F/--fixup peut être utilisée."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "L'option -m ne peut pas être combinée avec -c/-C/-F."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author ne peut être utilisé qu'avec -C, -c ou --amend."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
-msgstr "Une seule option parmi --include/--only/--all/--interactive/--patch peut être utilisée."
+msgstr ""
+"Une seule option parmi --include/--only/--all/--interactive/--patch peut "
+"être utilisée."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "option inconnue : --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "des chemins '%s ...' avec l'option -a n'a pas de sens"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "afficher l'état avec concision"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "afficher l'information de branche"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "afficher l'information de remisage"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "calcule les valeurs complètes en avance/en retard"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560 builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "sortie pour traitement automatique"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "afficher l'état en format long (par défaut)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "terminer les éléments par NUL"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656 builtin/fast-export.c:1198 builtin/fast-export.c:1201 builtin/fast-export.c:1204
-#: builtin/rebase.c:1407 parse-options.h:337
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
+#: builtin/fast-export.c:1198 builtin/fast-export.c:1201
+#: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "mode"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
-msgstr "afficher les fichiers non suivis, \"mode\" facultatif : all (tous), normal, no. (Défaut : all)"
+msgstr ""
+"afficher les fichiers non suivis, \"mode\" facultatif : all (tous), normal, "
+"no. (Défaut : all)"
 
-#: builtin/commit.c:1497
-msgid "show ignored files, optional modes: traditional, matching, no. (Default: traditional)"
-msgstr "afficher les fichiers ignorés, \"mode\" facultatif : traditional (traditionnel), matching (correspondant), no. (Défaut : traditional)"
+#: builtin/commit.c:1504
+msgid ""
+"show ignored files, optional modes: traditional, matching, no. (Default: "
+"traditional)"
+msgstr ""
+"afficher les fichiers ignorés, \"mode\" facultatif : traditional "
+"(traditionnel), matching (correspondant), no. (Défaut : traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "quand"
 
-#: builtin/commit.c:1500
-msgid "ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"
-msgstr "ignorer les modifications dans les sous-modules, \"quand\" facultatif : all (tous), dirty (sale), untracked (non suivi). (Défaut : all)"
+#: builtin/commit.c:1507
+msgid ""
+"ignore changes to submodules, optional when: all, dirty, untracked. "
+"(Default: all)"
+msgstr ""
+"ignorer les modifications dans les sous-modules, \"quand\" facultatif : all "
+"(tous), dirty (sale), untracked (non suivi). (Défaut : all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "afficher les fichiers non suivis en colonnes"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "ne pas détecter les renommages"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
-msgstr "détecter les renommages, en spécifiant optionnellement le facteur de similarité"
+msgstr ""
+"détecter les renommages, en spécifiant optionnellement le facteur de "
+"similarité"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
-msgstr "Combinaison non supportée d'arguments sur les fichiers ignorés et non-suivis"
+msgstr ""
+"Combinaison non supportée d'arguments sur les fichiers ignorés et non-suivis"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "supprimer le résumé après une validation réussie"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "afficher les diff dans le modèle de message de validation"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Options du message de validation"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "lire le message depuis un fichier"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "auteur"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "remplacer l'auteur pour la validation"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "date"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "remplacer la date pour la validation"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622 parse-options.h:329 ref-filter.h:90
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
+#: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "commit"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "réutiliser et éditer le message du commit spécifié"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "réutiliser le message du commit spécifié"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
-#| msgid "amend previous commit"
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]commit"
 
-#: builtin/commit.c:1621
-msgid "use autosquash formatted message to fixup or amend/reword specified commit"
-msgstr "utiliser un message au format autosquash pour corriger ou reformuler le commit spécifié"
+#: builtin/commit.c:1631
+msgid ""
+"use autosquash formatted message to fixup or amend/reword specified commit"
+msgstr ""
+"utiliser un message au format autosquash pour corriger ou reformuler le "
+"commit spécifié"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
-msgstr "utiliser un message au format autosquash pour compresser le commit spécifié"
+msgstr ""
+"utiliser un message au format autosquash pour compresser le commit spécifié"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
-msgstr "à présent je suis l'auteur de la validation (utilisé avec -C/-c/--amend)"
+msgstr ""
+"à présent je suis l'auteur de la validation (utilisé avec -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "ligne de fin"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "ajouter des lignes terminales personnaliser"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302 builtin/pull.c:145 builtin/revert.c:110
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
+#: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "ajouter une ligne terminale Signed-off-by"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "utiliser le fichier de modèle spécifié"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "forcer l'édition du commit"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "inclure l'état dans le modèle de message de validation"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Valider les options des contenus"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "valider tous les fichiers modifiés"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "ajouter les fichiers spécifiés à l'index pour la validation"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "ajouter des fichiers en mode interactif"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "ajouter les modifications en mode interactif"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "valider seulement les fichiers spécifiés"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "éviter d'utiliser les crochets pre-commit et commit-msg"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "afficher ce qui serait validé"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "corriger la validation précédente"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "éviter d'utiliser le crochet post-rewrite"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "accepter d'enregistrer une modification vide"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "accepter d'enregistrer une modification avec un message vide"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Fichier MERGE_HEAD corrompu (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "impossible de lire MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "impossible de lire le message de validation : %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Abandon de la validation dû à un message de validation vide.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Abandon de la validation ; vous n'avez pas édité le message\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
-msgstr "Abandon de la validation dû à un corps de message de validation vide.\n"
+msgstr ""
+"Abandon de la validation dû à un corps de message de validation vide.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -13500,7 +14386,8 @@
 
 #: builtin/config.c:142
 msgid "replace all matching variables: name value [value-pattern]"
-msgstr "remplacer toutes les variables correspondant : nom valeur [motif-de-valeur]"
+msgstr ""
+"remplacer toutes les variables correspondant : nom valeur [motif-de-valeur]"
 
 #: builtin/config.c:143
 msgid "add a new variable: name value"
@@ -13528,7 +14415,8 @@
 
 #: builtin/config.c:149
 msgid "use string equality when comparing values to 'value-pattern'"
-msgstr "utiliser l'égalité de chaînes lors de la comparaison de 'motif-de-valeur'"
+msgstr ""
+"utiliser l'égalité de chaînes lors de la comparaison de 'motif-de-valeur'"
 
 #: builtin/config.c:150
 msgid "open an editor"
@@ -13592,11 +14480,15 @@
 
 #: builtin/config.c:165
 msgid "show origin of config (file, standard input, blob, command line)"
-msgstr "afficher l'origine de la configuration (fichier, entrée standard, blob, ligne de commande)"
+msgstr ""
+"afficher l'origine de la configuration (fichier, entrée standard, blob, "
+"ligne de commande)"
 
 #: builtin/config.c:166
 msgid "show scope of config (worktree, local, global, system, command)"
-msgstr "afficher la portée de configuration (arbre de travail, local, global, système, commande)"
+msgstr ""
+"afficher la portée de configuration (arbre de travail, local, global, "
+"système, commande)"
 
 #: builtin/config.c:167 builtin/env--helper.c:45
 msgid "value"
@@ -13690,7 +14582,8 @@
 msgstr ""
 "--worktree ne peut pas être utilisé avec des arbres de travail multiples\n"
 "à moins que l'extension worktreeConfig soit configuré. Veuillez lire\n"
-"la section \"CONFIGURATION FILE\" de \"git help worktree\" pour plus de détails"
+"la section \"CONFIGURATION FILE\" de \"git help worktree\" pour plus de "
+"détails"
 
 #: builtin/config.c:743
 msgid "--get-color and variable type are incoherent"
@@ -13705,8 +14598,12 @@
 msgstr "--name-only n'est applicable qu'avec --list ou --get-regexp"
 
 #: builtin/config.c:767
-msgid "--show-origin is only applicable to --get, --get-all, --get-regexp, and --list"
-msgstr "--show-origin n'est applicable qu'avec --get, --get-all, --get-regexp ou --list"
+msgid ""
+"--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
+"list"
+msgstr ""
+"--show-origin n'est applicable qu'avec --get, --get-all, --get-regexp ou --"
+"list"
 
 #: builtin/config.c:773
 msgid "--default is only applicable to --get"
@@ -13779,7 +14676,8 @@
 
 #: builtin/credential-cache--daemon.c:316
 msgid "credential-cache--daemon unavailable; no unix socket support"
-msgstr "credential-cache-daemon non disponible ; pas de gestion des sockets unix"
+msgstr ""
+"credential-cache--daemon non disponible ; pas de gestion des sockets unix"
 
 #: builtin/credential-cache.c:154
 msgid "credential-cache unavailable; no unix socket support"
@@ -13828,7 +14726,9 @@
 #: builtin/describe.c:330
 #, c-format
 msgid "No exact match on refs or tags, searching to describe\n"
-msgstr "Pas de correspondance exacte sur des réfs ou des étiquettes, recherche par describe\n"
+msgstr ""
+"Pas de correspondance exacte sur des réfs ou des étiquettes, recherche par "
+"describe\n"
 
 #: builtin/describe.c:397
 #, c-format
@@ -13864,7 +14764,8 @@
 "more than %i tags found; listed %i most recent\n"
 "gave up search at %s\n"
 msgstr ""
-"plus de %i étiquettes ont été trouvées; seules les %i plus récentes sont affichées\n"
+"plus de %i étiquettes ont été trouvées; seules les %i plus récentes sont "
+"affichées\n"
 "abandon de la recherche à %s\n"
 
 #: builtin/describe.c:529
@@ -13912,7 +14813,8 @@
 
 #: builtin/describe.c:564
 msgid "consider <n> most recent tags (default: 10)"
-msgstr "considérer uniquement les <n> étiquettes le plus récentes (défaut : 10)"
+msgstr ""
+"considérer uniquement les <n> étiquettes le plus récentes (défaut : 10)"
 
 #: builtin/describe.c:566
 msgid "only consider tags matching <pattern>"
@@ -13936,7 +14838,8 @@
 
 #: builtin/describe.c:575
 msgid "append <mark> on broken working tree (default: \"-broken\")"
-msgstr "ajouter <marque> si la copie de travail est cassée (défaut : \"-broken\")"
+msgstr ""
+"ajouter <marque> si la copie de travail est cassée (défaut : \"-broken\")"
 
 #: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
@@ -14051,63 +14954,67 @@
 msgid "you may want to cleanup or recover these."
 msgstr "vous pourriez souhaiter les nettoyer ou les récupérer."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "utiliser `diff.guitool` au lieu de `diff.tool`"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "réalise un diff de répertoire complet"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "ne pas confirmer avant de lancer l'outil de diff"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "utiliser les liens symboliques en mode de diff de répertoire"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "outil"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "utiliser l'outil de diff spécifié"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "afficher une liste des outils de diff utilisables avec `--tool`"
 
-#: builtin/difftool.c:716
-msgid "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit code"
-msgstr "provoque la fin de 'git-difftool' si l'outil de diff invoqué renvoie un code non-nul"
+#: builtin/difftool.c:715
+msgid ""
+"make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
+"code"
+msgstr ""
+"provoque la fin de 'git-difftool' si l'outil de diff invoqué renvoie un code "
+"non-nul"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "spécifier une commande personnalisée pour visualiser les différences"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "passé à `diff`"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool exige un arbre de travail ou --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff est incompatible avec --no-index"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool et --extcmd sont mutuellement exclusifs"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "pas d'<outil> spécifié pour --tool=<outil>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "pas de <commande> spécifié pour --extcmd=<commande>"
 
@@ -14125,17 +15032,24 @@
 
 #: builtin/env--helper.c:48
 msgid "be quiet only use git_env_*() value as exit code"
-msgstr "mode silencieux n'utilisant la valeur de git_env_*() que pour le code de sortie"
+msgstr ""
+"mode silencieux n'utilisant la valeur de git_env_*() que pour le code de "
+"sortie"
 
 #: builtin/env--helper.c:67
 #, c-format
 msgid "option `--default' expects a boolean value with `--type=bool`, not `%s`"
-msgstr "l'option `--default` attend une valeur booléenne avec `--type=bool`, pas `%s`"
+msgstr ""
+"l'option `--default` attend une valeur booléenne avec `--type=bool`, pas `%s`"
 
 #: builtin/env--helper.c:82
 #, c-format
-msgid "option `--default' expects an unsigned long value with `--type=ulong`, not `%s`"
-msgstr "l'option `--default` attend une valeur entier long non signé avec `--type=ulong`, pas `%s`"
+msgid ""
+"option `--default' expects an unsigned long value with `--type=ulong`, not `"
+"%s`"
+msgstr ""
+"l'option `--default` attend une valeur entier long non signé avec `--"
+"type=ulong`, pas `%s`"
 
 #: builtin/fast-export.c:29
 msgid "git fast-export [rev-list-opts]"
@@ -14143,7 +15057,9 @@
 
 #: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
-msgstr "Erreur : impossible d'exporter des étiquettes imbriquées à moins que --mark-tags ne soit spécifié."
+msgstr ""
+"Erreur : impossible d'exporter des étiquettes imbriquées à moins que --mark-"
+"tags ne soit spécifié."
 
 #: builtin/fast-export.c:1177
 msgid "--anonymize-map token cannot be empty"
@@ -14159,11 +15075,14 @@
 
 #: builtin/fast-export.c:1202
 msgid "select handling of tags that tag filtered objects"
-msgstr "sélectionner la gestion des étiquettes qui pointent sur des objets filtrés"
+msgstr ""
+"sélectionner la gestion des étiquettes qui pointent sur des objets filtrés"
 
 #: builtin/fast-export.c:1205
 msgid "select handling of commit messages in an alternate encoding"
-msgstr "sélectionner la gestion des messages de validation dans un encodage alternatif"
+msgstr ""
+"sélectionner la gestion des messages de validation dans un encodage "
+"alternatif"
 
 #: builtin/fast-export.c:1208
 msgid "dump marks to this file"
@@ -14193,7 +15112,7 @@
 msgid "skip output of blob data"
 msgstr "sauter l'affichage de données de blob"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "spécificateur de référence"
 
@@ -14215,7 +15134,9 @@
 
 #: builtin/fast-export.c:1229
 msgid "reference parents which are not in fast-export stream by object id"
-msgstr "référencer les parents qui ne sont pas dans le flux d'export rapide par id d'objet"
+msgstr ""
+"référencer les parents qui ne sont pas dans le flux d'export rapide par id "
+"d'objet"
 
 #: builtin/fast-export.c:1231
 msgid "show original object ids of blobs/commits"
@@ -14231,7 +15152,8 @@
 
 #: builtin/fast-export.c:1271
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
-msgstr "Impossible d'utiliser à la fois --import-marks et --import-marks-if-exists"
+msgstr ""
+"Impossible d'utiliser à la fois --import-marks et --import-marks-if-exists"
 
 #: builtin/fast-import.c:3088
 #, c-format
@@ -14255,12 +15177,15 @@
 
 #: builtin/fast-import.c:3322
 msgid "Expected format name:filename for submodule rewrite option"
-msgstr "Format attendu nom:<nom de fichier> pour l'option de réécriture de sous-module"
+msgstr ""
+"Format attendu nom:<nom de fichier> pour l'option de réécriture de sous-"
+"module"
 
 #: builtin/fast-import.c:3377
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
-msgstr "la fonctionnalité '%s' est interdite en entrée sans --allow-unsafe-features"
+msgstr ""
+"la fonctionnalité '%s' est interdite en entrée sans --allow-unsafe-features"
 
 #: builtin/fetch-pack.c:242
 #, c-format
@@ -14329,15 +15254,21 @@
 
 #: builtin/fetch.c:164
 msgid "modify the refspec to place all refs within refs/prefetch/"
-msgstr "modifier le spécificateur de référence pour placer les références dans refs/prefetch/"
+msgstr ""
+"modifier le spécificateur de référence pour placer les références dans refs/"
+"prefetch/"
 
 #: builtin/fetch.c:166 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
-msgstr "éliminer les branches de suivi distant si la branche n'existe plus dans le dépôt distant"
+msgstr ""
+"éliminer les branches de suivi distant si la branche n'existe plus dans le "
+"dépôt distant"
 
 #: builtin/fetch.c:168
 msgid "prune local tags no longer on remote and clobber changed tags"
-msgstr "éliminer les étiquettes locales qui ont disparu du dépôt distant et qui encombrent les étiquettes modifiées"
+msgstr ""
+"éliminer les étiquettes locales qui ont disparu du dépôt distant et qui "
+"encombrent les étiquettes modifiées"
 
 #: builtin/fetch.c:169 builtin/fetch.c:194 builtin/pull.c:122
 msgid "on-demand"
@@ -14359,7 +15290,8 @@
 msgid "allow updating of HEAD ref"
 msgstr "permettre la mise à jour de la référence HEAD"
 
-#: builtin/fetch.c:181 builtin/fetch.c:187 builtin/pull.c:209 builtin/pull.c:218
+#: builtin/fetch.c:181 builtin/fetch.c:187 builtin/pull.c:209
+#: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "approfondir l'historique d'un clone superficiel"
 
@@ -14376,8 +15308,12 @@
 msgstr "préfixer ceci à la sortie du chemin du sous-module"
 
 #: builtin/fetch.c:195
-msgid "default for recursive fetching of submodules (lower priority than config files)"
-msgstr "par défaut pour la récupération récursive de sous-modules (priorité plus basse que les fichiers de config)"
+msgid ""
+"default for recursive fetching of submodules (lower priority than config "
+"files)"
+msgstr ""
+"par défaut pour la récupération récursive de sous-modules (priorité plus "
+"basse que les fichiers de config)"
 
 #: builtin/fetch.c:199 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
@@ -14397,7 +15333,9 @@
 
 #: builtin/fetch.c:210
 msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
-msgstr "ne pas récupérer le fichier paquet ; à la place, afficher les ancêtres des sommets de négociation"
+msgstr ""
+"ne pas récupérer le fichier paquet ; à la place, afficher les ancêtres des "
+"sommets de négociation"
 
 #: builtin/fetch.c:213 builtin/fetch.c:215
 msgid "run 'maintenance --auto' after fetching"
@@ -14405,7 +15343,9 @@
 
 #: builtin/fetch.c:217 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
-msgstr "vérifier les mises à jour forcées sur toutes les branches mises à jour"
+msgstr ""
+"vérifier les mises à jour forcées (forced-updates) sur toutes les branches "
+"mises à jour"
 
 #: builtin/fetch.c:219
 msgid "write the commit-graph after fetching"
@@ -14422,7 +15362,8 @@
 #: builtin/fetch.c:757
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
-msgstr "le paramètre de configuration fetch.output contient une valeur invalide %s"
+msgstr ""
+"le paramètre de configuration fetch.output contient une valeur invalide %s"
 
 #: builtin/fetch.c:856
 #, c-format
@@ -14445,7 +15386,8 @@
 msgid "[tag update]"
 msgstr "[mise à jour de l'étiquette]"
 
-#: builtin/fetch.c:885 builtin/fetch.c:922 builtin/fetch.c:944 builtin/fetch.c:956
+#: builtin/fetch.c:885 builtin/fetch.c:922 builtin/fetch.c:944
+#: builtin/fetch.c:956
 msgid "unable to update local ref"
 msgstr "impossible de mettre à jour la référence locale"
 
@@ -14481,17 +15423,18 @@
 msgstr ""
 "Fetch indique normalement quelles branches ont subi une mise à jour forcée,\n"
 "mais ceci a été désactivé. Pour ré-activer, utilisez le drapeau\n"
-"'--show-forced-update' ou lancez 'git config fetch.showForcedUpdates true'."
+"'--show-forced-updates' ou lancez 'git config fetch.showForcedUpdates true'."
 
 #: builtin/fetch.c:1069
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
-"'--no-show-forced-updates' or run 'git config fetch.showForcedUpdates false'\n"
+"'--no-show-forced-updates' or run 'git config fetch.showForcedUpdates "
+"false'\n"
 " to avoid this check.\n"
 msgstr ""
 "%.2f secondes ont été nécessaires pour vérifier les mises à jour forcées.\n"
-"Vous pouvez utiliser '--no-show-forced-update' ou lancer\n"
+"Vous pouvez utiliser '--no-show-forced-updates' ou lancer\n"
 "'git config fetch.showForcedUpdates false' pour éviter ceci.\n"
 
 #: builtin/fetch.c:1101
@@ -14501,8 +15444,10 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "%s rejeté parce que les racines superficielles ne sont pas mises à jour"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr ""
+"%s rejeté parce que les  mises à jour de racines superficielles ne sont pas "
+"permises"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -14602,62 +15547,74 @@
 msgid "You need to specify a tag name."
 msgstr "Vous devez spécifier un nom d'étiquette."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only nécessite au moins un --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Une profondeur négative dans --deepen n'est pas supportée"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen et --depth sont mutuellement exclusifs"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth et --unshallow ne peuvent pas être utilisés ensemble"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow sur un dépôt complet n'a pas de sens"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all n'accepte pas d'argument de dépôt"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all n'a pas de sens avec des spécifications de référence"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Distant ou groupe distant inexistant : %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
-msgstr "La récupération d'un groupe et les spécifications de référence n'ont pas de sens"
+msgstr ""
+"La récupération d'un groupe et les spécifications de référence n'ont pas de "
+"sens"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "le distant doit être fourni lors de l'utilisation de --negotiate-only"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Le protocole ne prend pas en charge --negotiate-only, abandon."
 
-#: builtin/fetch.c:2079
-msgid "--filter can only be used with the remote configured in extensions.partialclone"
-msgstr "--filter ne peut être utilisé qu'avec le dépôt distant configuré dans extensions.partialClone"
+#: builtin/fetch.c:2082
+msgid ""
+"--filter can only be used with the remote configured in extensions."
+"partialclone"
+msgstr ""
+"--filter ne peut être utilisé qu'avec le dépôt distant configuré dans "
+"extensions.partialclone"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic ne peut être utilisée qu'en récupérant depuis un seul distant"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin ne peut être utilisée qu'en récupérant depuis un seul distant"
 
 #: builtin/fmt-merge-msg.c:7
-msgid "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
-msgstr "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <fichier>]"
+msgid ""
+"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
+msgstr ""
+"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <fichier>]"
 
 #: builtin/fmt-merge-msg.c:18
 msgid "populate log with at most <n> entries from shortlog"
@@ -14743,19 +15700,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<config> <arguments-de-commande>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "config"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "clé de config qui stocke la liste des chemins de dépôts"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "--config=<config> manquant"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "inconnu"
 
@@ -14771,16 +15728,16 @@
 msgid "warning in %s %s: %s"
 msgstr "avertissement dans l'objet %s %s : %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "lien cassé dans l'objet %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "type d'objet inconnu dans le lien"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14789,212 +15746,212 @@
 "lien cassé depuis %7s %s\n"
 "             vers %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "objet %s manquant %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "objet %s inatteignable %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "objet %s fantôme %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "impossible de créer le fichier lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "impossible de finir '%s'"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Vérification de l'objet %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Vérification de la connectivité (%d objets)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Vérification de l'objet %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "liens cassés"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "racine %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "étiquetage de l'objet %s %s (%s) dans %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s : objet corrompu ou manquant"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s : entrée %s de journal de références invalide"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Vérification du journal de réferences %s-> %s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s : pointeur de sha1 invalide %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "l'objet %s n'est pas un commit"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "note : pas de référence par défaut"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s : objet corrompu ou manquant : %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s : impossible d'analyser : %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "mauvais fichier de sha1 : %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Vérification du répertoire d'objet"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Vérification des répertoires d'objet"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Vérification du lien %s"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "%s invalide"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s pointe sur quelque chose bizarre (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s : la HEAD détachée ne pointe sur rien"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "note : %s pointe sur une branche non-née (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Vérification de l'arbre cache"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s : pointer sha1 invalide dans l'arbre de cache"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "non-arbre dans l'arbre de cache"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<options>] [<objet>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "afficher les objets inaccessibles"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "afficher les objets en suspens"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "afficher les étiquettes"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "signaler les nœuds racines"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "considérer les objets de l'index comme nœuds tête"
 
 # translated from man page
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "considérer les reflogs comme nœuds tête (par défaut)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "inspecter aussi les objets pack et alternatifs"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "ne vérifier que la connectivité"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "activer une vérification plus strict"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "écrire les objets en suspens dans .git/lost-found"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "afficher la progression"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "afficher les noms étendus pour les objets inaccessibles"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Vérification des objets"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s : objet manquant"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "paramètre invalide : sha-1 attendu, '%s' trouvé"
@@ -15034,7 +15991,8 @@
 msgstr ""
 "Le dernier lancement de gc a rapporté l'erreur suivante. Veuillez corriger\n"
 "la cause et supprimer %s.\n"
-"Le nettoyage automatique n'aura pas lieu jusqu'à ce que le fichier soit supprimé.\n"
+"Le nettoyage automatique n'aura pas lieu jusqu'à ce que le fichier soit "
+"supprimé.\n"
 "\n"
 "%s"
 
@@ -15052,7 +16010,9 @@
 
 #: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
-msgstr "forcer le lancement du ramasse-miettes même si un autre ramasse-miettes tourne déjà"
+msgstr ""
+"forcer le lancement du ramasse-miettes même si un autre ramasse-miettes "
+"tourne déjà"
 
 #: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
@@ -15071,7 +16031,9 @@
 #: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
-msgstr "Compression automatique du dépôt en tâche de fond pour optimiser les performances.\n"
+msgstr ""
+"Compression automatique du dépôt en tâche de fond pour optimiser les "
+"performances.\n"
 
 #: builtin/gc.c:609
 #, c-format
@@ -15085,20 +16047,28 @@
 
 #: builtin/gc.c:650
 #, c-format
-msgid "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
-msgstr "un ramasse-miettes est déjà en cours sur la machine '%s' pid %<PRIuMAX> (utilisez --force si ce n'est pas le cas)"
+msgid ""
+"gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
+msgstr ""
+"un ramasse-miettes est déjà en cours sur la machine '%s' pid %<PRIuMAX> "
+"(utilisez --force si ce n'est pas le cas)"
 
 #: builtin/gc.c:705
-msgid "There are too many unreachable loose objects; run 'git prune' to remove them."
-msgstr "Il y a trop d'objets seuls inaccessibles ; lancez 'git prune' pour les supprimer."
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
+msgstr ""
+"Il y a trop d'objets seuls inaccessibles ; lancez 'git prune' pour les "
+"supprimer."
 
 #: builtin/gc.c:715
-msgid "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
-msgstr "git maintenance run [--auto] [--[no-]quiet] [--task=<tâche>] [--schedule]"
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<tâche>] [--schedule]"
 
 #: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
-msgstr "--schedule n'est pas accepté"
+msgstr "--no-schedule n'est pas accepté"
 
 #: builtin/gc.c:750
 #, c-format
@@ -15134,8 +16104,10 @@
 msgstr "échec de 'git multi-pack-index repack'"
 
 #: builtin/gc.c:1179
-msgid "skipping incremental-repack task because core.multiPackIndex is disabled"
-msgstr "tâche incremental-repack ignorée parce que core.multiPackIndex est désactivé"
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+"tâche incremental-repack ignorée parce que core.multiPackIndex est désactivé"
 
 #: builtin/gc.c:1283
 #, c-format
@@ -15218,11 +16190,15 @@
 
 #: builtin/gc.c:1879
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
-msgstr "echec du lancement de 'crontab -l' ; votre système n'a pas l'air de fournir 'cron'"
+msgstr ""
+"echec du lancement de 'crontab -l' ; votre système n'a pas l'air de fournir "
+"'cron'"
 
 #: builtin/gc.c:1896
 msgid "failed to run 'crontab'; your system might not support 'cron'"
-msgstr "echec du lancement de 'crontab' ; votre système n'a pas l'air de fournir 'cron'"
+msgstr ""
+"echec du lancement de 'crontab' ; votre système n'a pas l'air de fournir "
+"'cron'"
 
 #: builtin/gc.c:1900
 msgid "failed to open stdin of 'crontab'"
@@ -15234,7 +16210,9 @@
 
 #: builtin/gc.c:1976
 msgid "another process is scheduling background maintenance"
-msgstr "un autre processus est en train de programmer une maintenance en tâche de fond"
+msgstr ""
+"un autre processus est en train de programmer une maintenance en tâche de "
+"fond"
 
 #: builtin/gc.c:2000
 msgid "failed to add repo to global config"
@@ -15267,7 +16245,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793 builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "pas de support des fils, ignore %s"
@@ -15282,248 +16261,260 @@
 msgid "unable to grep from object of type %s"
 msgstr "impossible de faire un grep sur un objet de type %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "l'option '%c' attend une valeur numérique"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "rechercher dans l'index plutôt que dans la copie de travail"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "rechercher dans les contenus non gérés par git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "rechercher dans les fichiers suivis et non-suivis"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorer les fichiers spécifiés via '.gitignore'"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "rechercher récursivement dans chaque sous-module"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "afficher les lignes qui ne correspondent pas"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "correspondance insensible à la casse"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "rechercher les motifs aux séparateurs de mots"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "traiter les fichiers binaires comme texte"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "ne pas chercher les motifs dans les fichiers binaires"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "traiter les fichiers binaires avec les filtres textconv"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "rechercher dans les sous-répertoires (défaut)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "descendre au plus de <profondeur> dans l'arborescence"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "utiliser des expressions régulières étendues POSIX"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "utiliser des expressions régulières basiques POSIX (par défaut)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "interpréter les motifs comme de chaînes fixes"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "utiliser des expressions régulières compatibles avec Perl"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "afficher les numéros de ligne"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "afficher le numéro de colonne de la première correspondance"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "ne pas pas afficher les noms de fichier"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "afficher les noms de fichier"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "afficher les noms de fichiers relativement au répertoire de base"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "n'afficher que les noms de fichiers au lieu des lignes correspondant"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "synonyme pour --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "n'afficher que les noms des fichiers sans correspondance"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "imprimer une caractère NUL après le noms de fichier"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "n'afficher que les parties correspondantes d'une ligne"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "afficher le nombre de correspondances au lieu des lignes correspondant"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "mettre en évidence les correspondances"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
-msgstr "imprimer une ligne vide entre les correspondances de fichiers différents"
+msgstr ""
+"imprimer une ligne vide entre les correspondances de fichiers différents"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
-msgstr "afficher le nom de fichier une fois au dessus des correspondances du même fichier"
+msgstr ""
+"afficher le nom de fichier une fois au dessus des correspondances du même "
+"fichier"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "afficher <n> lignes de contexte avant et après les correspondances"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "afficher <n> lignes de contexte avant les correspondances"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "afficher <n> lignes de contexte après les correspondances"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "utiliser <n> fils de travail"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "raccourci pour -C NUM"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
-msgstr "afficher une ligne avec le nom de la fonction avant les correspondances"
+msgstr ""
+"afficher une ligne avec le nom de la fonction avant les correspondances"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "afficher la fonction contenante"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "lire les motifs depuis fichier"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "rechercher <motif>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "combiner les motifs spécifiés par -e"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
-msgstr "indiquer des correspondances avec le code de sortie mais sans rien afficher"
+msgstr ""
+"indiquer des correspondances avec le code de sortie mais sans rien afficher"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
-msgstr "n'afficher que les correspondances de fichiers qui correspondent à tous les motifs"
+msgstr ""
+"n'afficher que les correspondances de fichiers qui correspondent à tous les "
+"motifs"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "pagineur"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "afficher les fichiers correspondant dans le pagineur"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permettre l'appel de grep(1) (ignoré par ce build)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "aucun motif fourni"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
-msgstr "--no-index ou --untracked ne peuvent pas être utilisés avec des révisions"
+msgstr ""
+"--no-index ou --untracked ne peuvent pas être utilisés avec des révisions"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "impossible de résoudre la révision : %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked non supportée avec --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "option de combinaison invalide, ignore --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "pas de support des fils, ignore --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "nombre de fils spécifié invalide (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager ne fonctionne que sur la copie de travail"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached ou --untracked ne peuvent pas être utilisés avec --no-index"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked ne peut pas être utilisé avec --cached"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard ne peut pas être utilisé avec du contenu suivi"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "--cached et des arbres sont fournis en même temps"
 
 #: builtin/hash-object.c:85
-msgid "git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] [--] <file>..."
-msgstr "git hash-object [-t <type>] [-w] [--path=<fichier> | --no-filters] [--stdin] [--] <fichier>..."
+msgid ""
+"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] "
+"[--] <file>..."
+msgstr ""
+"git hash-object [-t <type>] [-w] [--path=<fichier> | --no-filters] [--stdin] "
+"[--] <fichier>..."
 
 #: builtin/hash-object.c:86
 msgid "git hash-object  --stdin-paths"
@@ -15546,8 +16537,11 @@
 msgstr "stocker le fichier tel quel sans filtrage"
 
 #: builtin/hash-object.c:104
-msgid "just hash any random garbage to create corrupt objects for debugging Git"
-msgstr "juste hasher n'importe quel contenu pour créer des objets corrompus pour debugger Git"
+msgid ""
+"just hash any random garbage to create corrupt objects for debugging Git"
+msgstr ""
+"juste hasher n'importe quel contenu pour créer des objets corrompus pour "
+"debugger Git"
 
 #: builtin/hash-object.c:105
 msgid "process file as it were from this path"
@@ -15635,30 +16629,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s' : visualiseur de manuel inconnu."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "aucun visualiseur de manuel n'a pris en charge la demande"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "aucun visualiseur de 'info' n'a pris en charge la demande"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' est un alias de '%s'"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "mauvais chaîne alias.%s : %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "usage : %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' pour plus d'information"
 
@@ -15696,7 +16690,7 @@
 msgid "used more bytes than were available"
 msgstr "plus d'octets utilisés que disponibles"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "le paquet est trop grand pour la définition actuelle de off_t"
 
@@ -15723,235 +16717,239 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "la version de paquet %<PRIu32> non supportée"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "le paquet a un mauvais objet à l'offset %<PRIuMAX> : %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "la décompression (inflate) a retourné %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "dépassement de la valeur d'offset pour l'objet delta de base"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "l'objet delta de base est hors limite"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "type d'objet inconnu %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "impossible de lire (pread) le fichier paquet"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "fin prématurée du fichier paquet, %<PRIuMAX> octet lu"
 msgstr[1] "fin prématurée du fichier paquet, %<PRIuMAX> octets lus"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "grave incohérence dans la décompression (inflate)"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788 builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "COLLISION SHA1 TROUVÉE AVEC %s !"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171 builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "impossible de lire %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "impossible de lire l'information existante de l'objet %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "impossible de lire l'objet existant %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objet blob invalide %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "erreur de fsck dans l'objet empaqueté"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Tous les objets enfants de %s ne sont pas accessibles"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "échec d'application du delta"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Réception d'objets"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Indexation d'objets"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "le paquet est corrompu (SHA1 ne correspond pas)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "impossible d'obtenir le statut (fstat) du fichier paquet"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "le paquet est invalide à la fin"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "confusion extrême dans parse_pack_objects()"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Résolution des deltas"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "impossible de créer le fil : %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "confusion extrême"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "complété avec %d objet local"
 msgstr[1] "complété avec %d objets locaux"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
-msgstr "Somme de contrôle de fin inattendue pour %s (corruption sur le disque ?)"
+msgstr ""
+"Somme de contrôle de fin inattendue pour %s (corruption sur le disque ?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "le paquet a %d delta non résolu"
 msgstr[1] "le paquet a %d deltas non résolus"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "impossible de compresser l'objet ajouté (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "l'objet local %s est corrompu"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "le nom de fichier paquet '%s' ne se termine pas par '.%s'"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "impossible d'écrire le fichier %s '%s'"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "impossible de fermer le fichier %s écrit '%s'"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "erreur en fermeture du fichier paquet"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "impossible de stocker le fichier paquet"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "impossible de stocker le fichier d'index"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mauvais pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Impossible d'ouvrir le fichier paquet existant '%s'"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Impossible d'ouvrir le fichier paquet d'index existant pour '%s'"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "pas un delta : %d objet"
 msgstr[1] "pas un delta : %d objets"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "longueur chaînée = %d : %lu objet"
 msgstr[1] "longueur chaînée = %d : %lu objets"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Impossible de revenir au répertoire de travail courant"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807 builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "mauvais %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "algorithme d'empreinte inconnu '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin ne peut pas être utilisé sans --stdin"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiert un dépôt git"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format ne peut pas être utilisé avec --stdin"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify sans nom de fichier paquet donné"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "erreur de fsck dans les objets paquets"
 
@@ -15995,110 +16993,122 @@
 msgid "not copying templates from '%s': %s"
 msgstr "pas de copie des modèles depuis '%s' : %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "nom de branche initiale invalide : '%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "impossible de traiter le fichier de type %d"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "impossible de déplacer %s vers %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "essai de réinitialisation du dépôt avec une empreinte différente"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s existe déjà"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-initialisation : --initial-branch=%s ignoré"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Dépôt Git existant partagé réinitialisé dans %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Dépôt Git existant réinitialisé dans %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Dépôt Git vide partagé initialisé dans %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Dépôt Git vide initialisé dans %s%s\n"
 
-#: builtin/init-db.c:517
-msgid "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]] [<directory>]"
-msgstr "git init [-q | --quiet] [--bare] [--template=<répertoire-modèle>] [--shared[=<permissions>]] [<répertoire>]"
+#: builtin/init-db.c:518
+msgid ""
+"git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
+"shared[=<permissions>]] [<directory>]"
+msgstr ""
+"git init [-q | --quiet] [--bare] [--template=<répertoire-modèle>] [--"
+"shared[=<permissions>]] [<répertoire>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "permissions"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "spécifier que le dépôt git sera partagé entre plusieurs utilisateurs"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "outrepasser le nom de la branche initiale"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "empreinte"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "spécifier l'algorithme d'empreinte à utiliser"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir et --bare sont mutuellement exclusifs"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "impossible de créer le répertoire (mkdir) %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "impossible de se déplacer vers le répertoire (chdir) %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
-msgid "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-dir=<directory>)"
-msgstr "%s (ou --work-tree=<répertoire>) n'est pas autorisé sans spécifier %s (ou --git-dir=<répertoire>)"
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+"%s (ou --work-tree=<répertoire>) n'est pas autorisé sans spécifier %s (ou --"
+"git-dir=<répertoire>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Impossible d'accéder à l'arbre de travail '%s'"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir est incompatible avec un dépôt nu"
 
 #: builtin/interpret-trailers.c:16
-msgid "git interpret-trailers [--in-place] [--trim-empty] [(--trailer <token>[(=|:)<value>])...] [<file>...]"
-msgstr "git interpret-trailers [--in-place] [--trim-empty] [(--trailer <symbole>[(=|:)<valeur>])...] [<fichier>...]"
+msgid ""
+"git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
+"<token>[(=|:)<value>])...] [<file>...]"
+msgstr ""
+"git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
+"<symbole>[(=|:)<valeur>])...] [<fichier>...]"
 
 #: builtin/interpret-trailers.c:95
 msgid "edit files in place"
@@ -16186,385 +17196,410 @@
 msgstr "décorer les options"
 
 #: builtin/log.c:190
-msgid "trace the evolution of line range <start>,<end> or function :<funcname> in <file>"
-msgstr "tracer l'évolution d'une plage <début>,<fin> ou d'une fonction <nom-de-fonction> dans <fichier>"
+msgid ""
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr ""
+"tracer l'évolution d'une plage <début>,<fin> ou d'une fonction <nom-de-"
+"fonction> dans <fichier>"
 
 #: builtin/log.c:213
 msgid "-L<range>:<file> cannot be used with pathspec"
-msgstr "-L<plage>:<fichier> ne peut pas être utilisé avec une spécificateur de chemin"
+msgstr ""
+"-L<plage>:<fichier> ne peut pas être utilisé avec une spécificateur de chemin"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Sortie finale : %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s : fichier incorrect"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "impossible de lire l'objet %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "type inconnu : %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s : couverture invalide pour le mode de description"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers sans valeur"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "impossible d'ouvrir le fichier correctif %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "exactement une plage nécessaire"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "ceci n'est pas une plage"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "la lettre de motivation doit être au format courriel"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "échec de création du fichier de lettre de motivation"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to aberrant : %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<options>] [<depuis> | <plage de révisions>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "deux répertoires de sortie ?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "commit inconnu %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207 builtin/replace.c:210
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "échec à résoudre '%s' comme une référence valide"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "impossible de trouver la base de fusion exacte"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
 "Or you could specify base commit by --base=<base-commit-id> manually"
 msgstr ""
-"impossible de récupérer l'amont, si vous voulez enregistrer le commit de base automatiquement,\n"
-"veuillez utiliser git branch --set-upstream-to pour suivre une branche distante.\n"
-"Ou vous pouvez spécifier le commit de base par --base=<id-du-commit-de-base> manuellement"
+"impossible de récupérer l'amont, si vous voulez enregistrer le commit de "
+"base automatiquement,\n"
+"veuillez utiliser git branch --set-upstream-to pour suivre une branche "
+"distante.\n"
+"Ou vous pouvez spécifier le commit de base par --base=<id-du-commit-de-base> "
+"manuellement"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "échec à trouver la base de fusion exacte"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "le commit de base devrait être l'ancêtre de la liste de révisions"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "le commit de base ne devrait pas faire partie de la liste de révisions"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "impossible d'obtenir l'id du patch"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
-msgstr "échec d'inférence de l'origine de différence d'intervalles de la série actuelle"
+msgstr ""
+"échec d'inférence de l'origine de différence d'intervalles de la série "
+"actuelle"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
-msgstr "utilisation de '%s' comme une différence d'intervalle pour la série actuelle"
+msgstr ""
+"utilisation de '%s' comme une différence d'intervalle pour la série actuelle"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "utiliser [PATCH n/m] même avec un patch unique"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "utiliser [PATCH] même avec des patchs multiples"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "afficher les patchs sur la sortie standard"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "générer une lettre de motivation"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
-msgstr "utiliser une séquence simple de nombres pour les nom des fichiers de sortie"
+msgstr ""
+"utiliser une séquence simple de nombres pour les nom des fichiers de sortie"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "utiliser <sfx> au lieu de '.patch'"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "démarrer la numérotation des patchs à <n> au lieu de 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "reroll-count"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "marquer la série comme une Nième réédition"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "taille maximum du nom du fichier de sortie"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "utiliser [RFC PATCH] au lieu de [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-mode"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
-msgstr "générer des parties de la lettre d'introduction à partir de la description de la branche"
+msgstr ""
+"générer des parties de la lettre d'introduction à partir de la description "
+"de la branche"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "utiliser [<préfixe>] au lieu de [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "stocker les fichiers résultats dans <répertoire>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "ne pas retirer/ajouter [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "ne pas imprimer les diffs binaires"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "écrire une empreinte à zéro dans l'entête From"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "ne pas inclure un patch correspondant à un commit amont"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "afficher le format du patch au lieu du défaut (patch + stat)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "Communication"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "en-tête"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "ajouter l'en-tête de courriel"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "courriel"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "ajouter l'en-tête \"To:\""
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "ajouter l'en-tête \"Cc:\""
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
-msgstr "renseigner l'adresse From à <ident> (ou à l'ident du validateur si absent)"
+msgstr ""
+"renseigner l'adresse From à <ident> (ou à l'ident du validateur si absent)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "id-message"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "répondre dans le premier message à <id-message>"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "limite"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "attacher le patch"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "patch à l'intérieur"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
-msgstr "activer l'enfilage de message, styles : shallow (superficiel), deep (profond)"
+msgstr ""
+"activer l'enfilage de message, styles : shallow (superficiel), deep (profond)"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "signature"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "ajouter une signature"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "commit-de-base"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "ajouter un arbre prérequis à la série de patchs"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "ajouter une signature depuis un fichier"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "ne pas afficher les noms de fichiers des patchs"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
-msgstr "afficher la barre de progression durant la phase de génération des patchs"
-
-#: builtin/log.c:1821
-msgid "show changes against <rev> in cover letter or single patch"
-msgstr "afficher les modifications par rapport à <rév> dans la première page ou une rustine"
+msgstr ""
+"afficher la barre de progression durant la phase de génération des patchs"
 
 #: builtin/log.c:1824
-msgid "show changes against <refspec> in cover letter or single patch"
-msgstr "afficher les modifications par rapport à <refspec> dans la première page ou une rustine"
+msgid "show changes against <rev> in cover letter or single patch"
+msgstr ""
+"afficher les modifications par rapport à <rév> dans la première page ou une "
+"rustine"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1827
+msgid "show changes against <refspec> in cover letter or single patch"
+msgstr ""
+"afficher les modifications par rapport à <refspec> dans la première page ou "
+"une rustine"
+
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "pourcentage par lequel la création est pondérée"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "ligne d'identification invalide : %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n et -k sont mutuellement exclusifs"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc et -k sont mutuellement exclusifs"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only n'a pas de sens"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status n'a pas de sens"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check n'a pas de sens"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, et --output-directory sont mutuellement exclusifs"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff requiert --cover-letter ou une rustine unique"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff :"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff contre v%d :"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor requiert --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff requiert --cover-letter ou une rustine unique"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Diff-intervalle :"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Diff-intervalle contre v%d :"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "lecture du fichier de signature '%s' impossible"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Génération des patchs"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "échec de création des fichiers en sortie"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<branche_amont> [<head> [<limite>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
-msgid "Could not find a tracked remote branch, please specify <upstream> manually.\n"
-msgstr "Impossible de trouver une branche distante suivie, merci de spécifier <branche_amont> manuellement.\n"
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+"Impossible de trouver une branche distante suivie, merci de spécifier "
+"<branche_amont> manuellement.\n"
 
 #: builtin/ls-files.c:563
 msgid "git ls-files [<options>] [<file>...]"
@@ -16608,7 +17643,8 @@
 
 #: builtin/ls-files.c:638
 msgid "show files on the filesystem that need to be removed"
-msgstr "afficher les fichiers du système de fichiers qui ont besoin d'être supprimés"
+msgstr ""
+"afficher les fichiers du système de fichiers qui ont besoin d'être supprimés"
 
 #: builtin/ls-files.c:640
 msgid "show 'other' directories' names only"
@@ -16664,7 +17700,9 @@
 
 #: builtin/ls-files.c:670
 msgid "pretend that paths removed since <tree-ish> are still present"
-msgstr "considérer que les chemins supprimés depuis <arbre ou apparenté> sont toujours présents"
+msgstr ""
+"considérer que les chemins supprimés depuis <arbre ou apparenté> sont "
+"toujours présents"
 
 #: builtin/ls-files.c:672
 msgid "show debugging data"
@@ -16714,7 +17752,9 @@
 
 #: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
-msgstr "sortir avec un code d'erreur 2 si aucune correspondance de référence n'est trouvée"
+msgstr ""
+"sortir avec un code d'erreur 2 si aucune correspondance de référence n'est "
+"trouvée"
 
 #: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
@@ -16754,11 +17794,12 @@
 
 #: builtin/ls-tree.c:145
 msgid "list entire tree; not just current directory (implies --full-name)"
-msgstr "afficher l'arbre entier ; pas seulement le répertoire courant (implique --full-name)"
+msgstr ""
+"afficher l'arbre entier ; pas seulement le répertoire courant (implique --"
+"full-name)"
 
 #. TRANSLATORS: keep <> in "<" mail ">" info.
 #: builtin/mailinfo.c:14
-#| msgid "git diff --no-index [<options>] <path> <path>"
 msgid "git mailinfo [<options>] <msg> <patch> < mail >info"
 msgstr "git mailinfo [<options>] <msg> <rustine> < mail >info"
 
@@ -16852,8 +17893,12 @@
 msgstr "trouver où <validation> a divergé du reflog de <référence>"
 
 #: builtin/merge-file.c:9
-msgid "git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> <orig-file> <file2>"
-msgstr "git merge-file [<options>] [-L <nom1> [-L <orig> [-L <nom2>]]] <fichier1> <fichier-orig> <fichier2>"
+msgid ""
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
+msgstr ""
+"git merge-file [<options>] [-L <nom1> [-L <orig> [-L <nom2>]]] <fichier1> "
+"<fichier-orig> <fichier2>"
 
 #: builtin/merge-file.c:35
 msgid "send results to standard output"
@@ -16922,14 +17967,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<options>] [<commit>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "le commutateur `m' a besoin d'une valeur"
@@ -16968,7 +18005,9 @@
 
 #: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
-msgstr "ajouter (au plus <n>) éléments du journal court au message de validation de la fusion"
+msgstr ""
+"ajouter (au plus <n>) éléments du journal court au message de validation de "
+"la fusion"
 
 #: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
@@ -16994,7 +18033,8 @@
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "vérifier que le commit nommé a une signature GPG valide"
 
-#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168 builtin/rebase.c:540 builtin/rebase.c:1413 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:540 builtin/rebase.c:1413 builtin/revert.c:114
 msgid "strategy"
 msgstr "stratégie"
 
@@ -17012,7 +18052,8 @@
 
 #: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
-msgstr "message de validation de la fusion (pour une fusion sans avance rapide)"
+msgstr ""
+"message de validation de la fusion (pour une fusion sans avance rapide)"
 
 #: builtin/merge.c:290
 msgid "abort the current in-progress merge"
@@ -17070,50 +18111,54 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' ne pointe pas sur un commit"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mauvaise chaîne branch.%s.mergeoptions : %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Impossible de gérer autre chose que la fusion de deux têtes."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Options inconnue pour merge-recursive : -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "impossible d'écrire %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Impossible de lire depuis '%s'"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
-msgstr "Pas de validation de la fusion ; utilisez 'git commit' pour terminer la fusion.\n"
+msgstr ""
+"Pas de validation de la fusion ; utilisez 'git commit' pour terminer la "
+"fusion.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
 "\n"
 msgstr ""
-"Veuillez entrer un message de validation pour expliquer en quoi cette fusion est\n"
-"nécessaire, surtout si cela fusionne une branche amont mise à jour dans une branche de sujet.\n"
+"Veuillez entrer un message de validation pour expliquer en quoi cette fusion "
+"est\n"
+"nécessaire, surtout si cela fusionne une branche amont mise à jour dans une "
+"branche de sujet.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Un message vide abandonne la validation.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17122,72 +18167,74 @@
 "Les lignes commençant par '%c' seront ignorées, et un message vide\n"
 "abandonne la validation.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Message de validation vide."
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Merveilleux.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
-msgstr "La fusion automatique a échoué ; réglez les conflits et validez le résultat.\n"
+msgstr ""
+"La fusion automatique a échoué ; réglez les conflits et validez le "
+"résultat.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Pas de branche courante."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Pas de branche distante pour la branche courante."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Pas de branche amont par défaut définie pour la branche courante."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Pas de branche de suivi pour %s depuis %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Mauvaise valeur '%s' dans l'environnement '%s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "pas possible de fusionner ceci dans %s : %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "pas possible de fusionner ceci"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort n'accepte pas d'argument"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Il n'y a pas de fusion à abandonner (MERGE_HEAD manquant)."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit n'accepte pas d'argument"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue ne supporte aucun argument"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Il n'y a pas de fusion en cours (MERGE_HEAD manquant)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17195,7 +18242,7 @@
 "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17203,91 +18250,94 @@
 "Vous n'avez pas terminé votre picorage (CHERRY_PICK_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Vous n'avez pas terminé votre picorage (CHERRY_PICK_HEAD existe)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Vous ne pouvez pas combiner --squash avec --no-ff."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "Vous ne pouvez pas combiner --squash avec --commit."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
-msgstr "Pas de validation spécifiée et merge.defaultToUpstream n'est pas défini."
+msgstr ""
+"Pas de validation spécifiée et merge.defaultToUpstream n'est pas défini."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "La validation compressée vers une tête vide n'est pas encore supportée"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Une validation sans avance rapide n'a pas de sens dans une tête vide"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - pas possible de fusionner ceci"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
-msgstr "Possible de fusionner exactement une seule validation dans une tête vide"
+msgstr ""
+"Possible de fusionner exactement une seule validation dans une tête vide"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "refus de fusionner des historiques sans relation"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Mise à jour %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Essai de fusion vraiment triviale dans l'index...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Non.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Pas possible d'avancer rapidement, abandon."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Retour de l'arbre à l'original...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Essai de la stratégie de fusion %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Aucune stratégie de fusion n'a pris en charge la fusion.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "La fusion avec la stratégie %s a échoué.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
 msgstr "Utilisation de %s pour préparer la résolution à la main.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
-msgstr "La fusion automatique a réussi ; stoppée avant la validation comme demandé\n"
+msgstr ""
+"La fusion automatique a réussi ; stoppée avant la validation comme demandé\n"
 
 #: builtin/mktag.c:10
 msgid "git mktag"
@@ -17347,28 +18397,26 @@
 msgstr "autoriser la création de plus d'un arbre"
 
 #: builtin/multi-pack-index.c:10
-#| msgid "git multi-pack-index [<options>] (write|verify|expire|repack --batch-size=<size>)"
 msgid "git multi-pack-index [<options>] write [--preferred-pack=<pack>]"
 msgstr "git multi-pack-index [<options>] write [--preferred-pack=<paquet>]"
 
 #: builtin/multi-pack-index.c:13
-#| msgid "git upload-pack [<options>] <dir>"
 msgid "git multi-pack-index [<options>] verify"
 msgstr "git multi-pack-index [<options>] verify"
 
 #: builtin/multi-pack-index.c:16
-#| msgid "git upload-pack [<options>] <dir>"
 msgid "git multi-pack-index [<options>] expire"
 msgstr "git multi-pack-index [<options>] expire"
 
 #: builtin/multi-pack-index.c:19
-#| msgid "git multi-pack-index [<options>] (write|verify|expire|repack --batch-size=<size>)"
 msgid "git multi-pack-index [<options>] repack [--batch-size=<size>]"
 msgstr "git multi-pack-index [<options>] repack [--batch-size=<taille>]"
 
 #: builtin/multi-pack-index.c:54
 msgid "object directory containing set of packfile and pack-index pairs"
-msgstr "répertoire objet contenant un ensemble de paires de fichiers paquet et d'index de paquet"
+msgstr ""
+"répertoire objet contenant un ensemble de paires de fichiers paquet et "
+"d'index de paquet"
 
 #: builtin/multi-pack-index.c:69
 msgid "preferred-pack"
@@ -17379,10 +18427,14 @@
 msgstr "paquet à réutiliser lors du calcul de bitmap de multi-paquet"
 
 #: builtin/multi-pack-index.c:128
-msgid "during repack, collect pack-files of smaller size into a batch that is larger than this size"
-msgstr "pendant le repaquetage, collecter les fichiers paquet de plus petite taille dans un lot plus grand que cette taille"
+msgid ""
+"during repack, collect pack-files of smaller size into a batch that is "
+"larger than this size"
+msgstr ""
+"pendant le repaquetage, collecter les fichiers paquet de plus petite taille "
+"dans un lot plus grand que cette taille"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "sous-commande non reconnue : %s"
@@ -17398,7 +18450,9 @@
 
 #: builtin/mv.c:85
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
-msgstr "Veuillez indexer vos modifications de .gitmodules ou les remiser pour continuer"
+msgstr ""
+"Veuillez indexer vos modifications de .gitmodules ou les remiser pour "
+"continuer"
 
 #: builtin/mv.c:103
 #, c-format
@@ -17497,7 +18551,8 @@
 
 #: builtin/name-rev.c:524
 msgid "print only ref-based names (no object names)"
-msgstr "afficher seulement les noms basés sur des références (pas de nom d'objet)"
+msgstr ""
+"afficher seulement les noms basés sur des références (pas de nom d'objet)"
 
 #: builtin/name-rev.c:525
 msgid "only use tags to name the commits"
@@ -17513,7 +18568,8 @@
 
 #: builtin/name-rev.c:531
 msgid "list all commits reachable from all refs"
-msgstr "afficher toutes les validations accessibles depuis toutes les références"
+msgstr ""
+"afficher toutes les validations accessibles depuis toutes les références"
 
 #: builtin/name-rev.c:532
 msgid "read from stdin"
@@ -17532,16 +18588,25 @@
 msgstr "git notes [--ref <références-notes>] [list [<object>]]"
 
 #: builtin/notes.c:29
-msgid "git notes [--ref <notes-ref>] add [-f] [--allow-empty] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>]"
-msgstr "git notes [--ref <références-notes>] add [-f] [--allow-empty] [-m <message> | -F <fichier> | (-c | -C) <objet>] [<objet>]"
+msgid ""
+"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [-m <msg> | -F <file> "
+"| (-c | -C) <object>] [<object>]"
+msgstr ""
+"git notes [--ref <références-notes>] add [-f] [--allow-empty] [-m <message> "
+"| -F <fichier> | (-c | -C) <objet>] [<objet>]"
 
 #: builtin/notes.c:30
 msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
-msgstr "git notes [--ref <références-notes>] copy [-f] <depuis-objet> <vers-objet>"
+msgstr ""
+"git notes [--ref <références-notes>] copy [-f] <depuis-objet> <vers-objet>"
 
 #: builtin/notes.c:31
-msgid "git notes [--ref <notes-ref>] append [--allow-empty] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>]"
-msgstr "git notes [--ref <références-notes>] append [--allow-empty] [-m <message> | -F <fichier> | (-c | -C) <objet>] [<objet>]"
+msgid ""
+"git notes [--ref <notes-ref>] append [--allow-empty] [-m <msg> | -F <file> | "
+"(-c | -C) <object>] [<object>]"
+msgstr ""
+"git notes [--ref <références-notes>] append [--allow-empty] [-m <message> | -"
+"F <fichier> | (-c | -C) <objet>] [<objet>]"
 
 #: builtin/notes.c:32
 msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
@@ -17552,8 +18617,11 @@
 msgstr "git notes [--ref <références-notes>] show [<objet>]"
 
 #: builtin/notes.c:34
-msgid "git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
-msgstr "git notes [--ref <références-notes>] merge [-v | -q] [-s <stratégie> ] <références-notes>"
+msgid ""
+"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
+msgstr ""
+"git notes [--ref <références-notes>] merge [-v | -q] [-s <stratégie> ] "
+"<références-notes>"
 
 #: builtin/notes.c:35
 msgid "git notes merge --commit [-v | -q]"
@@ -17663,8 +18731,9 @@
 msgid "could not open or read '%s'"
 msgstr "impossible d'ouvrir ou lire '%s'"
 
-#: builtin/notes.c:263 builtin/notes.c:313 builtin/notes.c:315 builtin/notes.c:383 builtin/notes.c:438 builtin/notes.c:526 builtin/notes.c:531 builtin/notes.c:610
-#: builtin/notes.c:672
+#: builtin/notes.c:263 builtin/notes.c:313 builtin/notes.c:315
+#: builtin/notes.c:383 builtin/notes.c:438 builtin/notes.c:526
+#: builtin/notes.c:531 builtin/notes.c:610 builtin/notes.c:672
 #, c-format
 msgid "failed to resolve '%s' as a valid ref."
 msgstr "impossible de résoudre '%s' comme une référence valide."
@@ -17697,8 +18766,10 @@
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "refus de faire %s sur des notes dans %s (hors de refs/notes/)"
 
-#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509 builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665 builtin/notes.c:815 builtin/notes.c:963
-#: builtin/notes.c:985 builtin/prune-packed.c:25 builtin/tag.c:586
+#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
+#: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
+#: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
+#: builtin/prune-packed.c:25 builtin/tag.c:586
 msgid "too many arguments"
 msgstr "trop d'arguments"
 
@@ -17733,8 +18804,12 @@
 
 #: builtin/notes.c:448
 #, c-format
-msgid "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite existing notes"
-msgstr "Impossible d'ajouter des notes. Des notes ont été trouvées pour l'objet %s. Utilisez '-f' pour écraser les notes existantes"
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+"Impossible d'ajouter des notes. Des notes ont été trouvées pour l'objet %s. "
+"Utilisez '-f' pour écraser les notes existantes"
 
 #: builtin/notes.c:463 builtin/notes.c:544
 #, c-format
@@ -17752,7 +18827,8 @@
 
 #: builtin/notes.c:499
 msgid "load rewriting config for <command> (implies --stdin)"
-msgstr "charger la configuration de réécriture pour <commande> (implique --stdin)"
+msgstr ""
+"charger la configuration de réécriture pour <commande> (implique --stdin)"
 
 #: builtin/notes.c:517
 msgid "too few arguments"
@@ -17760,8 +18836,12 @@
 
 #: builtin/notes.c:538
 #, c-format
-msgid "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite existing notes"
-msgstr "Impossible de copier des notes. Des notes ont été trouvées pour l'objet %s. Utilisez '-f' pour écraser les notes existantes"
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+"Impossible de copier des notes. Des notes ont été trouvées pour l'objet %s. "
+"Utilisez '-f' pour écraser les notes existantes"
 
 #: builtin/notes.c:550
 #, c-format
@@ -17823,8 +18903,12 @@
 msgstr "Options de fusion"
 
 #: builtin/notes.c:788
-msgid "resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)"
-msgstr "résoudre les conflits de notes en utilisant la stratégie donnée (manual/ours/theirs/union/cat_sort_uniq)"
+msgid ""
+"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
+"cat_sort_uniq)"
+msgstr ""
+"résoudre les conflits de notes en utilisant la stratégie donnée (manual/ours/"
+"theirs/union/cat_sort_uniq)"
 
 #: builtin/notes.c:790
 msgid "Committing unmerged notes"
@@ -17863,15 +18947,19 @@
 #: builtin/notes.c:876
 #, c-format
 msgid "failed to store link to current notes ref (%s)"
-msgstr "impossible de stocker le lien vers la référence actuelle aux notes (%s)"
+msgstr ""
+"impossible de stocker le lien vers la référence actuelle aux notes (%s)"
 
 #: builtin/notes.c:878
 #, c-format
 msgid ""
-"Automatic notes merge failed. Fix conflicts in %s and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.\n"
+"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
+"'git notes merge --commit', or abort the merge with 'git notes merge --"
+"abort'.\n"
 msgstr ""
-"La fusion automatique des notes a échoué. Corrigez les conflits dans %s et validez le résultat avec 'git notes merges --commit', ou abandonnez la fusion avec "
-"'git notes merge --abort'.\n"
+"La fusion automatique des notes a échoué. Corrigez les conflits dans %s et "
+"validez le résultat avec 'git notes merges --commit', ou abandonnez la "
+"fusion avec 'git notes merge --abort'.\n"
 
 #: builtin/notes.c:897 builtin/tag.c:589
 #, c-format
@@ -17885,13 +18973,14 @@
 
 #: builtin/notes.c:912
 msgid "attempt to remove non-existent note is not an error"
-msgstr "la tentative de suppression d'une note non existante n'est pas une erreur"
+msgstr ""
+"la tentative de suppression d'une note non existante n'est pas une erreur"
 
 #: builtin/notes.c:915
 msgid "read object names from the standard input"
 msgstr "lire les noms d'objet depuis l'entrée standard"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "ne pas supprimer, afficher seulement"
 
@@ -17907,143 +18996,166 @@
 msgid "use notes from <notes-ref>"
 msgstr "utiliser les notes depuis <références-notes>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "sous-commande inconnue : %s"
 
-#: builtin/pack-objects.c:54
-msgid "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
-msgstr "git pack-objects --stdout [options...] [< <liste-références> | < <liste-objets>]"
+#: builtin/pack-objects.c:182
+msgid ""
+"git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
+msgstr ""
+"git pack-objects --stdout [options...] [< <liste-références> | < <liste-"
+"objets>]"
 
-#: builtin/pack-objects.c:55
-msgid "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
-msgstr "git pack-objects [options...] base-name [< <liste-références> | < <liste-objets>]"
+#: builtin/pack-objects.c:183
+msgid ""
+"git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
+msgstr ""
+"git pack-objects [options...] base-name [< <liste-références> | < <liste-"
+"objets>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
-msgid "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in pack %s"
-msgstr "write_reuse_object : impossible de localiser %s, attendu à l'offset %<PRIuMAX> dans le paquet %s"
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object : impossible de localiser %s, attendu à l'offset "
+"%<PRIuMAX> dans le paquet %s"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "mauvais CRC d'objet empaqueté pour %s"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objet empaqueté corrompu pour %s"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "delta récursif détecté pour l'objet %s"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objets commandés, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "objet attendu à l'offset %<PRIuMAX> dans le paquet %s"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
-msgstr "désactivation de l'écriture en bitmap, les fichiers paquets sont scindés à cause de pack.packSizeLimit"
+msgstr ""
+"désactivation de l'écriture en bitmap, les fichiers paquets sont scindés à "
+"cause de pack.packSizeLimit"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Écriture des objets"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "échec du stat de %s"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objets écrits, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
-msgstr "désactivation de l'écriture en bitmap car certains objets ne sont pas compressés"
+msgstr ""
+"désactivation de l'écriture en bitmap car certains objets ne sont pas "
+"compressés"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "dépassement de décalage de base de delta pour %s"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "décalage de base de delta est hors limite pour %s"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Décompte des objets"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "impossible d'analyser l'entête d'objet de %s"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352 builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "l'objet %s ne peut être lu"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
-msgstr "objet %s longueur de l'objet inconsistante (%<PRIuMAX> contre %<PRIuMAX>)"
+msgstr ""
+"objet %s longueur de l'objet inconsistante (%<PRIuMAX> contre %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "paquet sous-optimal - mémoire insuffisante"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compression par delta en utilisant jusqu'à %d fils d'exécution"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "impossible d'empaqueter les objets joignables depuis l'étiquette %s"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Compression des objets"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "inconsistance dans le compte de delta"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
-msgid "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-hash> <uri>' (got '%s')"
-msgstr "la valeur de uploadpack.blobpackfileuri doit être de la forme '<empreinte-d-objet> <empreinte-de-pack> <uri>' ('%s' reçu)"
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"la valeur de uploadpack.blobpackfileuri doit être de la forme '<empreinte-d-"
+"objet> <empreinte-de-pack> <uri>' ('%s' reçu)"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
-msgid "object already configured in another uploadpack.blobpackfileuri (got '%s')"
-msgstr "l'objet est déjà configuré dans un autre uploadpack.blobpackfileuri ('%s' reçu)"
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"l'objet est déjà configuré dans un autre uploadpack.blobpackfileuri ('%s' "
+"reçu)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "impossible d'obtenir le type de l'objet %s dans le paquet %s"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "impossible de trouver le paquet '%s'"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18052,7 +19164,7 @@
 "ID d'objet de bord attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18061,249 +19173,263 @@
 "ID d'objet attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "valeur invalide pour --missing"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "impossible d'ouvrir l'index de paquet"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "l'objet libre à %s n'a pas pu être examiné"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "impossible de forcer l'objet libre"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' n'est pas une révision"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mauvaise révision '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "impossible d'ajouter les objets récents"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "version d'index non supportée %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mauvaise version d'index '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<décalage>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
-msgstr "écrire le fichier d'index du paquet dans le format d'index de version spécifié"
+msgstr ""
+"écrire le fichier d'index du paquet dans le format d'index de version "
+"spécifié"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "taille maximum de chaque fichier paquet en sortie"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorer les objets empruntés à un autre magasin d'objets"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "ignorer les objets empaquetés"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "limiter la fenêtre d'empaquetage par objets"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
-msgstr "limiter la fenêtre d'empaquetage par mémoire en plus de la limite d'objets"
+msgstr ""
+"limiter la fenêtre d'empaquetage par mémoire en plus de la limite d'objets"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
-msgstr "longueur maximum de la chaîne de delta autorisée dans le paquet résultant"
+msgstr ""
+"longueur maximum de la chaîne de delta autorisée dans le paquet résultant"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "réutiliser les deltas existants"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "réutiliser les objets existants"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "utiliser les objets OFS_DELTA"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
-msgstr "utiliser des fils lors de la recherche pour une meilleure correspondance des deltas"
+msgstr ""
+"utiliser des fils lors de la recherche pour une meilleure correspondance des "
+"deltas"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "ne pas créer un paquet vide"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "lire les paramètres de révision depuis l'entrée standard"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "limiter les objets à ceux qui ne sont pas encore empaquetés"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "inclure les objets accessibles depuis toute référence"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "inclure les objets référencés par les éléments de reflog"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "inclure les objets référencés par l'index"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "lire les paquets depuis l'entrée standard"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "afficher l'empaquetage sur la sortie standard"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "inclure les objets d'étiquettes qui réfèrent à des objets à empaqueter"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "garder les objets inaccessibles"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "empaqueter les objets inaccessibles détachés"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "dépaqueter les objets inaccessibles plus récents que <heure>"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "utiliser l'algorithme de joignabilité creuse"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "créer des paquets légers"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "créer des paquets permettant des récupérations superficielles"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorer les paquets qui ont un fichier .keep"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "ignorer ce paquet"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "niveau de compression du paquet"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "ne pas cacher les validations par greffes"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
-msgstr "utiliser un index en bitmap si disponible pour accélerer le décompte des objets"
+msgstr ""
+"utiliser un index en bitmap si disponible pour accélerer le décompte des "
+"objets"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "écrire un index en bitmap associé à l'index de paquet"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "écrire un index de bitmap si possible"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "gestion des objets manquants"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "ne pas empaqueter les objets dans les fichiers paquets prometteurs"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "respecter les îlots pendant la compression des deltas"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "protocole"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "exclure tout uploadpack.blobpackfileuri configuré avec ce protocole"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "la profondeur %d de chaîne de delta est trop grande, forcée à %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit est trop grand, forcé à %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
-msgstr "--max-pack-size ne peut pas être utilisé pour construire un paquet à transférer"
+msgstr ""
+"--max-pack-size ne peut pas être utilisé pour construire un paquet à "
+"transférer"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "la taille limite minimale d'un paquet est 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin ne peut pas être utilisé pour construire un paquet indexable"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable et --unpack-unreachable sont incompatibles"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "impossible d'utiliser --filter sans --stdout"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "impossible d'utiliser --filter avec --stdin-packs"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "impossible d'utiliser un liste interne de révisions avec --stdin-packs"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Énumération des objets"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
-msgid "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-reused %<PRIu32>"
-msgstr "Total %<PRIu32> (delta %<PRIu32>), réutilisés %<PRIu32> (delta %<PRIu32>), réutilisés du pack %<PRIu32>"
+msgid ""
+"Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
+"reused %<PRIu32>"
+msgstr ""
+"Total %<PRIu32> (delta %<PRIu32>), réutilisés %<PRIu32> (delta %<PRIu32>), "
+"réutilisés du pack %<PRIu32>"
 
 #: builtin/pack-redundant.c:601
 msgid ""
@@ -18402,12 +19528,19 @@
 msgstr "Valeur invalide pour pull.ff : %s"
 
 #: builtin/pull.c:445
-msgid "There is no candidate for rebasing against among the refs that you just fetched."
-msgstr "Il n'y a pas de candidate sur laquelle rebaser parmi les références que vous venez de récupérer."
+msgid ""
+"There is no candidate for rebasing against among the refs that you just "
+"fetched."
+msgstr ""
+"Il n'y a pas de candidate sur laquelle rebaser parmi les références que vous "
+"venez de récupérer."
 
 #: builtin/pull.c:447
-msgid "There are no candidates for merging among the refs that you just fetched."
-msgstr "Il n'y a pas de candidate avec laquelle fusionner parmi les références que vous venez de récupérer."
+msgid ""
+"There are no candidates for merging among the refs that you just fetched."
+msgstr ""
+"Il n'y a pas de candidate avec laquelle fusionner parmi les références que "
+"vous venez de récupérer."
 
 #: builtin/pull.c:448
 msgid ""
@@ -18425,7 +19558,8 @@
 "for your current branch, you must specify a branch on the command line."
 msgstr ""
 "Vous avez demandé de tirer depuis le dépôt distant '%s', mais sans indiquer\n"
-"la branche. Comme ce n'est pas le dépôt distant par défaut dans la configuration\n"
+"la branche. Comme ce n'est pas le dépôt distant par défaut dans la "
+"configuration\n"
 "pour la branche actuelle, vous devez spécifier la branche avec la commande."
 
 #: builtin/pull.c:456 builtin/rebase.c:1248
@@ -18444,7 +19578,8 @@
 msgid "See git-pull(1) for details."
 msgstr "Référez-vous à git-pull(1) pour de plus amples détails."
 
-#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478 builtin/rebase.c:1254
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1254
 msgid "<remote>"
 msgstr "<distant>"
 
@@ -18457,8 +19592,11 @@
 msgstr "Pas d'information de suivi distant pour la branche actuelle."
 
 #: builtin/pull.c:480
-msgid "If you wish to set tracking information for this branch you can do so with:"
-msgstr "Si vous souhaitez indiquer l'information de suivi distant pour cette branche, vous pouvez le faire avec :"
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:"
+msgstr ""
+"Si vous souhaitez indiquer l'information de suivi distant pour cette "
+"branche, vous pouvez le faire avec :"
 
 #: builtin/pull.c:485
 #, c-format
@@ -18466,7 +19604,8 @@
 "Your configuration specifies to merge with the ref '%s'\n"
 "from the remote, but no such ref was fetched."
 msgstr ""
-"Votre information de configuration indique de fusionner avec la référence '%s'\n"
+"Votre information de configuration indique de fusionner avec la référence "
+"'%s'\n"
 "du serveur distant, mais cette référence n'a pas été récupérée."
 
 #: builtin/pull.c:596
@@ -18488,7 +19627,8 @@
 "  git config pull.rebase true   # rebase\n"
 "  git config pull.ff only       # fast-forward only\n"
 "\n"
-"You can replace \"git config\" with \"git config --global\" to set a default\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
 "preference for all repositories. You can also pass --rebase, --no-rebase,\n"
 "or --ff-only on the command line to override the configured default per\n"
 "invocation.\n"
@@ -18506,19 +19646,21 @@
 "passer --rebase, --no-rebase ou --ff-only sur la ligne de commande pour\n"
 "remplacer à l'invocation la valeur par défaut configurée.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
-msgstr "Mise à jour d'une branche non encore créée avec les changements ajoutés dans l'index."
+msgstr ""
+"Mise à jour d'une branche non encore créée avec les changements ajoutés dans "
+"l'index."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "tirer avec un rebasage"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "veuillez les valider ou les remiser."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18529,7 +19671,7 @@
 "avance rapide de votre copie de travail\n"
 "depuis le commit %s."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18546,17 +19688,19 @@
 "$ git reset --hard\n"
 "pour régénérer."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Impossible de fusionner de multiples branches sur une tête vide."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Impossible de rebaser sur de multiples branches."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
-msgstr "impossible de rebaser avec des modifications de sous-modules enregistrées localement"
+msgstr ""
+"impossible de rebaser avec des modifications de sous-modules enregistrées "
+"localement"
 
 #: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
@@ -18576,7 +19720,8 @@
 "To choose either option permanently, see push.default in 'git help config'."
 msgstr ""
 "\n"
-"Pour choisir l'option de manière permanente, voir push.default dans 'git help config'."
+"Pour choisir l'option de manière permanente, voir push.default dans 'git "
+"help config'."
 
 #: builtin/push.c:167
 #, c-format
@@ -18618,7 +19763,7 @@
 "\n"
 "    git push %s HEAD:<nom-de-la-branche-amont>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -18627,16 +19772,25 @@
 "    git push --set-upstream %s %s\n"
 msgstr ""
 "La branche courante %s n'a pas de branche amont.\n"
-"Pour pousser la branche courante et définir la distante comme amont, utilisez\n"
+"Pour pousser la branche courante et définir la distante comme amont, "
+"utilisez\n"
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
-msgstr "La branche courante %s a de multiples branches amont, impossible de pousser."
+msgstr ""
+"La branche courante %s a de multiples branches amont, impossible de pousser."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Vous n'avez pas spécifié de spécifications de référence à pousser, et push."
+"default est \"nothing\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -18647,35 +19801,37 @@
 "qui n'est pas l'amont de votre branche courante '%s', sans\n"
 "me dire quoi pousser pour mettre à jour quelle branche amont."
 
-#: builtin/push.c:260
-msgid "You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr "Vous n'avez pas spécifié de spécifications de référence à pousser, et push.default est \"nothing\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
 "'git pull ...') before pushing again.\n"
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
-"Les mises à jour ont été rejetées car la pointe de la branche courante est derrière\n"
-"son homologue distant. Intégrez les changements distants (par exemple 'git pull ...')\n"
+"Les mises à jour ont été rejetées car la pointe de la branche courante est "
+"derrière\n"
+"son homologue distant. Intégrez les changements distants (par exemple 'git "
+"pull ...')\n"
 "avant de pousser à nouveau.\n"
-"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus d'information."
+"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
+"d'information."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
 "(e.g. 'git pull ...') before pushing again.\n"
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
-"Les mises à jour ont été rejetées car la pointe de la branche courante est derrière\n"
-"son homologue distant. Extrayez cette branche et intégrez les changements distants\n"
+"Les mises à jour ont été rejetées car la pointe de la branche courante est "
+"derrière\n"
+"son homologue distant. Extrayez cette branche et intégrez les changements "
+"distants\n"
 "(par exemple 'git pull ...') avant de pousser à nouveau.\n"
-"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus d'information."
+"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
+"d'information."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -18683,27 +19839,35 @@
 "(e.g., 'git pull ...') before pushing again.\n"
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
-"Les mises à jour ont été rejetées car la branche distante contient du travail que\n"
-"vous n'avez pas en local. Ceci est généralement causé par un autre dépôt poussé\n"
-"vers la même référence. Vous pourriez intégrer d'abord les changements distants\n"
+"Les mises à jour ont été rejetées car la branche distante contient du "
+"travail que\n"
+"vous n'avez pas en local. Ceci est généralement causé par un autre dépôt "
+"poussé\n"
+"vers la même référence. Vous pourriez intégrer d'abord les changements "
+"distants\n"
 "(par exemple 'git pull ...') avant de pousser à nouveau.\n"
-"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus d'information."
+"Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
+"d'information."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
-msgstr "Les mises à jour ont été rejetées car l'étiquette existe déjà dans la branche distante."
+msgstr ""
+"Les mises à jour ont été rejetées car l'étiquette existe déjà dans la "
+"branche distante."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
 "without using the '--force' option.\n"
 msgstr ""
-"Vous ne pouvez pas mettre à jour une référence distante qui pointe sur un objet qui\n"
-"n'est pas un commit, ou mettre à jour une référence distante pour la faire pointer\n"
+"Vous ne pouvez pas mettre à jour une référence distante qui pointe sur un "
+"objet qui\n"
+"n'est pas un commit, ou mettre à jour une référence distante pour la faire "
+"pointer\n"
 "vers un objet qui n'est pas un commit, sans utiliser l'option '--force'.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -18715,105 +19879,108 @@
 "ces changements localement (par exemple 'git pull ...') avant de\n"
 "forcer à nouveau une mise à jour.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Poussée vers %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "impossible de pousser des références vers '%s'"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "dépôt"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "pousser toutes les références"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "refléter toutes les références"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "supprimer les références"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
-msgstr "pousser les étiquettes (ne peut pas être utilisé avec --all ou --mirror)"
+msgstr ""
+"pousser les étiquettes (ne peut pas être utilisé avec --all ou --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "forcer les mises à jour"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<nom-de-ref>:<attendu>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "exiger que l'ancienne valeur de la référence soit à cette valeur"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "exiger des mises à jours distantes pour une intégration locale"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "contrôler la poussée récursive des sous-modules"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "utiliser un empaquetage léger"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186 builtin/send-pack.c:187
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
+#: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "recevoir le programme d'empaquetage"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "définir la branche amont pour git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "éliminer les références locales supprimées"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "éviter d'utiliser le crochet pre-push"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "pousser les étiquettes manquantes mais pertinentes"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "signer la poussée avec GPG"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "demande une transaction atomique sur le serveur distant"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete est incompatible avec --all, --mirror et --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete n'a pas de sens sans aucune référence"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "mauvais dépôt '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
-"Either specify the URL from the command-line or configure a remote repository using\n"
+"Either specify the URL from the command-line or configure a remote "
+"repository using\n"
 "\n"
 "    git remote add <name> <url>\n"
 "\n"
@@ -18822,7 +19989,8 @@
 "    git push <name>\n"
 msgstr ""
 "Pas de destination pour pousser.\n"
-"Spécifiez une URL depuis la ligne de commande ou configurez un dépôt distant en utilisant\n"
+"Spécifiez une URL depuis la ligne de commande ou configurez un dépôt distant "
+"en utilisant\n"
 "\n"
 "    git remote add <nom> <url>\n"
 "\n"
@@ -18830,33 +19998,37 @@
 "\n"
 "    git push <nom>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all et --tags sont incompatibles"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all ne peut pas être combiné avec des spécifications de référence"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror et --tags sont incompatibles"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror ne peut pas être combiné avec des spécifications de référence"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all et --mirror sont incompatibles"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
-msgstr "les options de poussée ne peuvent pas contenir de caractères de nouvelle ligne"
+msgstr ""
+"les options de poussée ne peuvent pas contenir de caractères de nouvelle "
+"ligne"
 
 #: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
-msgstr "git range-diff [<options>] <ancienne-base>..<ancien-sommet> <nouvelle-base>..<nouveau-sommet>"
+msgstr ""
+"git range-diff [<options>] <ancienne-base>..<ancien-sommet> <nouvelle-base>.."
+"<nouveau-sommet>"
 
 #: builtin/range-diff.c:10
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
@@ -18901,11 +20073,14 @@
 
 #: builtin/read-tree.c:41
 msgid ""
-"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-"
-"output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) "
+"[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
+"index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
 msgstr ""
-"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<préfixe>) [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-"
-"output=<fichier>] (--empty | <arbre-esque> [<arbre-esque 2> [<arbre-esque 3>]])"
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --"
+"prefix=<préfixe>) [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-"
+"sparse-checkout] [--index-output=<fichier>] (--empty | <arbre-esque> [<arbre-"
+"esque 2> [<arbre-esque 3>]])"
 
 #: builtin/read-tree.c:124
 msgid "write resulting index to <file>"
@@ -18980,12 +20155,19 @@
 msgstr "Vous devez d'abord résoudre votre index courant"
 
 #: builtin/rebase.c:35
-msgid "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]"
-msgstr "git rebase [-i] [options] [--exec <cmd>] [--onto <nouvelle-base> | --keep-base] [<amont> [<branche>]]"
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
+"[<upstream> [<branch>]]"
+msgstr ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <nouvelle-base> | --keep-"
+"base] [<amont> [<branche>]]"
 
 #: builtin/rebase.c:37
-msgid "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
-msgstr "git rebase [-i] [options] [--exec <cmd>] [--onto <nouvelle-base>] --root [<branche>]"
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
+msgstr ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <nouvelle-base>] --root "
+"[<branche>]"
 
 #: builtin/rebase.c:39
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
@@ -19182,11 +20364,13 @@
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
 "You can instead skip this commit: run \"git rebase --skip\".\n"
-"To abort and get back to the state before \"git rebase\", run \"git rebase --abort\"."
+"To abort and get back to the state before \"git rebase\", run \"git rebase --"
+"abort\"."
 msgstr ""
 "Résolvez tous les conflits manuellement, marquez-les comme résolus avec\n"
 "\"git add/rm <fichier en conflit>\", puis lancez \"git rebase --continue\".\n"
-"Si vous préférez sauter ce commit, lancez \"git rebase --skip\". Pour arrêter\n"
+"Si vous préférez sauter ce commit, lancez \"git rebase --skip\". Pour "
+"arrêter\n"
 "et revenir à l'état antérieur à la commande, lancez \"git rebase --abort\"."
 
 #: builtin/rebase.c:896
@@ -19210,8 +20394,12 @@
 
 #: builtin/rebase.c:1222
 #, c-format
-msgid "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask\"."
-msgstr "type vide non connu '%s' ; les valeurs valides sont \"drop\" (abandonner), \"keep\" (garder) et \"ask\" (demander)."
+msgid ""
+"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
+"\"."
+msgstr ""
+"type vide non connu '%s' ; les valeurs valides sont \"drop\" (abandonner), "
+"\"keep\" (garder) et \"ask\" (demander)."
 
 #: builtin/rebase.c:1240
 #, c-format
@@ -19238,7 +20426,8 @@
 "    git branch --set-upstream-to=%s/<branch> %s\n"
 "\n"
 msgstr ""
-"Si vous souhaitez indiquer l'information de suivi distant pour cette branche, vous pouvez le faire avec :\n"
+"Si vous souhaitez indiquer l'information de suivi distant pour cette "
+"branche, vous pouvez le faire avec :\n"
 "\n"
 "    git branch --set-upstream-to=%s/<branche> %s\n"
 "\n"
@@ -19257,7 +20446,8 @@
 
 #: builtin/rebase.c:1321
 msgid "use the merge-base of upstream and branch as the current base"
-msgstr "utiliser la base de fusion de l'amont et la branche comme base actuelle"
+msgstr ""
+"utiliser la base de fusion de l'amont et la branche comme base actuelle"
 
 #: builtin/rebase.c:1323
 msgid "allow pre-rebase hook to run"
@@ -19289,7 +20479,7 @@
 
 #: builtin/rebase.c:1343 builtin/rebase.c:1347
 msgid "passed to 'git apply'"
-msgstr "passé jusqu'à git-apply"
+msgstr "passé jusqu'à git apply"
 
 #: builtin/rebase.c:1345
 msgid "ignore changes in whitespace"
@@ -19381,15 +20571,19 @@
 
 #: builtin/rebase.c:1424
 msgid "apply all changes, even those already present upstream"
-msgstr "appliquer toutes les modifications, même celles déjà présentes en amont"
+msgstr ""
+"appliquer toutes les modifications, même celles déjà présentes en amont"
 
 #: builtin/rebase.c:1442
 msgid "It looks like 'git am' is in progress. Cannot rebase."
-msgstr "Il semble que 'git-am' soit en cours. Impossible de rebaser."
+msgstr "Il semble que 'git am' soit en cours. Impossible de rebaser."
 
 #: builtin/rebase.c:1483
-msgid "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
-msgstr "git rebase --preserve-merges est déconseillé. Utilisez --rebase-merges à la place."
+msgid ""
+"git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
+msgstr ""
+"git rebase --preserve-merges est déconseillé. Utilisez --rebase-merges à la "
+"place."
 
 #: builtin/rebase.c:1488
 msgid "cannot combine '--keep-base' with '--onto'"
@@ -19409,9 +20603,11 @@
 
 #: builtin/rebase.c:1501
 msgid "The --edit-todo action can only be used during interactive rebase."
-msgstr "L'action --edit-todo peut seulement être utilisée lors d'un rebasage interactif."
+msgstr ""
+"L'action --edit-todo peut seulement être utilisée lors d'un rebasage "
+"interactif."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Impossible de lire HEAD"
 
@@ -19450,7 +20646,8 @@
 "\t%s\n"
 "Sinon, essayez\n"
 "\t%s\n"
-"puis relancez-moi à nouveau.  Je m'arrête au cas où vous auriez quelque chose\n"
+"puis relancez-moi à nouveau.  Je m'arrête au cas où vous auriez quelque "
+"chose\n"
 "d'important ici.\n"
 
 #: builtin/rebase.c:1648
@@ -19468,7 +20665,8 @@
 
 #: builtin/rebase.c:1759
 msgid "cannot combine apply options with merge options"
-msgstr "impossible de combiner les options d'application avec les options de fusion"
+msgstr ""
+"impossible de combiner les options d'application avec les options de fusion"
 
 #: builtin/rebase.c:1772
 #, c-format
@@ -19484,8 +20682,11 @@
 msgstr "impossible de combiner '--preserve-merges' avec '--rebase-merges'"
 
 #: builtin/rebase.c:1826
-msgid "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
-msgstr "erreur : impossible de combiner '--preserve-merges' avec '--reschedule-failed-exec'"
+msgid ""
+"error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
+msgstr ""
+"erreur : impossible de combiner '--preserve-merges' avec '--reschedule-"
+"failed-exec'"
 
 #: builtin/rebase.c:1850
 #, c-format
@@ -19516,7 +20717,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal : pas de branche ou commit '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40 builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Référence inexistante : %s"
@@ -19569,7 +20771,9 @@
 #: builtin/rebase.c:2063
 #, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
-msgstr "Rembobinage préalable de head pour pouvoir rejouer votre travail par-dessus...\n"
+msgstr ""
+"Rembobinage préalable de head pour pouvoir rejouer votre travail par-"
+"dessus...\n"
 
 #: builtin/rebase.c:2072
 msgid "Could not detach HEAD"
@@ -19584,7 +20788,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <répertoire-git>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -19614,7 +20818,7 @@
 "Pour éliminer ce message et conserver le comportement par défaut,\n"
 "réglez « receive.denyCurrentBranch » à 'refuse'."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -19634,22 +20838,31 @@
 "\n"
 "Pour éliminer ce message, réglez-le à 'refuse'."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "quiet"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Vous devez spécifier un répertoire."
 
 #: builtin/reflog.c:17
-msgid "git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] <refs>..."
+msgid ""
+"git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--"
+"rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] "
+"<refs>..."
 msgstr ""
-"git reflog expire [--expire=<date>] [--expire-unreachable=<date>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] <réferences>..."
+"git reflog expire [--expire=<date>] [--expire-unreachable=<date>] [--"
+"rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] "
+"<réferences>..."
 
 #: builtin/reflog.c:22
-msgid "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <refs>..."
-msgstr "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <références>..."
+msgid ""
+"git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] "
+"<refs>..."
+msgstr ""
+"git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] "
+"<références>..."
 
 #: builtin/reflog.c:25
 msgid "git reflog exists <ref>"
@@ -19698,8 +20911,12 @@
 msgstr "git remote [-v | --verbose]"
 
 #: builtin/remote.c:18
-msgid "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>"
-msgstr "git remote add [-t <branche>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <nom> <url>"
+msgid ""
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
+msgstr ""
+"git remote add [-t <branche>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <nom> <url>"
 
 #: builtin/remote.c:19 builtin/remote.c:39
 msgid "git remote rename <old> <new>"
@@ -19722,8 +20939,11 @@
 msgstr "git remote prune [-n | --dry-run] <nom>"
 
 #: builtin/remote.c:24
-msgid "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
-msgstr "git remote [-v | --verbose] update [-p | --prune] [(<groupe> | <distante>)...]"
+msgid ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+msgstr ""
+"git remote [-v | --verbose] update [-p | --prune] [(<groupe> | "
+"<distante>)...]"
 
 #: builtin/remote.c:25
 msgid "git remote set-branches [--add] <name> <branch>..."
@@ -19793,7 +21013,8 @@
 
 #: builtin/remote.c:166
 msgid "import all tags and associated objects when fetching"
-msgstr "importer toutes les étiquettes et les objets associés lors du rapatriement"
+msgstr ""
+"importer toutes les étiquettes et les objets associés lors du rapatriement"
 
 #: builtin/remote.c:169
 msgid "or do not fetch any tag at all (--no-tags)"
@@ -19809,7 +21030,8 @@
 
 #: builtin/remote.c:174
 msgid "set up remote as a mirror to push to or fetch from"
-msgstr "paramétrer la distante comme miroir pour pousser ou pour rapatrier depuis"
+msgstr ""
+"paramétrer la distante comme miroir pour pousser ou pour rapatrier depuis"
 
 #: builtin/remote.c:186
 msgid "specifying a master branch makes no sense with --mirror"
@@ -19817,7 +21039,9 @@
 
 #: builtin/remote.c:188
 msgid "specifying branches to track makes sense only with fetch mirrors"
-msgstr "spécifier les branches à suivre n'a de sens qu'avec des miroirs de rapatriement"
+msgstr ""
+"spécifier les branches à suivre n'a de sens qu'avec des miroirs de "
+"rapatriement"
 
 #: builtin/remote.c:195 builtin/remote.c:700
 #, c-format
@@ -19832,7 +21056,9 @@
 #: builtin/remote.c:355
 #, c-format
 msgid "Could not get fetch map for refspec %s"
-msgstr "Impossible d'obtenir une correspondance distante pour la spécification de référence %s"
+msgstr ""
+"Impossible d'obtenir une correspondance distante pour la spécification de "
+"référence %s"
 
 #: builtin/remote.c:454 builtin/remote.c:462
 msgid "(matching)"
@@ -19900,7 +21126,8 @@
 "Note : Une branche en dehors de refs/remotes/ n'a pas été supprimée ;\n"
 "pour la supprimer, utilisez :"
 msgstr[1] ""
-"Note : Plusieurs branches en dehors de refs/remotes/ n'ont pas été supprimées ;\n"
+"Note : Plusieurs branches en dehors de refs/remotes/ n'ont pas été "
+"supprimées ;\n"
 "pour les supprimer, utilisez :"
 
 #: builtin/remote.c:896
@@ -20042,8 +21269,11 @@
 
 #: builtin/remote.c:1265
 #, c-format
-msgid "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
-msgstr "  Branche HEAD (la HEAD distante est ambiguë, peut être l'une des suivantes) :\n"
+msgid ""
+"  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr ""
+"  Branche HEAD (la HEAD distante est ambiguë, peut être l'une des "
+"suivantes) :\n"
 
 #: builtin/remote.c:1277
 #, c-format
@@ -20087,7 +21317,9 @@
 
 #: builtin/remote.c:1343
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
-msgstr "Il y a de multiples branches HEAD distantes. Veuillez en choisir une explicitement avec :"
+msgstr ""
+"Il y a de multiples branches HEAD distantes. Veuillez en choisir une "
+"explicitement avec :"
 
 #: builtin/remote.c:1353
 #, c-format
@@ -20203,20 +21435,26 @@
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
-"Les repaquetages incrémentaux sont incompatibles avec les index bitmap. Utilisez\n"
+"Les repaquetages incrémentaux sont incompatibles avec les index bitmap. "
+"Utilisez\n"
 "--no-write-bitmap-index ou désactivez le paramètre pack.writebitmaps."
 
 #: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
-msgstr "ne pas démarrer pack-objects pour ré-empaqueter les objects de prometteur"
+msgstr ""
+"ne pas démarrer pack-objects pour ré-empaqueter les objects de prometteur"
 
 #: builtin/repack.c:270 builtin/repack.c:630
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
-msgstr "repack : attente de lignes d'Id d'objets en hexa complet seulement depuis les objects de paquet."
+msgstr ""
+"repack : attente de lignes d'Id d'objets en hexa complet seulement depuis "
+"les objects de paquet."
 
 #: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
-msgstr "impossible de terminer pack-objects  pour ré-empaqueter les objets de prometteur"
+msgstr ""
+"impossible de terminer pack-objects  pour ré-empaqueter les objets de "
+"prometteur"
 
 #: builtin/repack.c:309
 #, c-format
@@ -20226,7 +21464,9 @@
 #: builtin/repack.c:368
 #, c-format
 msgid "pack %s too large to consider in geometric progression"
-msgstr "le paquet %s est trop gros pour être pris en compte dans un progression géométrique"
+msgstr ""
+"le paquet %s est trop gros pour être pris en compte dans un progression "
+"géométrique"
 
 #: builtin/repack.c:401 builtin/repack.c:408 builtin/repack.c:413
 #, c-format
@@ -20255,7 +21495,7 @@
 
 #: builtin/repack.c:471
 msgid "do not run git-update-server-info"
-msgstr "ne pas lancer git update-server-info"
+msgstr "ne pas lancer git-update-server-info"
 
 #: builtin/repack.c:474
 msgid "pass --local to git-pack-objects"
@@ -20291,7 +21531,8 @@
 
 #: builtin/repack.c:486
 msgid "same as the above, but limit memory size instead of entries count"
-msgstr "idem ci-dessus, mais limiter la taille mémoire au lieu du nombre d'éléments"
+msgstr ""
+"idem ci-dessus, mais limiter la taille mémoire au lieu du nombre d'éléments"
 
 #: builtin/repack.c:488
 msgid "limits the maximum delta depth"
@@ -20326,7 +21567,6 @@
 msgstr "--keep-unreachable et -A sont incompatibles"
 
 #: builtin/repack.c:527
-#| msgid "--long is incompatible with --abbrev=0"
 msgid "--geometric is incompatible with -A, -a"
 msgstr "--geometric est incompatible avec -A, -a"
 
@@ -20447,7 +21687,8 @@
 msgid "unable to write object to database"
 msgstr "impossible d'écrire l'objet dans la base de données"
 
-#: builtin/replace.c:322 builtin/replace.c:378 builtin/replace.c:424 builtin/replace.c:454
+#: builtin/replace.c:322 builtin/replace.c:378 builtin/replace.c:424
+#: builtin/replace.c:454
 #, c-format
 msgid "not a valid object name: '%s'"
 msgstr "nom d'objet invalide : '%s'"
@@ -20483,8 +21724,12 @@
 
 #: builtin/replace.c:430
 #, c-format
-msgid "original commit '%s' contains mergetag '%s' that is discarded; use --edit instead of --graft"
-msgstr "le commit original '%s' contient l'étiquette de fusion '%s' qui a disparu ; utilisez --edit au lieu de --graft"
+msgid ""
+"original commit '%s' contains mergetag '%s' that is discarded; use --edit "
+"instead of --graft"
+msgstr ""
+"le commit original '%s' contient l'étiquette de fusion '%s' qui a disparu ; "
+"utilisez --edit au lieu de --graft"
 
 #: builtin/replace.c:469
 #, c-format
@@ -20589,32 +21834,38 @@
 
 #: builtin/rerere.c:13
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
-msgstr "git rerere [clear | forget <chemin>... | status | remaining | diff | gc]"
+msgstr ""
+"git rerere [clear | forget <chemin>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "enregistrer des résolutions propres dans l'index"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "'git rerere forget' sans chemin est obsolète"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "échec de la génération de diff pour '%s'"
 
 #: builtin/reset.c:32
-msgid "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
-msgstr "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgid ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgstr ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
 
 #: builtin/reset.c:33
 msgid "git reset [-q] [<tree-ish>] [--] <pathspec>..."
-msgstr "git reset [-q] [<arbre ou apparenté>] [--] <spécificateur-de-chemin>..."
+msgstr ""
+"git reset [-q] [<arbre ou apparenté>] [--] <spécificateur-de-chemin>..."
 
 #: builtin/reset.c:34
-msgid "git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
-msgstr "git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<arbre-esque>]"
+msgid ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+msgstr ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<arbre-esque>]"
 
 #: builtin/reset.c:35
 msgid "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
@@ -20663,7 +21914,8 @@
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Impossible de faire un \"reset %s\" au milieu d'une fusion."
 
-#: builtin/reset.c:295 builtin/stash.c:589 builtin/stash.c:663 builtin/stash.c:687
+#: builtin/reset.c:295 builtin/stash.c:589 builtin/stash.c:663
+#: builtin/stash.c:687
 msgid "be quiet, only report errors"
 msgstr "être silencieux, afficher seulement les erreurs"
 
@@ -20685,7 +21937,9 @@
 
 #: builtin/reset.c:310
 msgid "record only the fact that removed paths will be added later"
-msgstr "enregistrer seulement le fait que les chemins effacés seront ajoutés plus tard"
+msgstr ""
+"enregistrer seulement le fait que les chemins effacés seront ajoutés plus "
+"tard"
 
 #: builtin/reset.c:344
 #, c-format
@@ -20703,7 +21957,9 @@
 
 #: builtin/reset.c:371
 msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
-msgstr "--mixed avec des chemins est obsolète ; utilisez 'git reset -- <paths>' à la place."
+msgstr ""
+"--mixed avec des chemins est obsolète ; utilisez 'git reset -- <paths>' à la "
+"place."
 
 #: builtin/reset.c:373
 #, c-format
@@ -20732,8 +21988,10 @@
 "to make this the default.\n"
 msgstr ""
 "\n"
-"Les modifications non-indexées ont pris %.2f secondes à énumérer après reset.\n"
-"Vous pouvez utiliser '--quiet' pour éviter ce message. Réglez le paramètre de\n"
+"Les modifications non-indexées ont pris %.2f secondes à énumérer après "
+"reset.\n"
+"Vous pouvez utiliser '--quiet' pour éviter ce message. Réglez le paramètre "
+"de\n"
 "config reset.quiet à true pour avoir ce comportement en permanence.\n"
 
 #: builtin/reset.c:434
@@ -20745,19 +22003,19 @@
 msgid "Could not write new index file."
 msgstr "Impossible d'écrire le nouveau fichier d'index."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "impossible de combiner --exclude-promisor-objects et --missing"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "le filtrage d'objet exige --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list ne supporte l'affichage des notes"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "le comptage marqué est incompatible avec --objects"
 
@@ -20777,6 +22035,18 @@
 msgid "output in stuck long form"
 msgstr "sortie en forme longue fixée"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "fin prématurée de l'entrée"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "pas de chaîne d'usage fournie avant le séparateur `--'"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Une seule révision attendue"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -20789,7 +22059,52 @@
 "   ou : git rev-parse --sq-quote [<argument>...]\n"
 "   ou : git rev-parse [options] [<argument>...]\n"
 "\n"
-"Lancez \"git rev-parse --parseopt -h\" pour plus d'information sur l'utilisation principale."
+"Lancez \"git rev-parse --parseopt -h\" pour plus d'information sur "
+"l'utilisation principale."
+
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir exige un argument"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "'%s' n'est pas un gitdir"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path exige un argument"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n exige un argument"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format exige un argument"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "argument inconnu pour --path-format : %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default exige un argument"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix exige un argument"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "mode inconnu pour --abbrev-ref : %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "mode inconnu pour --show-object-format : %s"
 
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
@@ -20945,11 +22260,14 @@
 
 #: builtin/rm.c:283
 msgid "No pathspec was given. Which files should I remove?"
-msgstr "Aucun spécificateur de chemin fourni. Quel fichier doit être supprimé ?"
+msgstr ""
+"Aucun spécificateur de chemin fourni. Quel fichier doit être supprimé ?"
 
 #: builtin/rm.c:310
 msgid "please stage your changes to .gitmodules or stash them to proceed"
-msgstr "veuillez indexer vos modifications de .gitmodules ou les remiser pour continuer"
+msgstr ""
+"veuillez indexer vos modifications de .gitmodules ou les remiser pour "
+"continuer"
 
 #: builtin/rm.c:331
 #, c-format
@@ -20963,12 +22281,16 @@
 
 #: builtin/send-pack.c:20
 msgid ""
-"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> [<ref>...]\n"
+"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
+"receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
+"[<ref>...]\n"
 "  --all and explicit <ref> specification are mutually exclusive."
 msgstr ""
-"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [<hôte>:]<répertoire> "
+"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
+"receive-pack>] [--verbose] [--thin] [--atomic] [<hôte>:]<répertoire> "
 "[<référence>...]\n"
-"  --all et la spécification explicite de <référence> sont mutuellement exclusifs."
+"  --all et la spécification explicite de <référence> sont mutuellement "
+"exclusifs."
 
 #: builtin/send-pack.c:188
 msgid "remote name"
@@ -20996,7 +22318,8 @@
 
 #: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
-msgstr "l'utilisation de plusieurs options --group avec stdin n'est pas supportée"
+msgstr ""
+"l'utilisation de plusieurs options --group avec stdin n'est pas supportée"
 
 #: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
@@ -21017,7 +22340,9 @@
 
 #: builtin/shortlog.c:356
 msgid "suppress commit descriptions, only provides commit count"
-msgstr "supprimer les descriptions de validation, fournit seulement le nombre de validations"
+msgstr ""
+"supprimer les descriptions de validation, fournit seulement le nombre de "
+"validations"
 
 #: builtin/shortlog.c:358
 msgid "show the email address of each author"
@@ -21117,7 +22442,8 @@
 
 #: builtin/show-branch.c:667
 msgid "show only commits not on the first branch"
-msgstr "afficher seulement les validations qui ne sont pas sur la première branche"
+msgstr ""
+"afficher seulement les validations qui ne sont pas sur la première branche"
 
 #: builtin/show-branch.c:669
 msgid "show merges reachable from only one tip"
@@ -21133,11 +22459,15 @@
 
 #: builtin/show-branch.c:675
 msgid "show <n> most recent ref-log entries starting at base"
-msgstr "afficher les <n> plus récents éléments de ref-log en commençant à la base"
+msgstr ""
+"afficher les <n> plus récents éléments de ref-log en commençant à la base"
 
 #: builtin/show-branch.c:711
-msgid "--reflog is incompatible with --all, --remotes, --independent or --merge-base"
-msgstr "--reflog est incompatible avec --all, --remotes, --independant et --merge-base"
+msgid ""
+"--reflog is incompatible with --all, --remotes, --independent or --merge-base"
+msgstr ""
+"--reflog est incompatible avec --all, --remotes, --independent et --merge-"
+"base"
 
 #: builtin/show-branch.c:735
 msgid "no branches given, and HEAD is not valid"
@@ -21185,8 +22515,12 @@
 msgstr "Algorithme d'empreinte inconnu"
 
 #: builtin/show-ref.c:12
-msgid "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
-msgstr "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<motif>...]"
+msgid ""
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
+msgstr ""
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<motif>...]"
 
 #: builtin/show-ref.c:13
 msgid "git show-ref --exclude-existing[=<pattern>]"
@@ -21202,7 +22536,9 @@
 
 #: builtin/show-ref.c:164
 msgid "stricter reference checking, requires exact ref path"
-msgstr "vérification de référence plus stricte, nécessite un chemin de référence exact"
+msgstr ""
+"vérification de référence plus stricte, nécessite un chemin de référence "
+"exact"
 
 #: builtin/show-ref.c:167 builtin/show-ref.c:169
 msgid "show the HEAD reference, even if it would be filtered out"
@@ -21218,11 +22554,14 @@
 
 #: builtin/show-ref.c:177
 msgid "do not print results to stdout (useful with --verify)"
-msgstr "ne pas afficher les résultats sur la sortie standard (pratique avec --verify)"
+msgstr ""
+"ne pas afficher les résultats sur la sortie standard (pratique avec --verify)"
 
 #: builtin/show-ref.c:179
 msgid "show refs from stdin that aren't in local repository"
-msgstr "afficher les références de l'entrée standard qui ne sont pas dans le dépôt local"
+msgstr ""
+"afficher les références de l'entrée standard qui ne sont pas dans le dépôt "
+"local"
 
 #: builtin/sparse-checkout.c:22
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
@@ -21234,22 +22573,25 @@
 
 #: builtin/sparse-checkout.c:72
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
-msgstr "cet arbre de travail n'est pas clairsemé (le fichier sparse-checkout pourrait ne pas exister)"
+msgstr ""
+"cet arbre de travail n'est pas clairsemé (le fichier sparse-checkout "
+"pourrait ne pas exister)"
 
 #: builtin/sparse-checkout.c:227
 msgid "failed to create directory for sparse-checkout file"
-msgstr "échec de la création du répertoire pour le fichier d'extraction clairsemée"
+msgstr ""
+"échec de la création du répertoire pour le fichier d'extraction clairsemée"
 
 #: builtin/sparse-checkout.c:268
 msgid "unable to upgrade repository format to enable worktreeConfig"
-msgstr "impossible de mettre à jour le format de dépôt pour activer worktreeConfig"
+msgstr ""
+"impossible de mettre à jour le format de dépôt pour activer worktreeConfig"
 
 #: builtin/sparse-checkout.c:270
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "échec de paramétrage extensions.worktreeConfig"
 
 #: builtin/sparse-checkout.c:290
-#| msgid "git sparse-checkout init [--cone]"
 msgid "git sparse-checkout init [--cone] [--[no-]sparse-index]"
 msgstr "git sparse-checkout init [--cone] [--[no-]sparse-index]"
 
@@ -21270,37 +22612,37 @@
 msgid "failed to open '%s'"
 msgstr "échec à l'ouverture de '%s'"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "impossible de normaliser le chemin '%s'"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <motifs>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "impossible de décoter la chaîne en style C '%s'"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "impossible de charger les motifs de l'extraction clairsemée existants"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "lire les motifs depuis l'entrée standard"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "erreur lors du rafraîchissement du répertoire de travail"
 
@@ -21324,10 +22666,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <nom-de-branche> [<remise>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -21400,7 +22738,8 @@
 "            %s -> %s\n"
 "         to make room.\n"
 msgstr ""
-"AVERTISSEMENT : un fichier non-suivi en travers d'un fichier suivi ! Renommage\n"
+"AVERTISSEMENT : un fichier non-suivi en travers d'un fichier suivi ! "
+"Renommage\n"
 "            %s -> %s\n"
 "         pour faire de la place.\n"
 
@@ -21455,7 +22794,8 @@
 
 #: builtin/stash.c:701
 msgid "The stash entry is kept in case you need it again."
-msgstr "L'entrée de remisage est conservée au cas où vous en auriez encore besoin."
+msgstr ""
+"L'entrée de remisage est conservée au cas où vous en auriez encore besoin."
 
 #: builtin/stash.c:724
 msgid "No branch name specified"
@@ -21477,93 +22817,94 @@
 msgid "only show untracked files in the stash"
 msgstr "ne montrer que les fichiers non suivis dans le remisage"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Impossible de mettre à jour %s avec %s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "message pour le remisage"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" exige un argument <commit>"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Aucun changement sélectionné"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Vous n'avez pas encore la validation initiale"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Impossible de sauver l'état courant de l'index"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Impossible de sauver les fichiers non-suivis"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Impossible de sauver l'état courant de la copie de travail"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Impossible d'enregistrer l'état de la copie de travail"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
-msgstr "Impossible d'utiliser --patch et --include-untracked ou --all en même temps"
+msgstr ""
+"Impossible d'utiliser --patch et --include-untracked ou --all en même temps"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Vous avez sûrement oublié 'git add' ?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Pas de modifications locales à sauver"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Impossible d'initialiser le remisage"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Impossible de sauver l'état courant"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Arbre de travail et état de l'index sauvegardés dans %s"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Impossible de supprimer les changements de la copie de travail"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "conserver l'index"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "remiser une mode rustine"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "mode silencieux"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "inclure les fichiers non suivis dans la remise"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "inclure les fichiers ignorés"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21581,45 +22922,49 @@
 
 #: builtin/stripspace.c:37
 msgid "skip and remove all lines starting with comment character"
-msgstr "sauter et supprimer toutes les lignes commençant par le caractère de commentaire"
+msgstr ""
+"sauter et supprimer toutes les lignes commençant par le caractère de "
+"commentaire"
 
 #: builtin/stripspace.c:40
 msgid "prepend comment character and space to each line"
 msgstr "ajouter devant chaque ligne le caractère de commentaire et un espace"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Nom de référence complet attendu, %s obtenu"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper  print-default-remote n'accepte aucun argument"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "impossible de supprimer un composant de l'URL '%s'"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "ancre alternative pour les chemins relatifs"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<chemin>] [<chemin>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630 builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "URL non trouvée pour le chemin de sous-module '%s' dans .gitmodules"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Entrée dans '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -21628,220 +22973,253 @@
 "run_command a retourné un statut non-nul pour %s\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
-"run_command returned non-zero status while recursing in the nested submodules of %s\n"
+"run_command returned non-zero status while recursing in the nested "
+"submodules of %s\n"
 "."
 msgstr ""
-"run_command a retourné un statut non-nul pendant la récursion dans les sous-modules inclus de %s\n"
+"run_command a retourné un statut non-nul pendant la récursion dans les sous-"
+"modules inclus de %s\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
-msgstr "supprimer la sortie lors de l'entrée dans chaque commande de sous-module"
+msgstr ""
+"supprimer la sortie lors de l'entrée dans chaque commande de sous-module"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889 builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "parcourir récursivement les sous-modules"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <commande>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
-msgid "could not look up configuration '%s'. Assuming this repository is its own authoritative upstream."
-msgstr "impossible de trouver la configuration '%s'. Ce dépôt est considéré comme son propre amont d'autorité."
+msgid ""
+"could not look up configuration '%s'. Assuming this repository is its own "
+"authoritative upstream."
+msgstr ""
+"impossible de trouver la configuration '%s'. Ce dépôt est considéré comme "
+"son propre amont d'autorité."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Échec d'enregistrement de l'URL pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Sous-module '%s' (%s) enregistré pour le chemin '%s'\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
-msgstr "attention : nous vous suggérons de spécifier une commande de mode de mise à jour pour le sous-module '%s'\n"
+msgstr ""
+"attention : nous vous suggérons de spécifier une commande de mode de mise à "
+"jour pour le sous-module '%s'\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
-msgstr "Échec d'enregistrement du mode de mise à jour pour le chemin de sous-module '%s'"
+msgstr ""
+"Échec d'enregistrement du mode de mise à jour pour le chemin de sous-module "
+"'%s'"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "supprimer la sortie lors de l'initialisation d'un sous-module"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<options>] [<chemin>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
-msgstr "pas de mise en correspondance du sous-module trouvé dans .gitmodules pour le chemin '%s'"
+msgstr ""
+"pas de mise en correspondance du sous-module trouvé dans .gitmodules pour le "
+"chemin '%s'"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "impossible de résoudre HEAD dans le sous-module '%s'"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "supprimer la sortie d'état du sous-module"
 
-#: builtin/submodule--helper.c:888
-msgid "use commit stored in the index instead of the one stored in the submodule HEAD"
-msgstr "utiliser le commit stocké dans l'index au lieu de celui stocké dans la HEAD du sous-module"
+#: builtin/submodule--helper.c:889
+msgid ""
+"use commit stored in the index instead of the one stored in the submodule "
+"HEAD"
+msgstr ""
+"utiliser le commit stocké dans l'index au lieu de celui stocké dans la HEAD "
+"du sous-module"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<chemin>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper <nom> <chemin>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodule)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodule)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "impossible de calculer l'empreinte de l'objet depuis '%s'"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "mode %o inattendu\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
-msgstr "utiliser le commit stocké dans l'index au lieu de la HEAD du sous-module"
+msgstr ""
+"utiliser le commit stocké dans l'index au lieu de la HEAD du sous-module"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr "pour comparer le commit dans l'index au lieu de celui dans la HEAD du sous-module"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "comparer le commit dans l'index avec celui dans la HEAD du sous-module"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "sauter les sous-modules avec la valeur 'ignore_config' à 'all'"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "limiter la taille du résumé"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<options>] [<commit>] [--] [<chemin>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "impossible de récupérer une révision pour HEAD"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached et --files sont mutuellement exclusifs"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Synchronisation de l'URL sous-module pour '%s'\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "échec d'enregistrement de l'URL pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "échec d'obtention du dépôt distant par défaut pour le sous-module '%s'"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "échec de mise à jour du dépôt distant pour le sous-module '%s'"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
-msgstr "supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
+msgstr ""
+"supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<chemin>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
-msgid "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you really want to remove it including all of its history)"
+msgid ""
+"Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
+"really want to remove it including all of its history)"
 msgstr ""
-"L'arbre de travail du sous-module '%s' contient un répertoire .git (utilisez 'rm -rf' si vous voulez vraiment le supprimer en incluant tout son historique)"
+"L'arbre de travail du sous-module '%s' contient un répertoire .git (utilisez "
+"'rm -rf' si vous voulez vraiment le supprimer en incluant tout son "
+"historique)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
-msgid "Submodule work tree '%s' contains local modifications; use '-f' to discard them"
-msgstr "L'arbre de travail du sous-module '%s' contient des modifications locales ; utilisez '-f' pour les annuler"
+msgid ""
+"Submodule work tree '%s' contains local modifications; use '-f' to discard "
+"them"
+msgstr ""
+"L'arbre de travail du sous-module '%s' contient des modifications locales ; "
+"utilisez '-f' pour les annuler"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Répertoire '%s' nettoyé\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Impossible de supprimer l'arbre de travail du sous-module '%s'\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "impossible de créer le répertoire vide du sous-module %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Sous-module '%s' (%s) non enregistré pour le chemin '%s'\n"
 
-#: builtin/submodule--helper.c:1625
-msgid "remove submodule working trees even if they contain local changes"
-msgstr "éliminer les arbres de travail des sous-modules même s'ils contiennent des modifications locales"
-
 #: builtin/submodule--helper.c:1626
+msgid "remove submodule working trees even if they contain local changes"
+msgstr ""
+"éliminer les arbres de travail des sous-modules même s'ils contiennent des "
+"modifications locales"
+
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "désenregistrer tous les sous-modules"
 
-#: builtin/submodule--helper.c:1631
-msgid "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
-msgstr "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<chemin>...]]"
+#: builtin/submodule--helper.c:1632
+msgid ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
+msgstr ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<chemin>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
-msgstr "Utilisez '--all' si vous voulez vraiment réinitialiser tous les sous-modules"
+msgstr ""
+"Utilisez '--all' si vous voulez vraiment réinitialiser tous les sous-modules"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -21853,228 +23231,298 @@
 "submodule.alternateErrorStrategy à 'info', ou de manière équivalente,\n"
 "clonez avec '--reference-if-able' au lieu de '--reference'."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "le sous-module '%s' ne peut pas ajouter d'alternative : %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
-msgstr "La valeur '%s' pour submodule.alternateErrorStrategy n'est pas reconnue"
+msgstr ""
+"La valeur '%s' pour submodule.alternateErrorStrategy n'est pas reconnue"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "La valeur '%s' pour submodule.alternateLocation n'est pas reconnue"
 
-#: builtin/submodule--helper.c:1823
-msgid "where the new submodule will be cloned to"
-msgstr "emplacement où le sous-module sera cloné"
-
-#: builtin/submodule--helper.c:1826
-msgid "name of the new submodule"
-msgstr "nom du nouveau sous-module"
-
-#: builtin/submodule--helper.c:1829
-msgid "url where to clone the submodule from"
-msgstr "URL depuis laquelle cloner le sous-module"
-
-#: builtin/submodule--helper.c:1837
-msgid "depth for shallow clones"
-msgstr "profondeur de l'historique des clones superficiels"
-
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
-msgid "force cloning progress"
-msgstr "forcer l'affichage de la progression du clonage"
-
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
-msgid "disallow cloning into non-empty directory"
-msgstr "interdire de cloner dans un répertoire non-vide"
-
-#: builtin/submodule--helper.c:1849
-msgid ""
-"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference <repository>] [--name <name>] [--depth <depth>] [--single-branch] --url <url> --path <path>"
-msgstr ""
-"git submodule--helper clone [--prefix=<chemin>] [--quiet] [--reference <dépôt>] [--name <nom>] [--depth <profondeur>] [--single-branch] --url <url> --path "
-"<chemin>"
-
-#: builtin/submodule--helper.c:1874
+#: builtin/submodule--helper.c:1800
 #, c-format
 msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "refus de créer/utiliser '%s' dans un répertoire git d'un autre sous-module"
+msgstr ""
+"refus de créer/utiliser '%s' dans un répertoire git d'un autre sous-module"
 
-#: builtin/submodule--helper.c:1885
+#: builtin/submodule--helper.c:1841
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "le clonage de '%s' dans le chemin de sous-module '%s' a échoué"
 
-#: builtin/submodule--helper.c:1889
+#: builtin/submodule--helper.c:1846
 #, c-format
 msgid "directory not empty: '%s'"
 msgstr "le répertoire n'est pas vide : '%s'"
 
-#: builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:1858
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "impossible de créer le répertoire de sous-module pour '%s'"
 
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
+msgid "where the new submodule will be cloned to"
+msgstr "emplacement où le sous-module sera cloné"
+
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
+msgid "name of the new submodule"
+msgstr "nom du nouveau sous-module"
+
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
+msgid "url where to clone the submodule from"
+msgstr "URL depuis laquelle cloner le sous-module"
+
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
+msgid "depth for shallow clones"
+msgstr "profondeur de l'historique des clones superficiels"
+
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
+msgid "force cloning progress"
+msgstr "forcer l'affichage de la progression du clonage"
+
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
+msgid "disallow cloning into non-empty directory"
+msgstr "interdire de cloner dans un répertoire non-vide"
+
+#: builtin/submodule--helper.c:1916
+msgid ""
+"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
+"<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
+"<url> --path <path>"
+msgstr ""
+"git submodule--helper clone [--prefix=<chemin>] [--quiet] [--reference "
+"<dépôt>] [--name <nom>] [--depth <profondeur>] [--single-branch] --url <url> "
+"--path <chemin>"
+
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Mode de mise à jour '%s' invalide pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
-msgstr "Mode de mise à jour '%s'invalide configuré pour le chemin de sous-module '%s'"
+msgstr ""
+"Mode de mise à jour '%s'invalide configuré pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Le chemin de sous-module '%s' n'est pas initialisé"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Vous voudriez sûrement utiliser 'update --init' ?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Sous-module non fusionné %s non traité"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Sous-module '%s' non traité"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Impossible de cloner '%s'. Réessai prévu"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Impossible de cloner '%s' pour la seconde fois, abandon"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "chemin dans la copie de travail"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
-msgstr "chemin dans la copie de travail, traversant les frontières de sous-modules"
+msgstr ""
+"chemin dans la copie de travail, traversant les frontières de sous-modules"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "valeurs possibles : rebase, merge, checkout ou none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "créer un clone superficiel tronqué au nombre de révisions spécifié"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "jobs parallèles"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "spécifie si le clonage initial doit être aussi superficiel"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "ne pas afficher la progression du clonage"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<chemin>] [<chemin>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "valeur invalide pour la mise à jour du paramètre"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
-msgid "Submodule (%s) branch configured to inherit branch from superproject, but the superproject is not on any branch"
-msgstr "La branche du sous-module %s est configurée pour hériter de la branche du superprojet, mais le superprojet n'est sur aucune branche"
+msgid ""
+"Submodule (%s) branch configured to inherit branch from superproject, but "
+"the superproject is not on any branch"
+msgstr ""
+"La branche du sous-module %s est configurée pour hériter de la branche du "
+"superprojet, mais le superprojet n'est sur aucune branche"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "impossible de trouver une poignée de dépôt pour le sous-module '%s'"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "parcourir récursivement les sous-modules"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
-msgstr "git submodule--helper embed-git-dir [<options>] [<chemin>...]"
+msgstr "git submodule--helper absorb-git-dirs [<options>] [<chemin>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "vérifier si écrire dans le fichier .gitmodules est sur"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "désactiver la configuration dans le fichier .gitmodules"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config name [<valeur>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <nom>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
-msgstr "veuillez vous assurer que le fichier .gitmodules est dans l'arbre de travail"
+msgstr ""
+"veuillez vous assurer que le fichier .gitmodules est dans l'arbre de travail"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "supprimer la sortie lors du paramétrage de l'url d'un sous-module"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper sync [--quiet] <chemin> <nouvelle-url>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "régler la branche de suivi par défaut à master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "régler la branche de suivi par défaut"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <chemin>"
 
-#: builtin/submodule--helper.c:2726
-msgid "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
-msgstr "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branche> <chemin>"
+#: builtin/submodule--helper.c:2742
+msgid ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branche> "
+"<chemin>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "--branch ou --default requis"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch et --default sont mutuellement exclusifs"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Ajout du dépôt existant à '%s' dans l'index\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' existe déjà et n'est pas un dépôt git valide"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "Un répertoire git pour '%s' est trouvé en local avec le(s) serveur(s) distant(s) :"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Si vous voulez réutiliser ce répertoire local git au lieu de le recloner depuis\n"
+"  %s\n"
+"utilisez l'option '--force'. Si le répertoire local git n'est pas le dépôt correct\n"
+"ou si ceci n'est pas clair, choisissez un autre nom avec l'option '--name'.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Réactivation du répertoire git local pour le sous-module '%s'\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "Impossible d'extraire le sous-module '%s'"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "la branche du dépôt à extraire lors du clonage"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "permettre l'ajout des chemins de modules ignorés par ailleurs"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr "git submodule--helper add-clone [<options>...] --url <url> --path <chemin> --name <nom>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s ne gère pas --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' n'est pas une sous-commande valide de submodule--helper"
@@ -22089,7 +23537,8 @@
 
 #: builtin/symbolic-ref.c:42
 msgid "suppress error message for non-symbolic (detached) refs"
-msgstr "supprimer le message d'erreur pour une référence non symbolique (détachée)"
+msgstr ""
+"supprimer le message d'erreur pour une référence non symbolique (détachée)"
 
 #: builtin/symbolic-ref.c:43
 msgid "delete symbolic ref"
@@ -22121,11 +23570,15 @@
 
 #: builtin/tag.c:28
 msgid ""
-"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--points-at <object>]\n"
-"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] [<pattern>...]"
+"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
+"points-at <object>]\n"
+"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] "
+"[<pattern>...]"
 msgstr ""
-"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--points-at <objet>]\n"
-"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] [<motif>...]"
+"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
+"points-at <objet>]\n"
+"\t\t[--format=<format>] [--merged <commit>] [--no-merged <commit>] "
+"[<motif>...]"
 
 #: builtin/tag.c:30
 msgid "git tag -v [--format=<format>] <tagname>..."
@@ -22160,12 +23613,14 @@
 "\n"
 "Write a message for tag:\n"
 "  %s\n"
-"Lines starting with '%c' will be kept; you may remove them yourself if you want to.\n"
+"Lines starting with '%c' will be kept; you may remove them yourself if you "
+"want to.\n"
 msgstr ""
 "\n"
 "Écrivez un message pour l'étiquette :\n"
 "  %s\n"
-"Les lignes commençant par '%c' seront gardées ; vous pouvez les retirer vous-même si vous le souhaitez.\n"
+"Les lignes commençant par '%c' seront gardées ; vous pouvez les retirer vous-"
+"même si vous le souhaitez.\n"
 
 #: builtin/tag.c:241
 msgid "unable to sign the tag"
@@ -22179,8 +23634,10 @@
 "\n"
 "\tgit tag -f %s %s^{}"
 msgstr ""
-"Vous avez créé une étiquette nichée. L'objet pointé par votre nouvelle étiquette\n"
-"est déjà une étiquette. Si vous vouliez étiqueter l'objet pointé, utilisez :\n"
+"Vous avez créé une étiquette nichée. L'objet pointé par votre nouvelle "
+"étiquette\n"
+"est déjà une étiquette. Si vous vouliez étiqueter l'objet pointé, "
+"utilisez :\n"
 "\n"
 "\tgit tag -f %s %s^{}"
 
@@ -22287,7 +23744,7 @@
 
 #: builtin/tag.c:552
 msgid "--no-contains option is only allowed in list mode"
-msgstr "l'option --contains est autorisée seulement en mode liste"
+msgstr "l'option --no-contains est autorisée seulement en mode liste"
 
 #: builtin/tag.c:554
 msgid "--points-at option is only allowed in list mode"
@@ -22295,7 +23752,8 @@
 
 #: builtin/tag.c:556
 msgid "--merged and --no-merged options are only allowed in list mode"
-msgstr "les options --merged et --no-merged ne sont autorisées qu'en mode liste"
+msgstr ""
+"les options --merged et --no-merged ne sont autorisées qu'en mode liste"
 
 #: builtin/tag.c:567
 msgid "only one -F or -m option is allowed."
@@ -22347,27 +23805,36 @@
 
 #: builtin/update-index.c:154
 msgid "directory stat info does not change after adding a new file"
-msgstr "l'information de stat du répertoire ne change pas après ajout d'un fichier"
+msgstr ""
+"l'information de stat du répertoire ne change pas après ajout d'un fichier"
 
 #: builtin/update-index.c:167
 msgid "directory stat info does not change after adding a new directory"
-msgstr "l'information de stat du répertoire ne change pas après ajout d'un répertoire"
+msgstr ""
+"l'information de stat du répertoire ne change pas après ajout d'un répertoire"
 
 #: builtin/update-index.c:180
 msgid "directory stat info changes after updating a file"
-msgstr "l'information de stat du répertoire change après mise à jour d'un fichier"
+msgstr ""
+"l'information de stat du répertoire change après mise à jour d'un fichier"
 
 #: builtin/update-index.c:191
 msgid "directory stat info changes after adding a file inside subdirectory"
-msgstr "l'information de stat du répertoire change après l'ajout d'un fichier dans un sous-répertoire"
+msgstr ""
+"l'information de stat du répertoire change après l'ajout d'un fichier dans "
+"un sous-répertoire"
 
 #: builtin/update-index.c:202
 msgid "directory stat info does not change after deleting a file"
-msgstr "l'information de stat du répertoire ne change pas après la suppression d'un fichier<"
+msgstr ""
+"l'information de stat du répertoire ne change pas après la suppression d'un "
+"fichier<"
 
 #: builtin/update-index.c:215
 msgid "directory stat info does not change after deleting a directory"
-msgstr "l'information de stat du répertoire ne change pas après la suppression d'un répertoire"
+msgstr ""
+"l'information de stat du répertoire ne change pas après la suppression d'un "
+"répertoire"
 
 #: builtin/update-index.c:222
 msgid " OK"
@@ -22439,11 +23906,15 @@
 
 #: builtin/update-index.c:1024
 msgid "add to index only; do not add content to object database"
-msgstr "ajouter seulement à l'index ; ne pas ajouter le contenu dans la base de données des objets"
+msgstr ""
+"ajouter seulement à l'index ; ne pas ajouter le contenu dans la base de "
+"données des objets"
 
 #: builtin/update-index.c:1026
 msgid "remove named paths even if present in worktree"
-msgstr "supprimer les chemins nommés même s'ils sont présents dans la copie de travail"
+msgstr ""
+"supprimer les chemins nommés même s'ils sont présents dans la copie de "
+"travail"
 
 #: builtin/update-index.c:1028
 msgid "with --stdin: input lines are terminated by null bytes"
@@ -22503,7 +23974,8 @@
 
 #: builtin/update-index.c:1067
 msgid "enable or disable file system monitor"
-msgstr "activer ou désactiver la surveillance du système de fichier (fsmonitor)"
+msgstr ""
+"activer ou désactiver la surveillance du système de fichier (fsmonitor)"
 
 #: builtin/update-index.c:1069
 msgid "mark files as fsmonitor valid"
@@ -22514,24 +23986,40 @@
 msgstr "effacer le bit de validité fsmonitor"
 
 #: builtin/update-index.c:1175
-msgid "core.splitIndex is set to false; remove or change it, if you really want to enable split index"
-msgstr "core.splitIndex est réglé à false ; supprimez-le ou changez-le si vous souhaitez vraiment activer l'index coupé"
+msgid ""
+"core.splitIndex is set to false; remove or change it, if you really want to "
+"enable split index"
+msgstr ""
+"core.splitIndex est réglé à false ; supprimez-le ou changez-le si vous "
+"souhaitez vraiment activer l'index coupé"
 
 #: builtin/update-index.c:1184
-msgid "core.splitIndex is set to true; remove or change it, if you really want to disable split index"
-msgstr "core.splitIndex est réglé à vrai ; supprimez-le ou changez-le si vous souhaitez vraiment désactiver l'index coupé"
+msgid ""
+"core.splitIndex is set to true; remove or change it, if you really want to "
+"disable split index"
+msgstr ""
+"core.splitIndex est réglé à vrai ; supprimez-le ou changez-le si vous "
+"souhaitez vraiment désactiver l'index coupé"
 
 #: builtin/update-index.c:1196
-msgid "core.untrackedCache is set to true; remove or change it, if you really want to disable the untracked cache"
-msgstr "core.untrackedCache est réglé à true ; supprimez-le ou changez-le si vous souhaitez vraiment désactiver le cache des fichiers non-suivis"
+msgid ""
+"core.untrackedCache is set to true; remove or change it, if you really want "
+"to disable the untracked cache"
+msgstr ""
+"core.untrackedCache est réglé à true ; supprimez-le ou changez-le si vous "
+"souhaitez vraiment désactiver le cache des fichiers non-suivis"
 
 #: builtin/update-index.c:1200
 msgid "Untracked cache disabled"
 msgstr "Le cache non suivi est désactivé"
 
 #: builtin/update-index.c:1208
-msgid "core.untrackedCache is set to false; remove or change it, if you really want to enable the untracked cache"
-msgstr "core.untrackedCache est réglé à false ; supprimez-le ou changez-le si vous souhaitez vraiment activer le cache des fichiers non-suivis"
+msgid ""
+"core.untrackedCache is set to false; remove or change it, if you really want "
+"to enable the untracked cache"
+msgstr ""
+"core.untrackedCache est réglé à false ; supprimez-le ou changez-le si vous "
+"souhaitez vraiment activer le cache des fichiers non-suivis"
 
 #: builtin/update-index.c:1212
 #, c-format
@@ -22540,15 +24028,20 @@
 
 #: builtin/update-index.c:1220
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
-msgstr "core.fsmonitor est réglé à false ; changez-le si vous souhaitez vraiment activer la surveillance du système de fichiers"
+msgstr ""
+"core.fsmonitor est réglé à false ; changez-le si vous souhaitez vraiment "
+"activer la surveillance du système de fichiers"
 
 #: builtin/update-index.c:1224
 msgid "fsmonitor enabled"
 msgstr "fsmonitor activé"
 
 #: builtin/update-index.c:1227
-msgid "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
-msgstr "core.fsmonitor est réglé à true ; supprimez-le ou changez-le si vous souhaitez vraiment désactiver la surveillance du système de fichiers"
+msgid ""
+"core.fsmonitor is set; remove it if you really want to disable fsmonitor"
+msgstr ""
+"core.fsmonitor est réglé à true ; supprimez-le ou changez-le si vous "
+"souhaitez vraiment désactiver la surveillance du système de fichiers"
 
 #: builtin/update-index.c:1231
 msgid "fsmonitor disabled"
@@ -22560,7 +24053,9 @@
 
 #: builtin/update-ref.c:11
 msgid "git update-ref [<options>]    <refname> <new-val> [<old-val>]"
-msgstr "git update-ref [<options>]    <nom-référence> <nouvelle-valeur> [<ancienne-valeur>]"
+msgstr ""
+"git update-ref [<options>]    <nom-référence> <nouvelle-valeur> [<ancienne-"
+"valeur>]"
 
 #: builtin/update-ref.c:12
 msgid "git update-ref [<options>] --stdin [-z]"
@@ -22604,7 +24099,8 @@
 
 #: builtin/upload-pack.c:27
 msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "ne pas essayer <répertoire>/.git/ si <répertoire> n'est pas un répertoire Git"
+msgstr ""
+"ne pas essayer <répertoire>/.git/ si <répertoire> n'est pas un répertoire Git"
 
 #: builtin/upload-pack.c:29
 msgid "interrupt transfer after <n> seconds of inactivity"
@@ -22670,7 +24166,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <chemin>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "échec de la suppression de '%s'"
@@ -22680,34 +24176,35 @@
 msgid "Removing %s/%s: %s"
 msgstr "Suppression de %s/%s : %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "afficher les arbres de travail éliminés"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "faire expirer les arbres de travail plus vieux que <temps>"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existe déjà"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "arbre de travail destination '%s' inutilisable"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
 "use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' est un arbre de travail manquant mais verrouillé ;\n"
-"utilisez '%s -f -f' pour passer outre, ou 'unlock' et 'prune' ou 'remove' pour corriger"
+"utilisez '%s -f -f' pour passer outre, ou 'unlock' et 'prune' ou 'remove' "
+"pour corriger"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -22716,34 +24213,42 @@
 "'%s' est un arbre de travail manquant mais déjà enregistré ;\n"
 "utilisez '%s -f' pour passer outre, ou 'prune' ou 'remove' pour corriger"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "impossible de créer le répertoire de '%s'"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "initialisation"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Préparation de l'arbre de travail (nouvelle branche '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
-msgstr "Préparation de l'arbre de travail (réinitialisation de la branche '%s' ; précédemment sur %s)"
+msgstr ""
+"Préparation de l'arbre de travail (réinitialisation de la branche '%s' ; "
+"précédemment sur %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Préparation de l'arbre de travail (extraction de '%s')"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Préparation de l'arbre de travail (HEAD détachée %s)"
 
 #: builtin/worktree.c:482
 msgid "checkout <branch> even if already checked out in other worktree"
-msgstr "extraire la <branche> même si elle est déjà extraite dans une autre copie de travail"
+msgstr ""
+"extraire la <branche> même si elle est déjà extraite dans une autre copie de "
+"travail"
 
 #: builtin/worktree.c:485
 msgid "create a new branch"
@@ -22761,90 +24266,106 @@
 msgid "keep the new working tree locked"
 msgstr "conserver le verrou sur le nouvel arbre de travail"
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr "régler le mode de suivi (voir git-branch(1))"
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr "essayer de nommer la nouvelle branche comme la branche amont"
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr "-b, -B et --detach sont mutuellement exclusifs"
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr "--[no-]track ne peut être utilisé qu'à la création d'une nouvelle branche"
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr "afficher les annotations étendues et les raisons, si disponible"
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr "ajouter l'annotation 'prunable' aux arbres de travail plus vieux que <temps>"
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr "--verbose et --porcelain sont mutuellement exclusifs"
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr "raison du verrouillage"
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839 builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr "régler le mode de suivi (voir git-branch(1))"
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr "essayer de nommer la nouvelle branche comme la branche amont"
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr "-b, -B et --detach sont mutuellement exclusifs"
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason exige --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "ajouté avec --lock"
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr ""
+"--[no-]track ne peut être utilisé qu'à la création d'une nouvelle branche"
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr "afficher les annotations étendues et les raisons, si disponible"
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+"ajouter l'annotation 'prunable' aux arbres de travail plus vieux que <temps>"
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose et --porcelain sont mutuellement exclusifs"
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' n'est pas une copie de travail"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
-msgstr "La copie de travail principale ne peut pas être verrouillée ou déverrouillée"
+msgstr ""
+"La copie de travail principale ne peut pas être verrouillée ou déverrouillée"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' est déjà verrouillé, car '%s'"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' est déjà verrouillé"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' n'est pas verrouillé"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
-msgstr "les arbres de travail contenant des sous-modules ne peuvent pas être déplacés ou supprimés"
+msgstr ""
+"les arbres de travail contenant des sous-modules ne peuvent pas être "
+"déplacés ou supprimés"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
-msgstr "forcer le déplacement même si l'arbre de travail est sale ou verrouillé"
+msgstr ""
+"forcer le déplacement même si l'arbre de travail est sale ou verrouillé"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' est un arbre de travail principal"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "impossible de trouver le nom de la destination à partir de '%s'"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
-"impossible de déplacer un arbre de travail verrouillé, raison du verrouillage : %s\n"
+"impossible de déplacer un arbre de travail verrouillé, raison du "
+"verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22852,45 +24373,49 @@
 "impossible de déplacer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "la validation a échoué, impossible de déplacer l'arbre de travail : %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "échec au déplacement de '%s' vers '%s'"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "échec du lancement de 'git status' sur '%s'"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
-msgstr "'%s' contient des fichiers modifiés ou non-suivis, utilisez --force pour le supprimer"
+msgstr ""
+"'%s' contient des fichiers modifiés ou non-suivis, utilisez --force pour le "
+"supprimer"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "impossible de lancer 'git status' sur '%s', code %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
-msgstr "forcer la suppression même si l'arbre de travail est sale ou verrouillé"
+msgstr ""
+"forcer la suppression même si l'arbre de travail est sale ou verrouillé"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
-"impossible de supprimer un arbre de travail verrouillé, raison du verrouillage : %s\n"
+"impossible de supprimer un arbre de travail verrouillé, raison du "
+"verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22898,17 +24423,18 @@
 "impossible de supprimer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
-msgstr "la validation a échoué, impossible de supprimer l'arbre de travail : %s"
+msgstr ""
+"la validation a échoué, impossible de supprimer l'arbre de travail : %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "réparation : %s : '%s'"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "erreur : %s : %s"
@@ -22933,16 +24459,20 @@
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <chemin>] [-c <nom>=<valeur>]\n"
-"           [--exec-path[=<chemin>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [--exec-path[=<chemin>]] [--html-path] [--man-path] [--info-"
+"path]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<chemin>] [--work-tree=<chemin>] [--namespace=<nom>]\n"
-"           [--super-prefix=<chemin>] [--config-env=<nom>=<variable-d-environnement>]\n"
+"           [--super-prefix=<chemin>] [--config-env=<nom>=<variable-d-"
+"environnement>]\n"
 "           <commande> [<args>]"
 
 #: git.c:36
@@ -22985,7 +24515,7 @@
 #: git.c:260
 #, c-format
 msgid "no config key given for --config-env\n"
-msgstr "aucune clé de configuration fournie pour --conf-env\n"
+msgstr "aucune clé de configuration fournie pour --config-env\n"
 
 #: git.c:300
 #, c-format
@@ -23055,7 +24585,8 @@
 #: git.c:916
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
-msgstr "l'expansion de l'alias '%s' a échoué : '%s' n'est pas une commande git\n"
+msgstr ""
+"l'expansion de l'alias '%s' a échoué : '%s' n'est pas une commande git\n"
 
 #: git.c:928
 #, c-format
@@ -23148,7 +24679,9 @@
 
 #: t/helper/test-simple-ipc.c:684
 msgid "test-helper simple-ipc start-daemon [<name>] [<threads>] [<max-wait>]"
-msgstr "test-helper simple-ipc start-daemon [<nom>] [<fils-d'exécution>] [<attente-max>]"
+msgstr ""
+"test-helper simple-ipc start-daemon [<nom>] [<fils-d'exécution>] [<attente-"
+"max>]"
 
 #: t/helper/test-simple-ipc.c:685
 msgid "test-helper simple-ipc stop-daemon  [<name>] [<max-wait>]"
@@ -23160,11 +24693,16 @@
 
 #: t/helper/test-simple-ipc.c:687
 msgid "test-helper simple-ipc sendbytes    [<name>] [<bytecount>] [<byte>]"
-msgstr "test-helper simple-ipc sendbytes    [<nom>] [<nombre-d'octets>] [<octets>]"
+msgstr ""
+"test-helper simple-ipc sendbytes    [<nom>] [<nombre-d'octets>] [<octets>]"
 
 #: t/helper/test-simple-ipc.c:688
-msgid "test-helper simple-ipc multiple     [<name>] [<threads>] [<bytecount>] [<batchsize>]"
-msgstr "test-helper simple-ipc multiple     [<nom>] [<fils-d'exécution>] [<nombre-d'octets>] [<taille-de-lot>]"
+msgid ""
+"test-helper simple-ipc multiple     [<name>] [<threads>] [<bytecount>] "
+"[<batchsize>]"
+msgstr ""
+"test-helper simple-ipc multiple     [<nom>] [<fils-d'exécution>] [<nombre-"
+"d'octets>] [<taille-de-lot>]"
 
 #: t/helper/test-simple-ipc.c:696
 msgid "name or pathname of unix domain socket"
@@ -23176,7 +24714,8 @@
 
 #: t/helper/test-simple-ipc.c:700
 msgid "number of threads in server thread pool"
-msgstr "nombre de fils d'exécution dans le réservoir de fils d'exécution du serveur"
+msgstr ""
+"nombre de fils d'exécution dans le réservoir de fils d'exécution du serveur"
 
 #: t/helper/test-simple-ipc.c:701
 msgid "seconds to wait for daemon to start or stop"
@@ -23209,7 +24748,8 @@
 #: http.c:399
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
-msgstr "valeur négative pour http.postbuffer ; utilisation de la valeur par défaut %d"
+msgstr ""
+"valeur négative pour http.postbuffer ; utilisation de la valeur par défaut %d"
 
 #: http.c:420
 msgid "Delegation control is not supported with cURL < 7.22.0"
@@ -23221,7 +24761,7 @@
 
 #: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
-msgstr "CURLSSLOPT_NO_REMOVE n'est pas supporté avec cuRL < 7.44.0"
+msgstr "CURLSSLOPT_NO_REVOKE n'est pas supporté avec cuRL < 7.44.0"
 
 #: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
@@ -23235,14 +24775,16 @@
 #: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
-msgstr "Impossible de régler la dorsale SSL à '%s' : cURL a été construit sans dorsale SSL"
+msgstr ""
+"Impossible de régler la dorsale SSL à '%s' : cURL a été construit sans "
+"dorsale SSL"
 
 #: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Impossible de spécifier le dorsal SSL à '%s' : déjà spécifié"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23292,95 +24834,97 @@
 msgid "redirecting to %s"
 msgstr "redirection vers %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "ne devrait pas recevoir OEF quand on n'est pas gentil sur EOF"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "le serveur distant a envoyé un séparateur sans état"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "le serveur distant a envoyé un paquet de fin de réponse inattendu"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
-msgstr "impossible de rembobiner le données post rpc - essayer d'augmenter http.postBuffer"
+msgstr ""
+"impossible de rembobiner le données post rpc - essayer d'augmenter http."
+"postBuffer"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl : mauvais caractère de longueur de ligne : %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl : paquet de fin de réponse inattendu"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "échec RPC ; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "impossible de gérer des poussées aussi grosses"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "impossible de compresser la requête ; erreur de compression zlib %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "impossible de compresser la requête ; erreur de fin zlib %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "%d octets de longueur d'entête ont été reçus"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "%d octets de corps sont encore attendus"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "le protocole http idiot ne supporte la capacité superficielle"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "échec du récupération."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "impossible de récupérer par sha1 sur http intelligent"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "erreur de protocole : sha/ref attendu, '%s' trouvé"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "le transport http ne supporte pas %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "échec de git-http-push"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: usage: git remote-curl <distant> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl : erreur de lecture du flux de commande depuis git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl : récupération tentée sans dépôt local"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl : commande inconnue '%s' depuis git"
@@ -23430,8 +24974,11 @@
 msgstr "lire les spécificateurs de fichier depuis fichier"
 
 #: parse-options.h:339
-msgid "with --pathspec-from-file, pathspec elements are separated with NUL character"
-msgstr "avec --pathspec-from-file, les spécificateurs de chemin sont séparés par un caractère NUL"
+msgid ""
+"with --pathspec-from-file, pathspec elements are separated with NUL character"
+msgstr ""
+"avec --pathspec-from-file, les spécificateurs de chemin sont séparés par un "
+"caractère NUL"
 
 #: ref-filter.h:99
 msgid "key"
@@ -23443,7 +24990,8 @@
 
 #: rerere.h:44
 msgid "update the index with reused conflict resolution if possible"
-msgstr "met à jour l'index avec les résolutions de conflit réutilisées si possible"
+msgstr ""
+"met à jour l'index avec les résolutions de conflit réutilisées si possible"
 
 #: command-list.h:50
 msgid "Add file contents to the index"
@@ -23475,7 +25023,9 @@
 
 #: command-list.h:57
 msgid "Show what revision and author last modified each line of a file"
-msgstr "Montrer la révision et l'auteur qui ont modifié en dernier chaque ligne d'un fichier"
+msgstr ""
+"Montrer la révision et l'auteur qui ont modifié en dernier chaque ligne d'un "
+"fichier"
 
 #: command-list.h:58
 msgid "List, create, or delete branches"
@@ -23483,7 +25033,8 @@
 
 #: command-list.h:59
 msgid "Collect information for user to file a bug report"
-msgstr "Collecter l'information pour l'utilisateur pour remplir un rapport de bogue"
+msgstr ""
+"Collecter l'information pour l'utilisateur pour remplir un rapport de bogue"
 
 #: command-list.h:60
 msgid "Move objects and refs by archive"
@@ -23491,7 +25042,9 @@
 
 #: command-list.h:61
 msgid "Provide content or type and size information for repository objects"
-msgstr "Fournir le contenu ou l'information de type et taille pour les objets du dépôt"
+msgstr ""
+"Fournir le contenu ou l'information de type et taille pour les objets du "
+"dépôt"
 
 #: command-list.h:62
 msgid "Display gitattributes information"
@@ -23559,7 +25112,9 @@
 
 #: command-list.h:78
 msgid "Count unpacked number of objects and their disk consumption"
-msgstr "Compter le nombre d'objets non-empaquetés et leur consommation d'espace disque"
+msgstr ""
+"Compter le nombre d'objets non-empaquetés et leur consommation d'espace "
+"disque"
 
 #: command-list.h:79
 msgid "Retrieve and store user credentials"
@@ -23591,11 +25146,14 @@
 
 #: command-list.h:86
 msgid "Give an object a human readable name based on an available ref"
-msgstr "Baptiser un objet avec un nom lisible à partir d'une référence disponible"
+msgstr ""
+"Baptiser un objet avec un nom lisible à partir d'une référence disponible"
 
 #: command-list.h:87
 msgid "Show changes between commits, commit and working tree, etc"
-msgstr "Afficher les changements entre les validations, entre validation et copie de travail, etc"
+msgstr ""
+"Afficher les changements entre les validations, entre validation et copie de "
+"travail, etc"
 
 #: command-list.h:88
 msgid "Compares files in the working tree and the index"
@@ -23651,7 +25209,8 @@
 
 #: command-list.h:101
 msgid "Verifies the connectivity and validity of the objects in the database"
-msgstr "Vérifier la connectivité et la validité des objets dans la base de données"
+msgstr ""
+"Vérifier la connectivité et la validité des objets dans la base de données"
 
 #: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
@@ -23671,7 +25230,8 @@
 
 #: command-list.h:106
 msgid "Compute object ID and optionally creates a blob from a file"
-msgstr "Calculer l'ID d'objet et créer optionnellement un blob depuis un fichier"
+msgstr ""
+"Calculer l'ID d'objet et créer optionnellement un blob depuis un fichier"
 
 #: command-list.h:107
 msgid "Display help information about Git"
@@ -23695,7 +25255,8 @@
 
 #: command-list.h:112
 msgid "Build pack index file for an existing packed archive"
-msgstr "Construire un fichier d'index pack depuis une archive compactée existante"
+msgstr ""
+"Construire un fichier d'index pack depuis une archive compactée existante"
 
 #: command-list.h:113
 msgid "Create an empty Git repository or reinitialize an existing one"
@@ -23707,7 +25268,8 @@
 
 #: command-list.h:115
 msgid "Add or parse structured information in commit messages"
-msgstr "Ajouter ou analyser l'information structurée dans les messages de validation"
+msgstr ""
+"Ajouter ou analyser l'information structurée dans les messages de validation"
 
 #: command-list.h:116
 msgid "The Git repository browser"
@@ -23719,7 +25281,9 @@
 
 #: command-list.h:118
 msgid "Show information about files in the index and the working tree"
-msgstr "Afficher l'information à propos des fichiers dans l'index ou l'arbre de travail"
+msgstr ""
+"Afficher l'information à propos des fichiers dans l'index ou l'arbre de "
+"travail"
 
 #: command-list.h:119
 msgid "List references in a remote repository"
@@ -23731,7 +25295,9 @@
 
 #: command-list.h:121
 msgid "Extracts patch and authorship from a single e-mail message"
-msgstr "Extraire le patch et l'information de d'auteur depuis un simple message de courriel"
+msgstr ""
+"Extraire le patch et l'information de d'auteur depuis un simple message de "
+"courriel"
 
 #: command-list.h:122
 msgid "Simple UNIX mbox splitter program"
@@ -23763,7 +25329,9 @@
 
 #: command-list.h:129
 msgid "Run merge conflict resolution tools to resolve merge conflicts"
-msgstr "Lancer les outils de résolution de conflit de fusion pour résoudre les conflits de fusion"
+msgstr ""
+"Lancer les outils de résolution de conflit de fusion pour résoudre les "
+"conflits de fusion"
 
 #: command-list.h:130
 msgid "Show three-way merge without touching index"
@@ -23815,7 +25383,8 @@
 
 #: command-list.h:142
 msgid "Prune all unreachable objects from the object database"
-msgstr "Éliminer les objets inatteignables depuis la base de données des objets"
+msgstr ""
+"Éliminer les objets inatteignables depuis la base de données des objets"
 
 #: command-list.h:143
 msgid "Remove extra objects that are already in pack files"
@@ -23835,7 +25404,8 @@
 
 #: command-list.h:147
 msgid "Compare two commit ranges (e.g. two versions of a branch)"
-msgstr "Comparer deux plages de commits (par exemple deux versions d'une branche)"
+msgstr ""
+"Comparer deux plages de commits (par exemple deux versions d'une branche)"
 
 #: command-list.h:148
 msgid "Reads tree information into the index"
@@ -23975,7 +25545,8 @@
 
 #: command-list.h:182
 msgid "Create, list, delete or verify a tag object signed with GPG"
-msgstr "Créer, lister, supprimer ou vérifier un objet d'étiquette signé avec GPG"
+msgstr ""
+"Créer, lister, supprimer ou vérifier un objet d'étiquette signé avec GPG"
 
 #: command-list.h:183
 msgid "Creates a temporary file with a blob's contents"
@@ -23991,11 +25562,14 @@
 
 #: command-list.h:186
 msgid "Update the object name stored in a ref safely"
-msgstr "Mettre à jour le nom d'objet stocké dans une référence en toute sécurité"
+msgstr ""
+"Mettre à jour le nom d'objet stocké dans une référence en toute sécurité"
 
 #: command-list.h:187
 msgid "Update auxiliary info file to help dumb servers"
-msgstr "Mettre à jour le fichier d'informations auxiliaires pour aider les serveurs idiots"
+msgstr ""
+"Mettre à jour le fichier d'informations auxiliaires pour aider les serveurs "
+"idiots"
 
 #: command-list.h:188
 msgid "Send archive back to git-archive"
@@ -24083,7 +25657,8 @@
 
 #: command-list.h:209
 msgid "Map author/committer names and/or E-Mail addresses"
-msgstr "Fait correspondre les noms d'auteur/validateur avec les adresses de courriel"
+msgstr ""
+"Fait correspondre les noms d'auteur/validateur avec les adresses de courriel"
 
 #: command-list.h:210
 msgid "Defining submodule properties"
@@ -24157,8 +25732,12 @@
 msgstr "succès de la bissection"
 
 #: git-merge-octopus.sh:46
-msgid "Error: Your local changes to the following files would be overwritten by merge"
-msgstr "Erreur : vos modifications locales aux fichiers suivants seraient écrasées par la fusion"
+msgid ""
+"Error: Your local changes to the following files would be overwritten by "
+"merge"
+msgstr ""
+"Erreur : vos modifications locales aux fichiers suivants seraient écrasées "
+"par la fusion"
 
 #: git-merge-octopus.sh:61
 msgid "Automated merge did not work."
@@ -24194,7 +25773,9 @@
 
 #: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
-msgstr "Un chemin relatif ne peut être utilisé que depuis la racine de la copie de travail"
+msgstr ""
+"Un chemin relatif ne peut être utilisé que depuis la racine de la copie de "
+"travail"
 
 #: git-submodule.sh:189
 #, sh-format
@@ -24216,120 +25797,101 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' n'a pas de commit extrait"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "Ajout du dépôt existant à '$sm_path' dans l'index"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' existe déjà et n'est pas un dépôt git valide"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr "Un répertoire git pour '$sm_name' est trouvé en local avec le(s) serveur(s) distant(s) :"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct repo\n"
-"or you are unsure what this means choose another name with the '--name' option."
-msgstr ""
-"Si vous voulez réutiliser ce répertoire local git au lieu de le recloner depuis\n"
-"  $realrepo\n"
-"utilisez l'option '--force'. Si le répertoire local git n'est pas le dépôt correct\n"
-"ou si ceci n'est pas clair, choisissez un autre nom avec l'option '--name'."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "Réactivation du répertoire git local pour le sous-module '$sm_name'."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Impossible d'extraire le sous-module '$sm_path'"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Échec d'ajout du sous-module '$sm_path'"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Échec d'enregistrement du sous-module '$sm_path'"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
-msgstr "Impossible de trouver la révision courante dans le chemin de sous-module '$displaypath'"
+msgstr ""
+"Impossible de trouver la révision courante dans le chemin de sous-module "
+"'$displaypath'"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Impossible de rapatrier dans le chemin de sous-module '$sm_path'"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
-msgid "Unable to find current ${remote_name}/${branch} revision in submodule path '$sm_path'"
-msgstr "Impossible de trouver la révision courante ${remote_name}/${branch} dans le chemin de sous-module '$sm_path'"
+msgid ""
+"Unable to find current ${remote_name}/${branch} revision in submodule path "
+"'$sm_path'"
+msgstr ""
+"Impossible de trouver la révision courante ${remote_name}/${branch} dans le "
+"chemin de sous-module '$sm_path'"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
-msgid "Unable to fetch in submodule path '$displaypath'; trying to directly fetch $sha1:"
-msgstr "Impossible de rapatrier dans le chemin de sous-module '$displaypath' ; essai de rapatriement direct de $sha1 :"
+msgid ""
+"Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
+"$sha1:"
+msgstr ""
+"Impossible de rapatrier dans le chemin de sous-module '$displaypath' ; essai "
+"de rapatriement direct de $sha1 :"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
-msgid "Fetched in submodule path '$displaypath', but it did not contain $sha1. Direct fetching of that commit failed."
-msgstr "Chemin de sous-module '$displaypath' récupéré, mais il ne contenait pas $sha1. La récupération directe de ce commit a échoué."
+msgid ""
+"Fetched in submodule path '$displaypath', but it did not contain $sha1. "
+"Direct fetching of that commit failed."
+msgstr ""
+"Chemin de sous-module '$displaypath' récupéré, mais il ne contenait pas "
+"$sha1. La récupération directe de ce commit a échoué."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
-msgstr "Impossible d'extraire '$sha1' dans le chemin de sous-module '$displaypath'"
+msgstr ""
+"Impossible d'extraire '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : '$sha1' extrait"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
-msgstr "Impossible de rebaser '$sha1' dans le chemin de sous-module '$displaypath'"
+msgstr ""
+"Impossible de rebaser '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : rebasé dans '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
-msgstr "Impossible de fusionner '$sha1' dans le chemin de sous-module '$displaypath'"
+msgstr ""
+"Impossible de fusionner '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : fusionné dans '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
-msgstr "L'exécution de '$command $sha1' a échoué dans le chemin de sous-module '$displaypath'"
+msgstr ""
+"L'exécution de '$command $sha1' a échoué dans le chemin de sous-module "
+"'$displaypath'"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Chemin de sous-module '$displaypath' : '$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Échec de parcours dans le chemin du sous-module '$displaypath'"
@@ -24383,7 +25945,8 @@
 " p, pick <commit> = utiliser le commit\n"
 " r, reword <commit> = utiliser le commit, mais reformuler son message\n"
 " e, edit <commit> = utiliser le commit, mais s'arrêter pour le modifier\n"
-" s, squash <commit> = utiliser le commit, mais le fusionner avec le précédent\n"
+" s, squash <commit> = utiliser le commit, mais le fusionner avec le "
+"précédent\n"
 " f, fixup <commit> = comme \"squash\", mais en éliminant son message\n"
 " x, exec <commit> = lancer la commande (reste de la ligne) dans un shell\n"
 " d, drop <commit> = supprimer le commit\n"
@@ -24485,7 +26048,8 @@
 msgid "This is a combination of 2 commits."
 msgstr "Ceci est la combinaison de 2 commits."
 
-#: git-rebase--preserve-merges.sh:526 git-rebase--preserve-merges.sh:569 git-rebase--preserve-merges.sh:572
+#: git-rebase--preserve-merges.sh:526 git-rebase--preserve-merges.sh:569
+#: git-rebase--preserve-merges.sh:572
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Impossible d'appliquer $sha1... $rest"
@@ -24495,12 +26059,16 @@
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
 "This is most likely due to an empty commit message, or the pre-commit hook\n"
-"failed. If the pre-commit hook failed, you may need to resolve the issue before\n"
+"failed. If the pre-commit hook failed, you may need to resolve the issue "
+"before\n"
 "you are able to reword the commit."
 msgstr ""
-"Impossible de corriger le commit après avoir réussi à picorer $sha1... $rest\n"
-"C'est probablement dû à un message de validation vide ou le crochet pre-commit\n"
-"a échoué. Si le crochet pre-commit a échoué, vous devez peut-être résoudre le\n"
+"Impossible de corriger le commit après avoir réussi à picorer $sha1... "
+"$rest\n"
+"C'est probablement dû à un message de validation vide ou le crochet pre-"
+"commit\n"
+"a échoué. Si le crochet pre-commit a échoué, vous devez peut-être résoudre "
+"le\n"
 "problème avant de pouvoir reformuler le message du commit."
 
 #: git-rebase--preserve-merges.sh:616
@@ -24604,7 +26172,8 @@
 
 #: git-rebase--preserve-merges.sh:824
 msgid "Error trying to find the author identity to amend commit"
-msgstr "Erreur lors de la recherche de l'identité de l'auteur pour corriger le commit"
+msgstr ""
+"Erreur lors de la recherche de l'identité de l'auteur pour corriger le commit"
 
 #: git-rebase--preserve-merges.sh:829
 msgid ""
@@ -24663,7 +26232,9 @@
 #: git-sh-setup.sh:191
 #, sh-format
 msgid "Cannot chdir to $cdup, the toplevel of the working tree"
-msgstr "Impossible de se placer dans le répertoire $cdup, la racine de la copie de travail"
+msgstr ""
+"Impossible de se placer dans le répertoire $cdup, la racine de la copie de "
+"travail"
 
 #: git-sh-setup.sh:200 git-sh-setup.sh:207
 #, sh-format
@@ -24676,11 +26247,14 @@
 
 #: git-sh-setup.sh:224
 msgid "Cannot rewrite branches: You have unstaged changes."
-msgstr "Impossible de réécrire les branches : vous avez des modifications non indexées."
+msgstr ""
+"Impossible de réécrire les branches : vous avez des modifications non "
+"indexées."
 
 #: git-sh-setup.sh:227
 msgid "Cannot pull with rebase: You have unstaged changes."
-msgstr "impossible de tirer avec rebasage. Vous avez des modifications non indexées."
+msgstr ""
+"impossible de tirer avec rebasage. Vous avez des modifications non indexées."
 
 #: git-sh-setup.sh:230
 #, sh-format
@@ -24689,16 +26263,20 @@
 
 #: git-sh-setup.sh:243
 msgid "Cannot rebase: Your index contains uncommitted changes."
-msgstr "Impossible de rebaser : votre index contient des modifications non validées."
+msgstr ""
+"Impossible de rebaser : votre index contient des modifications non validées."
 
 #: git-sh-setup.sh:246
 msgid "Cannot pull with rebase: Your index contains uncommitted changes."
-msgstr "impossible de tirer avec rebasage : votre index contient des modifications non validées."
+msgstr ""
+"impossible de tirer avec rebasage : votre index contient des modifications "
+"non validées."
 
 #: git-sh-setup.sh:249
 #, sh-format
 msgid "Cannot $action: Your index contains uncommitted changes."
-msgstr "$action est impossible : votre index contient des modifications non validées."
+msgstr ""
+"$action est impossible : votre index contient des modifications non validées."
 
 #: git-sh-setup.sh:253
 msgid "Additionally, your index contains uncommitted changes."
@@ -24706,7 +26284,8 @@
 
 #: git-sh-setup.sh:373
 msgid "You need to run this command from the toplevel of the working tree."
-msgstr "Vous devez lancer cette commande depuis la racine de votre copie de travail."
+msgstr ""
+"Vous devez lancer cette commande depuis la racine de votre copie de travail."
 
 #: git-sh-setup.sh:378
 msgid "Unable to determine absolute path of git directory"
@@ -24749,7 +26328,8 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme desindexée."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1074 git-add--interactive.perl:1080
+#: git-add--interactive.perl:1065 git-add--interactive.perl:1074
+#: git-add--interactive.perl:1080
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24757,7 +26337,8 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme appliquée."
 
-#: git-add--interactive.perl:1068 git-add--interactive.perl:1071 git-add--interactive.perl:1077
+#: git-add--interactive.perl:1068 git-add--interactive.perl:1071
+#: git-add--interactive.perl:1077
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24934,7 +26515,8 @@
 #: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer le changement de mode dans l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer le changement de mode dans l'arbre de travail [y,n,q,a,d%s,?] ? "
 
 #: git-add--interactive.perl:1480
 #, perl-format
@@ -25012,17 +26594,21 @@
 "revert        - revert staged set of changes back to the HEAD version\n"
 "patch         - pick hunks and update selectively\n"
 "diff          - view diff between HEAD and index\n"
-"add untracked - add contents of untracked files to the staged set of changes\n"
+"add untracked - add contents of untracked files to the staged set of "
+"changes\n"
 msgstr ""
 "status        - montrer les chemins modifiés\n"
-"update        - ajouter l'état de l'arbre de travail aux modifications à indexer\n"
+"update        - ajouter l'état de l'arbre de travail aux modifications à "
+"indexer\n"
 "revert        - faire revenir les modifications à indexer à la version HEAD\n"
 "patch         - sélectionner les sections et mettre à jour sélectivement\n"
 "diff          - visualiser les diff entre HEAD et l'index\n"
 "add untracked - ajouter les fichiers non-suivis aux modifications à indexer\n"
 
-#: git-add--interactive.perl:1828 git-add--interactive.perl:1840 git-add--interactive.perl:1843 git-add--interactive.perl:1850 git-add--interactive.perl:1853
-#: git-add--interactive.perl:1860 git-add--interactive.perl:1864 git-add--interactive.perl:1870
+#: git-add--interactive.perl:1828 git-add--interactive.perl:1840
+#: git-add--interactive.perl:1843 git-add--interactive.perl:1850
+#: git-add--interactive.perl:1853 git-add--interactive.perl:1860
+#: git-add--interactive.perl:1864 git-add--interactive.perl:1870
 msgid "missing --"
 msgstr "-- manquant"
 
@@ -25036,86 +26622,97 @@
 msgid "invalid argument %s, expecting --"
 msgstr "argument invalide %s, -- attendu"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
-msgstr "la zone locale diffère du GMT par un intervalle supérieur à une minute\n"
+msgstr ""
+"la zone locale diffère du GMT par un intervalle supérieur à une minute\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "le décalage de temps local est plus grand ou égal à 24 heures\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "fatal : la commande '%s' s'est interrompue avec le code %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "l'éditeur est sorti en erreur, abandon total"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
-msgid "'%s' contains an intermediate version of the email you were composing.\n"
-msgstr "'%s' contient une version intermédiaire du courriel que vous composiez.\n"
+msgid ""
+"'%s' contains an intermediate version of the email you were composing.\n"
+msgstr ""
+"'%s' contient une version intermédiaire du courriel que vous composiez.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' contient le courriel composé.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases est incompatible avec d'autres options\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
 "Set sendemail.forbidSendmailVariables to false to disable this check.\n"
 msgstr ""
 "fatal : options de configuration trouvées pour 'sendmail'\n"
-"git-send-mail est configuré avec des options sendemail.* - veuillez noter le 'e'.\n"
-"Positionnez sendemail.forbidSendmailVariables à false pour désactiver cette vérification.\n"
+"git-send-email est configuré avec des options sendemail.* - veuillez noter "
+"le 'e'.\n"
+"Positionnez sendemail.forbidSendmailVariables à false pour désactiver cette "
+"vérification.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Lancement de git format-patch impossible à l'extérieur d'un dépôt\n"
 
-#: git-send-email.perl:501
-msgid "`batch-size` and `relogin` must be specified together (via command-line or configuration option)\n"
-msgstr "`batch-size` et `relogin` doivent être spécifiés ensembles (via la ligne de commande ou des options de configuration)\n"
+#: git-send-email.perl:533
+msgid ""
+"`batch-size` and `relogin` must be specified together (via command-line or "
+"configuration option)\n"
+msgstr ""
+"`batch-size` et `relogin` doivent être spécifiés ensembles (via la ligne de "
+"commande ou des options de configuration)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Champ de --suppress-cc inconnu : '%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Paramètre de --confirm inconnu : '%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
-msgstr "attention : les guillemets ne sont pas supportés dans alias sendmail : %s\n"
+msgstr ""
+"attention : les guillemets ne sont pas supportés dans alias sendmail : %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "attention : `:include:` n'est pas supporté : %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
-msgstr "attention : les redirections `/file` ou `|pipe` ne sont pas supportées : %s\n"
+msgstr ""
+"attention : les redirections `/file` ou `|pipe` ne sont pas supportées : %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "attention : ligne sendmail non reconnue : %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25124,18 +26721,18 @@
 "    * Saying \"./%s\" if you mean a file; or\n"
 "    * Giving --format-patch option if you mean a range.\n"
 msgstr ""
-"Le fichier '%s' existe mais ce pourrait aussi être la plage de commmits\n"
-"pour lequel les patches sont à produire. Veuillez préciser...\n"
+"Le fichier '%s' existe, mais ce pourrait aussi être la plage de commits\n"
+"pour lequel les rustines sont à produire. Veuillez préciser...\n"
 "\n"
 "    * en indiquant \"./%s\" si vous désignez un fichier, ou\n"
 "    * en fournissant l'option --format-patch pour une plage.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Échec à l'ouverture du répertoire %s : %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -25145,17 +26742,17 @@
 "Aucun fichier patch spécifié !\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Ligne de sujet non trouvée dans %s ?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Impossible d'ouvrir %s en écriture : %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -25169,59 +26766,67 @@
 "\n"
 "Effacez le corps si vous ne souhaitez pas envoyer un résumé.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Échec à l'ouverture de %s : %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Échec à l'ouverture de %s.final : %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Le courriel de résumé étant vide, il a été ignoré\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Êtes-vous sur de vouloir utiliser <%s> [y/N] ? "
 
-#: git-send-email.perl:928
-msgid "The following files are 8bit, but do not declare a Content-Transfer-Encoding.\n"
-msgstr "Les fichiers suivants sont 8bit mais ne déclarent pas de champs Content-Transfer-Encoding.\n"
+#: git-send-email.perl:990
+msgid ""
+"The following files are 8bit, but do not declare a Content-Transfer-"
+"Encoding.\n"
+msgstr ""
+"Les fichiers suivants sont 8bit mais ne déclarent pas de champs Content-"
+"Transfer-Encoding.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Quel encodage 8bit doit être déclaré [UTF8] ? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
 "\t%s\n"
-"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really want to send.\n"
+"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really "
+"want to send.\n"
 msgstr ""
 "Envoi refusé parce que le patch\n"
 "\t%s\n"
-"a un sujet modèle '*** SUBJECT HERE ***'. Passez --force is vous souhaitez vraiment envoyer.\n"
+"a un sujet modèle '*** SUBJECT HERE ***'. Passez --force is vous souhaitez "
+"vraiment envoyer.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "À qui les courriels doivent-ils être envoyés (s'il y en a) ?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "fatal : l'alias '%s' se développe en lui-même\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
-msgstr "Message-ID à utiliser comme In-Reply-To pour le premier courriel (s'il y en a) ? "
+msgstr ""
+"Message-ID à utiliser comme In-Reply-To pour le premier courriel (s'il y en "
+"a) ? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "erreur : impossible d'extraire une adresse valide depuis : %s\n"
@@ -25229,16 +26834,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "Que faire de cette adresse ? ([q]uitter|[d]élaisser|[e]diter): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "Le chemin vers la CA \"%s\" n'existe pas"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25265,112 +26870,114 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "Envoyer ce courriel ? ([y]es|[n]o|[e]dit|[q]uit|[a]ll) : "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Une réponse est nécessaire"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Le serveur SMTP nécessaire n'est pas défini correctement."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Le serveur ne supporte pas STARTTLS ! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "échec de STARTTLS ! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
-msgstr "Impossible d'initialiser SMTP. Vérifiez la configuration et utilisez --smtp-debug."
+msgstr ""
+"Impossible d'initialiser SMTP. Vérifiez la configuration et utilisez --smtp-"
+"debug."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Échec de l'envoi de %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Envoi simulé de %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "%s envoyé\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Simulation OK. Le journal indique :\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. Le journal indique :\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Résultat : "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Résultat : OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "impossible d'ouvrir le fichier %s"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Ajout de cc: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Ajout de to: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Ajout de cc: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(corps) Ajout de cc: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Impossible d'exécuter '%s'"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Ajout de %s : %s depuis : '%s'\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) échec de la fermeture du pipe vers '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "impossible d'envoyer un message comme 7bit"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "codage de transfert invalide"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -25381,12 +26988,12 @@
 "%s\n"
 "attention : aucun patch envoyé\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "impossible d'ouvrir %s :%s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -25395,69 +27002,13 @@
 "fatal : %s : %d est plus long que 998 caractères \n"
 "attention : aucun patch envoyé\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "%s sauté avec un suffix de sauvegarde '%s'.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
-
-#~ msgid "--cached and --3way cannot be used together."
-#~ msgstr "--cached et --3way ne peuvent pas être utilisés ensemble."
-
-#~ msgid "both"
-#~ msgstr "les deux"
-
-#~ msgid "one"
-#~ msgstr "un"
-
-#, c-format
-#~ msgid "Already up to date!"
-#~ msgstr "Déjà à jour !"
-
-#~ msgid "Already up to date. Yeeah!"
-#~ msgstr "Déjà à jour. Ouais !"
-
-#~ msgid "--batch-size option is only for 'repack' subcommand"
-#~ msgstr "l'option --batch-size ne sert que pour la sous-commande 'repack'"
-
-#~ msgid "Percentage by which creation is weighted"
-#~ msgstr "Pourcentage par lequel la création est pondérée"
-
-#~ msgid ""
-#~ "the rebase.useBuiltin support has been removed!\n"
-#~ "See its entry in 'git help config' for details."
-#~ msgstr ""
-#~ "les support de rebase.useBuiltin a été supprimé !\n"
-#~ "Voir son entrée dans 'git help config' pour plus de détails."
-
-#, perl-format
-#~ msgid "%s: patch contains a line longer than 998 characters"
-#~ msgstr "%s : le patch contient une ligne plus longue que 998 caractères"
-
-#~ msgid "repository contains replace objects; skipping commit-graph"
-#~ msgstr "le dépôt contient des object de remplacement ; saut du graphe de commits"
-
-#~ msgid "repository contains (deprecated) grafts; skipping commit-graph"
-#~ msgstr "le dépôt contient des greffes (déconseillées) ; saut du graphe de commits"
-
-#~ msgid "repository is shallow; skipping commit-graph"
-#~ msgstr "le dépôt est superficiel ; saut du graphe de commit"
-
-#, c-format
-#~ msgid "commit-graph improper chunk offset %08x%08x"
-#~ msgstr "décalage de bloc %08x%08x du graphe de commit inadéquat"
-
-#, c-format
-#~ msgid "commit-graph chunk id %08x appears multiple times"
-#~ msgstr "l'id de bloc de graphe de commit %08x apparaît des multiples fois"
-
-#~ msgid "invalid chunk offset (too large)"
-#~ msgstr "décalage de section invalide (trop grand)"
-
-#~ msgid "Writing chunks to multi-pack-index"
-#~ msgstr "Écriture des sections dans l'index multi-paquet"
diff --git a/po/git.pot b/po/git.pot
index 7889c2c..fcd45ef 100644
--- a/po/git.pot
+++ b/po/git.pot
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -23,8 +23,8 @@
 msgid "Huh (%s)?"
 msgstr ""
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr ""
@@ -53,7 +53,7 @@
 msgid "could not stage '%s'"
 msgstr ""
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr ""
 
@@ -111,12 +111,12 @@
 msgid "ignoring unmerged: %s"
 msgstr ""
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr ""
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr ""
@@ -193,11 +193,11 @@
 msgid "(empty) select nothing"
 msgstr ""
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr ""
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr ""
 
@@ -209,12 +209,13 @@
 msgid "unstaged"
 msgstr ""
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr ""
@@ -223,7 +224,7 @@
 msgid "could not refresh index"
 msgstr ""
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr ""
@@ -474,47 +475,47 @@
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr ""
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr ""
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr ""
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr ""
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr ""
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr ""
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr ""
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
 "%.*s"
 msgstr ""
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -523,11 +524,11 @@
 "%.*s"
 msgstr ""
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr ""
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -537,18 +538,18 @@
 msgstr ""
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
 "aborted and the hunk is left unchanged.\n"
 msgstr ""
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr ""
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr ""
 
@@ -564,24 +565,24 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr ""
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr ""
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr ""
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -594,69 +595,69 @@
 "? - print help\n"
 msgstr ""
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr ""
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr ""
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr ""
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr ""
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr ""
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr ""
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] ""
 msgstr[1] ""
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr ""
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr ""
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr ""
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr ""
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr ""
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr ""
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr ""
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr ""
 
@@ -707,7 +708,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr ""
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr ""
 
@@ -1062,8 +1063,8 @@
 msgid "%s has type %o, expected %o"
 msgstr ""
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr ""
@@ -1153,7 +1154,7 @@
 msgid "unable to add cache entry for %s"
 msgstr ""
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr ""
@@ -1243,7 +1244,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr ""
 
@@ -1255,7 +1256,7 @@
 msgid "apply changes matching the given path"
 msgstr ""
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr ""
 
@@ -1319,9 +1320,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr ""
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr ""
@@ -1351,8 +1352,8 @@
 msgstr ""
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr ""
 
@@ -1364,7 +1365,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr ""
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr ""
 
@@ -1406,7 +1407,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr ""
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr ""
@@ -1439,13 +1440,13 @@
 msgstr ""
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr ""
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr ""
@@ -1487,7 +1488,7 @@
 msgid "archive format"
 msgstr ""
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr ""
 
@@ -1498,7 +1499,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1529,7 +1530,8 @@
 msgstr ""
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr ""
 
@@ -1537,7 +1539,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr ""
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr ""
@@ -1705,11 +1707,11 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr ""
 
@@ -1852,118 +1854,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr ""
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr ""
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr ""
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr ""
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr ""
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr ""
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr ""
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr ""
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr ""
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr ""
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr ""
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr ""
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr ""
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr ""
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr ""
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr ""
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr ""
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr ""
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr ""
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr ""
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr ""
@@ -2031,12 +2033,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr ""
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr ""
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr ""
@@ -2098,7 +2100,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr ""
@@ -2147,78 +2149,78 @@
 msgid "too many commits to write graph"
 msgstr ""
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr ""
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr ""
@@ -2484,7 +2486,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr ""
@@ -2504,110 +2506,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr ""
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr ""
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr ""
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr ""
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr ""
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr ""
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr ""
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr ""
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr ""
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr ""
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr ""
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr ""
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr ""
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
+msgid "unable to mmap '%s'%s"
 msgstr ""
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr ""
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr ""
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr ""
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr ""
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr ""
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr ""
@@ -2776,7 +2778,7 @@
 msgid "unable to fork"
 msgstr ""
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr ""
 
@@ -2888,23 +2890,23 @@
 msgid "path name too long for external filter"
 msgstr ""
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr ""
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr ""
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr ""
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr ""
@@ -3029,36 +3031,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr ""
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr ""
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr ""
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr ""
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr ""
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr ""
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr ""
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3105,544 +3107,555 @@
 "%s"
 msgstr ""
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr ""
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr ""
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr ""
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr ""
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr ""
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr ""
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr ""
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr ""
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr ""
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr ""
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr ""
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr ""
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr ""
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr ""
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr ""
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr ""
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr ""
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr ""
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr ""
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr ""
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr ""
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr ""
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr ""
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr ""
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr ""
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr ""
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr ""
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr ""
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr ""
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr ""
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr ""
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr ""
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr ""
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr ""
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr ""
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr ""
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr ""
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr ""
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr ""
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr ""
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr ""
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr ""
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr ""
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr ""
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr ""
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr ""
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr ""
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr ""
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr ""
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr ""
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr ""
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr ""
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3653,7 +3666,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr ""
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr ""
 
@@ -3662,59 +3675,59 @@
 msgid "No such path '%s' in the diff"
 msgstr ""
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr ""
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr ""
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr ""
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr ""
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr ""
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr ""
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr ""
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr ""
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr ""
@@ -3724,11 +3737,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr ""
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr ""
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr ""
@@ -3738,7 +3751,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr ""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr ""
@@ -3903,7 +3916,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr ""
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr ""
 
@@ -3925,7 +3938,7 @@
 msgid "Server supports filter"
 msgstr ""
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr ""
 
@@ -3981,24 +3994,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr ""
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr ""
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr ""
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr ""
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr ""
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
@@ -4018,7 +4031,7 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr ""
 
 #: grep.c:531
@@ -4027,18 +4040,18 @@
 "with -P under PCRE v2"
 msgstr ""
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr ""
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr ""
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr ""
@@ -4255,7 +4268,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr ""
 
 #: list-objects-filter-options.c:124
@@ -4300,7 +4313,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr ""
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr ""
@@ -4340,39 +4353,39 @@
 msgid "bad action '%s' for '%s'"
 msgstr ""
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr ""
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr ""
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr ""
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr ""
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
 "%s\n"
 msgstr ""
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4383,42 +4396,42 @@
 "which will accept this suggestion.\n"
 msgstr ""
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
 "%s"
 msgstr ""
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr ""
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr ""
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr ""
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
 "implicit directory rename(s) putting the following path(s) there: %s."
 msgstr ""
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
 "implicit directory renames tried to put these paths there: %s"
 msgstr ""
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4426,47 +4439,47 @@
 "majority of the files."
 msgstr ""
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
 "renamed."
 msgstr ""
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
 "moving it to %s."
 msgstr ""
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
 "%s; moving it to %s."
 msgstr ""
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
 "in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
 "was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4474,67 +4487,67 @@
 "markers."
 msgstr ""
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr ""
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr ""
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
 "%s instead."
 msgstr ""
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
 "of them so each can be recorded somewhere."
 msgstr ""
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
 "of them so each can be recorded somewhere."
 msgstr ""
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr ""
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr ""
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr ""
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr ""
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
 "of %s left in tree."
 msgstr ""
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4544,192 +4557,192 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr ""
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "  %s"
 msgstr ""
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr ""
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr ""
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr ""
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr ""
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr ""
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ""
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr ""
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr ""
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr ""
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr ""
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr ""
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr ""
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree."
 msgstr ""
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree."
 msgstr ""
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr ""
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr ""
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr ""
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
 "\"->\"%s\" in \"%s\"%s"
 msgstr ""
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr ""
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -4737,85 +4750,85 @@
 "getting a majority of the files."
 msgstr ""
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
 ">%s in %s"
 msgstr ""
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr ""
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr ""
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr ""
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr ""
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr ""
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr ""
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr ""
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr ""
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr ""
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr ""
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr ""
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr ""
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr ""
@@ -4824,8 +4837,8 @@
 msgid "failed to read the cache"
 msgstr ""
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr ""
@@ -4899,106 +4912,114 @@
 msgid "failed to locate object %d in packfile"
 msgstr ""
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr ""
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr ""
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr ""
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr ""
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr ""
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr ""
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr ""
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr ""
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr ""
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr ""
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr ""
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr ""
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr ""
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr ""
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr ""
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr ""
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr ""
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr ""
 
@@ -5058,265 +5079,266 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr ""
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr ""
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr ""
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr ""
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr ""
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr ""
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr ""
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr ""
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr ""
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr ""
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 
-#: object-file.c:1031
-msgid "mmap failed"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
 msgstr ""
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr ""
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr ""
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr ""
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr ""
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr ""
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr ""
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr ""
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr ""
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr ""
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr ""
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr ""
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr ""
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr ""
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr ""
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr ""
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr ""
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr ""
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr ""
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr ""
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr ""
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr ""
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr ""
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr ""
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr ""
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr ""
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr ""
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr ""
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr ""
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr ""
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr ""
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr ""
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr ""
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr ""
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr ""
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5329,62 +5351,62 @@
 "running \"git config advice.objectNameWarning false\""
 msgstr ""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr ""
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr ""
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr ""
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
 "hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
 msgstr ""
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr ""
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
 "hint: Did you mean ':%d:%s'?"
 msgstr ""
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
 "hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr ""
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr ""
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr ""
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr ""
@@ -5399,27 +5421,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr ""
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr ""
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr ""
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr ""
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr ""
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr ""
@@ -5472,12 +5494,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr ""
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5678,7 +5705,7 @@
 msgstr ""
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
+msgid "unable to write response end packet"
 msgstr ""
 
 #: pkt-line.c:113
@@ -5738,19 +5765,19 @@
 msgid "unable to parse --pretty format"
 msgstr ""
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr ""
@@ -5771,7 +5798,7 @@
 msgid "could not read `log` output"
 msgstr ""
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr ""
@@ -5788,213 +5815,213 @@
 msgid "could not parse git header '%.*s'"
 msgstr ""
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr ""
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr ""
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr ""
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr ""
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr ""
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr ""
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr ""
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr ""
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr ""
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr ""
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr ""
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr ""
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr ""
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr ""
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr ""
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr ""
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr ""
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr ""
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr ""
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr ""
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr ""
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr ""
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr ""
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
+msgid "%s: unable to map index file%s"
 msgstr ""
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr ""
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr ""
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr ""
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr ""
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr ""
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr ""
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr ""
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr ""
@@ -6072,8 +6099,8 @@
 "\n"
 msgstr ""
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr ""
@@ -6109,7 +6136,7 @@
 msgid "could not read '%s'."
 msgstr ""
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr ""
 
@@ -6128,247 +6155,247 @@
 msgid "ahead %d, behind %d"
 msgstr ""
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr ""
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr ""
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr ""
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr ""
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr ""
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr ""
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr ""
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr ""
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr ""
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr ""
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr ""
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr ""
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr ""
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr ""
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr ""
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr ""
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr ""
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr ""
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr ""
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr ""
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr ""
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr ""
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr ""
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr ""
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr ""
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr ""
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr ""
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr ""
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr ""
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr ""
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr ""
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr ""
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr ""
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr ""
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr ""
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr ""
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr ""
@@ -6787,8 +6814,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr ""
@@ -6826,38 +6853,38 @@
 msgid "could not determine HEAD revision"
 msgstr ""
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr ""
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr ""
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr ""
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr ""
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr ""
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr ""
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -6890,25 +6917,25 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr ""
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr ""
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr ""
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr ""
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr ""
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr ""
 
@@ -6963,7 +6990,7 @@
 msgstr ""
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr ""
@@ -6974,7 +7001,7 @@
 msgstr ""
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr ""
@@ -7024,8 +7051,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr ""
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr ""
@@ -7138,7 +7165,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr ""
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr ""
 
@@ -7146,7 +7173,7 @@
 msgid "unable to parse commit author"
 msgstr ""
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr ""
 
@@ -7164,12 +7191,13 @@
 msgid "corrupt author: missing date information"
 msgstr ""
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr ""
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr ""
@@ -7221,7 +7249,7 @@
 msgid "need a HEAD to fixup"
 msgstr ""
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr ""
 
@@ -7362,7 +7390,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr ""
 
@@ -7393,7 +7421,7 @@
 msgid "could not lock HEAD"
 msgstr ""
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr ""
 
@@ -7405,7 +7433,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr ""
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr ""
@@ -7451,7 +7479,7 @@
 "try \"git %s --continue\""
 msgstr ""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr ""
 
@@ -7517,90 +7545,90 @@
 "\n"
 msgstr ""
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr ""
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr ""
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr ""
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr ""
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr ""
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr ""
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr ""
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr ""
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr ""
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr ""
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr ""
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr ""
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr ""
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr ""
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr ""
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -7608,29 +7636,29 @@
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr ""
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr ""
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr ""
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr ""
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -7643,108 +7671,108 @@
 "    git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr ""
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr ""
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr ""
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr ""
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr ""
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr ""
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr ""
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr ""
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr ""
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr ""
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr ""
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr ""
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr ""
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr ""
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr ""
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr ""
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr ""
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr ""
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr ""
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr ""
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr ""
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr ""
 
@@ -7785,126 +7813,130 @@
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr ""
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr ""
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] ""
+msgstr[1] ""
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr ""
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] ""
+msgstr[1] ""
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr ""
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr ""
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr ""
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr ""
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr ""
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr ""
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr ""
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr ""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr ""
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr ""
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr ""
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr ""
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr ""
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
 "The owner of files must always have read and write permissions."
 msgstr ""
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr ""
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr ""
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr ""
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr ""
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr ""
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr ""
@@ -7961,7 +7993,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8029,132 +8061,132 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr ""
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr ""
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr ""
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr ""
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr ""
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr ""
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr ""
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr ""
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
 "%s"
 msgstr ""
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr ""
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr ""
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr ""
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr ""
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr ""
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr ""
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr ""
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr ""
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr ""
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8162,11 +8194,11 @@
 "'%s'\n"
 msgstr ""
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr ""
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr ""
@@ -8203,7 +8235,7 @@
 msgid "could not read input file '%s'"
 msgstr ""
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr ""
 
@@ -8291,7 +8323,7 @@
 msgid "invalid remote service path"
 msgstr ""
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr ""
 
@@ -8300,7 +8332,7 @@
 msgid "can't connect to subservice %s"
 msgstr ""
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr ""
 
@@ -8431,53 +8463,53 @@
 msgid "could not read bundle '%s'"
 msgstr ""
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr ""
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr ""
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr ""
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr ""
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr ""
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr ""
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr ""
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr ""
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr ""
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr ""
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -8493,11 +8525,11 @@
 "\n"
 msgstr ""
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr ""
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr ""
 
@@ -8710,11 +8742,11 @@
 "colliding group is in the working tree:\n"
 msgstr ""
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr ""
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -8756,99 +8788,99 @@
 msgid "Fetching objects"
 msgstr ""
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr ""
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr ""
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr ""
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr ""
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr ""
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ""
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ""
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ""
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr ""
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr ""
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr ""
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr ""
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr ""
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr ""
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr ""
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr ""
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr ""
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr ""
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr ""
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr ""
 
@@ -8895,11 +8927,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr ""
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr ""
 
@@ -8997,28 +9029,28 @@
 msgid "untracked content, "
 msgstr ""
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr ""
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr ""
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr ""
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9026,255 +9058,259 @@
 "You can use '--no-ahead-behind' to avoid this.\n"
 msgstr ""
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr ""
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr ""
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr ""
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr ""
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr ""
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr ""
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr ""
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr ""
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr ""
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr ""
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr ""
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr ""
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr ""
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr ""
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr ""
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr ""
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr ""
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr ""
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr ""
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr ""
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr ""
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr ""
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr ""
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr ""
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr ""
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr ""
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr ""
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr ""
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9282,110 +9318,110 @@
 "new files yourself (see 'git help status')."
 msgstr ""
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr ""
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr ""
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr ""
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr ""
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr ""
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr ""
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr ""
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr ""
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr ""
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr ""
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr ""
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr ""
@@ -9422,7 +9458,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr ""
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr ""
 
@@ -9457,8 +9493,8 @@
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr ""
@@ -9467,7 +9503,7 @@
 msgid "interactive picking"
 msgstr ""
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr ""
 
@@ -9582,13 +9618,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr ""
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr ""
 
@@ -9604,128 +9640,128 @@
 "\"git config advice.addEmptyPathspec false\""
 msgstr ""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr ""
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr ""
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr ""
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr ""
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr ""
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr ""
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr ""
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr ""
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr ""
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr ""
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr ""
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr ""
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr ""
 
-#: builtin/am.c:1125
-#, c-format
-msgid "When you have resolved this problem, run \"%s --continue\"."
-msgstr ""
-
 #: builtin/am.c:1126
 #, c-format
-msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
+msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr ""
 
 #: builtin/am.c:1127
 #, c-format
+msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
+msgstr ""
+
+#: builtin/am.c:1128
+#, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr ""
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr ""
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr ""
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr ""
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
 msgstr ""
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr ""
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr ""
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr ""
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr ""
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr ""
 
@@ -9733,46 +9769,46 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr ""
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr ""
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr ""
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr ""
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr ""
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr ""
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
 "already introduced the same changes; you might want to skip this patch."
 msgstr ""
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -9780,106 +9816,106 @@
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr ""
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr ""
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr ""
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr ""
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr ""
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr ""
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr ""
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr ""
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr ""
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr ""
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr ""
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr ""
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr ""
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr ""
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr ""
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr ""
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr ""
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -9888,93 +9924,93 @@
 msgid "n"
 msgstr ""
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr ""
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr ""
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr ""
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr ""
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr ""
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr ""
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr ""
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr ""
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr ""
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr ""
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr ""
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr ""
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr ""
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
 msgstr ""
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr ""
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
 "Use \"git am --abort\" to remove it."
 msgstr ""
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr ""
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr ""
 
@@ -10063,69 +10099,69 @@
 msgid "could not write to file '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr ""
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr ""
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr ""
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10133,7 +10169,7 @@
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr ""
@@ -10142,74 +10178,74 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr ""
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr ""
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr ""
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr ""
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr ""
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr ""
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr ""
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr ""
 
@@ -10217,104 +10253,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr ""
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr ""
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr ""
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr ""
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr ""
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr ""
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr ""
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr ""
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr ""
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr ""
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr ""
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr ""
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ""
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr ""
 
@@ -10365,10 +10401,10 @@
 msgid "show work cost statistics"
 msgstr ""
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr ""
 
@@ -10416,7 +10452,7 @@
 msgid "ignore whitespace differences"
 msgstr ""
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr ""
 
@@ -10971,19 +11007,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr ""
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr ""
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 
@@ -10995,105 +11031,105 @@
 msgid "Need a repository to create a bundle."
 msgstr ""
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr ""
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr ""
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr ""
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr ""
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr ""
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
 msgstr ""
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 msgstr ""
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr ""
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr ""
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr ""
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr ""
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr ""
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr ""
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr ""
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr ""
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr ""
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr ""
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr ""
 
@@ -11121,8 +11157,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr ""
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr ""
 
@@ -11180,9 +11216,11 @@
 msgstr ""
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr ""
 
@@ -11276,118 +11314,118 @@
 msgid "Unable to add merge result for '%s'"
 msgstr ""
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr ""
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr ""
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr ""
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr ""
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr ""
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr ""
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr ""
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr ""
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr ""
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr ""
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr ""
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr ""
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11402,7 +11440,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11419,26 +11457,26 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr ""
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr ""
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr ""
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
 "Please use -- (and optionally --no-guess) to disambiguate"
 msgstr ""
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11450,280 +11488,281 @@
 "checkout.defaultRemote=origin in your config."
 msgstr ""
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr ""
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr ""
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr ""
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr ""
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr ""
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr ""
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr ""
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr ""
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr ""
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr ""
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr ""
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr ""
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr ""
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr ""
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr ""
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr ""
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr ""
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr ""
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr ""
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr ""
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr ""
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr ""
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr ""
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr ""
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr ""
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr ""
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr ""
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr ""
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr ""
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr ""
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr ""
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr ""
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr ""
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr ""
 
@@ -11757,7 +11796,7 @@
 msgid "could not lstat %s\n"
 msgstr ""
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -11766,7 +11805,7 @@
 "           - (empty) select nothing\n"
 msgstr ""
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -11779,33 +11818,33 @@
 "           - (empty) finish selecting\n"
 msgstr ""
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr ""
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr ""
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr ""
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr ""
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr ""
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -11816,64 +11855,64 @@
 "?                   - help for prompt selection"
 msgstr ""
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr ""
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr ""
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr ""
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr ""
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr ""
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr ""
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr ""
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr ""
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr ""
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
 msgstr ""
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr ""
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr ""
 
@@ -11889,7 +11928,7 @@
 msgid "don't create a checkout"
 msgstr ""
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr ""
 
@@ -11921,26 +11960,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr ""
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr ""
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr ""
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr ""
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr ""
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr ""
@@ -11957,7 +11996,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr ""
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr ""
@@ -11966,7 +12005,7 @@
 msgid "create a shallow clone of that depth"
 msgstr ""
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr ""
@@ -11984,8 +12023,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr ""
 
@@ -11997,11 +12036,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr ""
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr ""
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr ""
 
@@ -12014,22 +12053,22 @@
 msgstr ""
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr ""
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr ""
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr ""
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr ""
 
@@ -12123,7 +12162,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr ""
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr ""
 
@@ -12145,7 +12184,7 @@
 msgid "repository '%s' does not exist"
 msgstr ""
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr ""
@@ -12166,7 +12205,7 @@
 msgstr ""
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr ""
@@ -12221,12 +12260,16 @@
 msgid "--local is ignored"
 msgstr ""
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr ""
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr ""
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr ""
 
@@ -12280,7 +12323,7 @@
 msgstr ""
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr ""
 
@@ -12372,7 +12415,7 @@
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr ""
@@ -12400,13 +12443,13 @@
 msgid "id of a parent commit object"
 msgstr ""
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr ""
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr ""
 
@@ -12414,7 +12457,7 @@
 msgid "read commit log message from file"
 msgstr ""
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr ""
@@ -12544,7 +12587,7 @@
 "in the current commit message"
 msgstr ""
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr ""
@@ -12580,7 +12623,36 @@
 msgid "could not write commit template"
 msgstr ""
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -12589,7 +12661,7 @@
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -12598,384 +12670,369 @@
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr ""
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr ""
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr ""
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr ""
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr ""
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr ""
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr ""
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr ""
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr ""
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr ""
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr ""
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
 msgstr ""
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr ""
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr ""
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr ""
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr ""
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr ""
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr ""
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr ""
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr ""
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr ""
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr ""
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr ""
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr ""
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr ""
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr ""
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr ""
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr ""
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr ""
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr ""
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr ""
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr ""
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr ""
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr ""
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr ""
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr ""
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr ""
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr ""
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr ""
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr ""
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr ""
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr ""
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr ""
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr ""
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr ""
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr ""
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr ""
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr ""
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr ""
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr ""
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr ""
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr ""
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr ""
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr ""
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr ""
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr ""
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr ""
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr ""
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr ""
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr ""
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr ""
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr ""
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr ""
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr ""
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -13580,65 +13637,65 @@
 msgid "you may want to cleanup or recover these."
 msgstr ""
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr ""
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr ""
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr ""
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr ""
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr ""
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr ""
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr ""
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr ""
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr ""
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr ""
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr ""
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr ""
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr ""
 
@@ -13726,7 +13783,7 @@
 msgid "skip output of blob data"
 msgstr ""
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr ""
 
@@ -14033,7 +14090,7 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
+msgid "rejected %s because shallow roots are not allowed to be updated"
 msgstr ""
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
@@ -14128,58 +14185,62 @@
 msgid "You need to specify a tag name."
 msgstr ""
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr ""
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr ""
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr ""
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr ""
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr ""
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr ""
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr ""
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr ""
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr ""
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 
@@ -14272,19 +14333,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr ""
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr ""
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr ""
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr ""
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr ""
 
@@ -14300,227 +14361,227 @@
 msgid "warning in %s %s: %s"
 msgstr ""
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr ""
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
 "              to %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr ""
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr ""
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr ""
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr ""
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr ""
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr ""
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr ""
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr ""
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr ""
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr ""
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr ""
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr ""
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr ""
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr ""
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr ""
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr ""
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr ""
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr ""
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr ""
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr ""
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr ""
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr ""
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr ""
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr ""
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr ""
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr ""
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr ""
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr ""
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr ""
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr ""
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr ""
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr ""
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr ""
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr ""
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr ""
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr ""
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr ""
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr ""
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr ""
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr ""
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr ""
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr ""
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr ""
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr ""
@@ -14792,8 +14853,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr ""
@@ -14808,242 +14869,242 @@
 msgid "unable to grep from object of type %s"
 msgstr ""
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr ""
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr ""
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr ""
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr ""
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr ""
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr ""
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr ""
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr ""
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr ""
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr ""
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr ""
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr ""
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr ""
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr ""
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr ""
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr ""
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr ""
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr ""
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr ""
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr ""
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr ""
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr ""
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr ""
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr ""
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr ""
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr ""
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr ""
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr ""
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr ""
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr ""
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr ""
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr ""
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr ""
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr ""
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr ""
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr ""
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr ""
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr ""
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr ""
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr ""
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr ""
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr ""
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr ""
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr ""
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr ""
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr ""
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr ""
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr ""
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr ""
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr ""
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr ""
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr ""
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr ""
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr ""
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr ""
 
@@ -15160,30 +15221,30 @@
 msgid "'%s': unknown man viewer."
 msgstr ""
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr ""
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr ""
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr ""
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr ""
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr ""
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr ""
 
@@ -15221,7 +15282,7 @@
 msgid "used more bytes than were available"
 msgstr ""
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr ""
 
@@ -15248,238 +15309,238 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr ""
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr ""
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr ""
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr ""
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr ""
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr ""
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr ""
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr ""
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr ""
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr ""
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr ""
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr ""
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr ""
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr ""
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr ""
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr ""
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr ""
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr ""
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr ""
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr ""
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr ""
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr ""
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr ""
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr ""
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr ""
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr ""
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr ""
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr ""
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr ""
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr ""
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr ""
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr ""
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr ""
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr ""
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr ""
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr ""
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr ""
 
@@ -15523,108 +15584,108 @@
 msgid "not copying templates from '%s': %s"
 msgstr ""
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr ""
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr ""
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr ""
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr ""
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr ""
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr ""
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
 msgstr ""
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr ""
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr ""
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr ""
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr ""
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr ""
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr ""
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr ""
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr ""
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr ""
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr ""
 
@@ -15729,373 +15790,373 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr ""
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr ""
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr ""
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr ""
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr ""
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr ""
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr ""
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr ""
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr ""
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr ""
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr ""
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr ""
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr ""
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr ""
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr ""
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr ""
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
 "Or you could specify base commit by --base=<base-commit-id> manually"
 msgstr ""
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr ""
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr ""
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr ""
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr ""
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr ""
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr ""
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr ""
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr ""
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr ""
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr ""
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr ""
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr ""
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr ""
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr ""
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr ""
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr ""
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr ""
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr ""
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr ""
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr ""
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr ""
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr ""
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr ""
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr ""
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr ""
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr ""
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr ""
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr ""
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr ""
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr ""
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr ""
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr ""
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr ""
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr ""
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr ""
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr ""
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr ""
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr ""
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr ""
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr ""
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr ""
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr ""
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr ""
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr ""
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr ""
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr ""
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr ""
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr ""
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr ""
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr ""
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr ""
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr ""
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr ""
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16455,14 +16516,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr ""
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr ""
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr ""
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr ""
@@ -16604,212 +16657,212 @@
 msgid "'%s' does not point to a commit"
 msgstr ""
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr ""
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr ""
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr ""
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr ""
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr ""
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
 "\n"
 msgstr ""
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr ""
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr ""
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr ""
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr ""
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr ""
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr ""
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr ""
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr ""
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr ""
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr ""
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr ""
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr ""
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr ""
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr ""
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr ""
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr ""
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr ""
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr ""
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr ""
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr ""
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
 msgstr ""
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -16905,7 +16958,7 @@
 "larger than this size"
 msgstr ""
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr ""
@@ -17426,7 +17479,7 @@
 msgid "read object names from the standard input"
 msgstr ""
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr ""
 
@@ -17442,404 +17495,404 @@
 msgid "use notes from <notes-ref>"
 msgstr ""
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr ""
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
 "pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr ""
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr ""
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr ""
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
 "hash> <uri>' (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr ""
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr ""
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr ""
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr ""
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr ""
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr ""
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr ""
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr ""
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr ""
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr ""
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr ""
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr ""
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr ""
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr ""
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr ""
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr ""
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr ""
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr ""
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr ""
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr ""
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr ""
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18029,19 +18082,19 @@
 "invocation.\n"
 msgstr ""
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr ""
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr ""
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18049,7 +18102,7 @@
 "commit %s."
 msgstr ""
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18060,15 +18113,15 @@
 "to recover."
 msgstr ""
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr ""
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr ""
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 
@@ -18115,7 +18168,7 @@
 "    git push %s HEAD:<name-of-remote-branch>\n"
 msgstr ""
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -18124,12 +18177,17 @@
 "    git push --set-upstream %s %s\n"
 msgstr ""
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -18137,12 +18195,7 @@
 "to update which remote branch."
 msgstr ""
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -18150,7 +18203,7 @@
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -18158,7 +18211,7 @@
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -18167,18 +18220,18 @@
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
 "without using the '--force' option.\n"
 msgstr ""
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -18186,103 +18239,103 @@
 "before forcing an update.\n"
 msgstr ""
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr ""
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr ""
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr ""
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr ""
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr ""
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr ""
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr ""
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr ""
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr ""
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr ""
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr ""
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr ""
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr ""
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr ""
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr ""
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr ""
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr ""
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr ""
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr ""
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr ""
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr ""
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr ""
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr ""
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -18295,27 +18348,27 @@
 "    git push <name>\n"
 msgstr ""
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr ""
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr ""
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr ""
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr ""
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr ""
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr ""
 
@@ -18861,7 +18914,7 @@
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr ""
 
@@ -18957,8 +19010,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr ""
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr ""
@@ -19026,7 +19079,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr ""
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -19043,7 +19096,7 @@
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -19055,11 +19108,11 @@
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr ""
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr ""
 
@@ -20001,15 +20054,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr ""
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr ""
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr ""
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr ""
@@ -20154,19 +20207,19 @@
 msgid "Could not write new index file."
 msgstr ""
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr ""
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr ""
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr ""
 
@@ -20186,6 +20239,18 @@
 msgid "output in stuck long form"
 msgstr ""
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr ""
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr ""
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr ""
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -20195,6 +20260,50 @@
 "Run \"git rev-parse --parseopt -h\" for more information on the first usage."
 msgstr ""
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr ""
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr ""
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr ""
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr ""
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr ""
@@ -20663,37 +20772,37 @@
 msgid "failed to open '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr ""
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr ""
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr ""
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr ""
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr ""
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr ""
 
@@ -20717,10 +20826,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr ""
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr ""
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -20858,93 +20963,93 @@
 msgid "only show untracked files in the stash"
 msgstr ""
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr ""
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr ""
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr ""
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr ""
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr ""
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr ""
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr ""
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr ""
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr ""
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr ""
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr ""
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr ""
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr ""
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr ""
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr ""
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr ""
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr ""
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr ""
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr ""
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr ""
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -20966,47 +21071,48 @@
 msgid "prepend comment character and space to each line"
 msgstr ""
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr ""
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -21014,220 +21120,220 @@
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr ""
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr ""
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr ""
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr ""
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr ""
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr ""
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr ""
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr ""
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr ""
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr ""
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
 msgstr ""
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr ""
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -21235,231 +21341,282 @@
 "'--reference-if-able' instead of '--reference'."
 msgstr ""
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr ""
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr ""
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr ""
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr ""
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr ""
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr ""
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr ""
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr ""
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr ""
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
 "<url> --path <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr ""
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr ""
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr ""
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr ""
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr ""
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr ""
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr ""
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr ""
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr ""
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr ""
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr ""
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr ""
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr ""
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr ""
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
 "the superproject is not on any branch"
 msgstr ""
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr ""
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr ""
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr ""
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr ""
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr ""
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr ""
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr ""
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr ""
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr ""
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr ""
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr ""
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr ""
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr ""
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr ""
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr ""
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr ""
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr ""
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr ""
@@ -22051,7 +22208,7 @@
 msgid "git worktree unlock <path>"
 msgstr ""
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr ""
@@ -22061,59 +22218,63 @@
 msgid "Removing %s/%s: %s"
 msgstr ""
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr ""
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr ""
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr ""
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
 "use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
 "use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr ""
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr ""
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr ""
@@ -22138,147 +22299,155 @@
 msgid "keep the new working tree locked"
 msgstr ""
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr ""
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr ""
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr ""
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr ""
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr ""
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr ""
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr ""
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr ""
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr ""
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr ""
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr ""
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr ""
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr ""
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr ""
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr ""
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr ""
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr ""
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr ""
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr ""
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr ""
@@ -22601,7 +22770,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr ""
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22648,95 +22817,95 @@
 msgid "redirecting to %s"
 msgstr ""
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr ""
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr ""
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr ""
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr ""
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr ""
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr ""
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr ""
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr ""
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr ""
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr ""
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
@@ -23571,124 +23740,88 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr ""
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr ""
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr ""
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr ""
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr ""
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr ""
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr ""
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr ""
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
@@ -24279,86 +24412,86 @@
 msgid "invalid argument %s, expecting --"
 msgstr ""
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr ""
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr ""
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr ""
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr ""
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr ""
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr ""
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
 "Set sendemail.forbidSendmailVariables to false to disable this check.\n"
 msgstr ""
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr ""
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr ""
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr ""
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -24368,29 +24501,29 @@
 "    * Giving --format-patch option if you mean a range.\n"
 msgstr ""
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr ""
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
 "\n"
 msgstr ""
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr ""
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr ""
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -24399,37 +24532,37 @@
 "Clear the body content if you don't wish to send a summary.\n"
 msgstr ""
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr ""
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr ""
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr ""
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr ""
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr ""
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr ""
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -24438,20 +24571,20 @@
 "want to send.\n"
 msgstr ""
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr ""
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr ""
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr ""
@@ -24459,16 +24592,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr ""
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr ""
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -24485,112 +24618,112 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr ""
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr ""
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr ""
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr ""
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr ""
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr ""
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr ""
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr ""
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr ""
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr ""
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr ""
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr ""
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -24598,25 +24731,25 @@
 "warning: no patches were sent\n"
 msgstr ""
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr ""
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
 "warning: no patches were sent\n"
 msgstr ""
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr ""
diff --git a/po/id.po b/po/id.po
index 50e2e1d..7db807a 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-17 18:32+0700\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 09:35+0700\n"
 "Last-Translator: Bagas Sanjaya <bagasdotme@gmail.com>\n"
 "Language-Team: Indonesian\n"
 "Language: id\n"
@@ -22,8 +22,8 @@
 msgid "Huh (%s)?"
 msgstr "Huh (%s)"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "tidak dapat membaca indeks"
@@ -52,7 +52,7 @@
 msgid "could not stage '%s'"
 msgstr "tidak dapat menggelar '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "tidak dapat menulis indeks"
 
@@ -110,12 +110,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "mengabaikan tak tergabung: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Hanya berkas biner yang berubah.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Tidak ada perubahan.\n"
@@ -192,11 +192,11 @@
 msgid "(empty) select nothing"
 msgstr "(empty) tidak pilih apapun"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Perintah ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Apa sekarang"
 
@@ -208,12 +208,13 @@
 msgid "unstaged"
 msgstr "tak tergelar"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "jalur"
@@ -222,7 +223,7 @@
 msgid "could not refresh index"
 msgstr "tidak dapat menyegarkan indeks"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Sampai jumpa.\n"
@@ -523,34 +524,34 @@
 "a - terapkan hunk ini dan semua hunk selanjutnya dalam berkas\n"
 "d - jangan terapkan hunk ini atau hunk selanjutnya dalam berkas\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "tidak dapat menguraikan kepala hunk '%.*s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "tidak dapat menguraikan kepala hunk berwarna '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "tidak dapat menguraikan diff"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "tidak dapat menguraikan diff berwarna"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "gagal menjalankan '%s'"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "keluaran tak cocok dari interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -558,7 +559,7 @@
 "Saringan Anda haru menjaga korespondensi satu-satu antara masukannya\n"
 "dan baris keluaran."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -567,7 +568,7 @@
 "baris konteks #%d diharapkan dalam\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -580,11 +581,11 @@
 "tidak berakhir dengan:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Mode sunting hunk manual -- lihat dibawah untuk panduan cepat.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -598,7 +599,7 @@
 "Baris yang diawali dengan %c akan dihapus.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -608,11 +609,11 @@
 "untuk menyunting lagi. Jika semua baris dalam hunk dihapus, suntingan\n"
 "dibatalkan dan hunk tetap tidak berubah.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "tidak dapat menguraikan kepala hunk"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' gagal"
 
@@ -628,26 +629,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Hunk Anda tak diterapkan. Sunting lagi (bilang \"n\" untuk \"tidak\" buang!) "
 "[y/n]?"
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Hunk yang dipilih tidak diterapkan ke indeks!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Tetap terapkan itu ke pohon kerja? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Tidak ada yang diterapkan.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -669,69 +670,69 @@
 "e - sunting hunk saat ini secara manual\n"
 "? - cetak bantuan\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Tidak ada hunk sebelumnya"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Tidak ada hunk selanjutnya"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Tidak ada hunk lainnya untuk dikunjungi"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "pergi ke hunk yang mana (<ret> untuk lihat lebih)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "pergi ke hunk yang mana?"
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Angka tidak valid: '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Maaf, hanya %d hunk yang tersedia."
 msgstr[1] "Maaf, hanya %d hunk yang tersedia."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Tidak ada hunk lainnya untuk dicari"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "cari untuk regex? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "regexp pencarian %s cacat: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Tidak ada hunk yang cocok dengan pola yang diberikan"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Maaf, tidak dapat membelah hunk ini"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Terbelah ke dalam %d hunk."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Maaf, tidak dapat menyunting hunk ini"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' gagal"
 
@@ -782,7 +783,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr ""
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr ""
 
@@ -1137,8 +1138,8 @@
 msgid "%s has type %o, expected %o"
 msgstr ""
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr ""
@@ -1228,7 +1229,7 @@
 msgid "unable to add cache entry for %s"
 msgstr ""
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr ""
@@ -1318,7 +1319,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr ""
 
@@ -1330,7 +1331,7 @@
 msgid "apply changes matching the given path"
 msgstr ""
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr ""
 
@@ -1394,9 +1395,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr ""
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr ""
@@ -1426,8 +1427,8 @@
 msgstr ""
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr ""
 
@@ -1439,7 +1440,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr ""
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr ""
 
@@ -1481,7 +1482,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr ""
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr ""
@@ -1516,13 +1517,13 @@
 msgstr "Tidak dapat membaca %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "tidak dapat membaca '%s'"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "spek jalur '%s' tidak cocok dengan berkas apapun"
@@ -1564,7 +1565,7 @@
 msgid "archive format"
 msgstr "format arsip"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "prefiks"
 
@@ -1575,7 +1576,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1606,7 +1607,8 @@
 msgstr "daftar format arsip yang didukung"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "repositori"
 
@@ -1614,7 +1616,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "ambil arsip dari repositori remote <repo>"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "perintah"
@@ -1668,17 +1670,17 @@
 #: bisect.c:489
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
-msgstr ""
+msgstr "Kontent terkutip jelek dalam berkas '%s': %s"
 
 #: bisect.c:699
 #, c-format
 msgid "We cannot bisect more!\n"
-msgstr ""
+msgstr "Kami tidak dapat membagi dua lagi!\n"
 
 #: bisect.c:766
 #, c-format
 msgid "Not a valid commit name %s"
-msgstr ""
+msgstr "Bukan sebuah nama komit yang valid %s"
 
 #: bisect.c:791
 #, c-format
@@ -1686,6 +1688,8 @@
 "The merge base %s is bad.\n"
 "This means the bug has been fixed between %s and [%s].\n"
 msgstr ""
+"Dasar penggabungan %s jelek.\n"
+"Ini berarti bug telah diperbaiki antara %s dan [%s].\n"
 
 #: bisect.c:796
 #, c-format
@@ -1693,6 +1697,8 @@
 "The merge base %s is new.\n"
 "The property has changed between %s and [%s].\n"
 msgstr ""
+"Dasar penggabungan %s baru.\n"
+"Properti telah berubah antara %s dan [%s].\n"
 
 #: bisect.c:801
 #, c-format
@@ -1700,6 +1706,8 @@
 "The merge base %s is %s.\n"
 "This means the first '%s' commit is between %s and [%s].\n"
 msgstr ""
+"Dasar penggabungan %s adalah %s.\n"
+"Ini berarti komit '%s' pertama adalah di antara %s dan [%s].\n"
 
 #: bisect.c:809
 #, c-format
@@ -1708,6 +1716,9 @@
 "git bisect cannot work properly in this case.\n"
 "Maybe you mistook %s and %s revs?\n"
 msgstr ""
+"Beberapa revisi %s bukan nenek moyang dari revisi %s.\n"
+"git bisect tidak dapat bekerja dengan benar pada kasus ini.\n"
+"Mungkin Anda salah mengira revisi %s dan %s?\n"
 
 #: bisect.c:822
 #, c-format
@@ -1716,35 +1727,38 @@
 "So we cannot be sure the first %s commit is between %s and %s.\n"
 "We continue anyway."
 msgstr ""
+"dasar penggabungan antara %s dan [%s] harus dilewatkan.\n"
+"Jadi kami tidak dapat yakin komit %s pertama di antara %s dan %s.\n"
+"Kami tetap lanjutkan."
 
 #: bisect.c:861
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
-msgstr ""
+msgstr "Membagi dua: dasar penggabungan harus diuji\n"
 
 #: bisect.c:911
 #, c-format
 msgid "a %s revision is needed"
-msgstr ""
+msgstr "sebuah revisi %s diperlukan"
 
 #: bisect.c:941 builtin/notes.c:177 builtin/tag.c:298
 #, c-format
 msgid "could not create file '%s'"
-msgstr ""
+msgstr "tidak dapat membuat berkas '%s'"
 
 #: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
-msgstr ""
+msgstr "tidak dapat membaca berkas '%s'"
 
 #: bisect.c:1027
 msgid "reading bisect refs failed"
-msgstr ""
+msgstr "gagal membaca berkas referensi bagi dua"
 
 #: bisect.c:1057
 #, c-format
 msgid "%s was both %s and %s\n"
-msgstr ""
+msgstr "%s sama-sama %s dan %s\n"
 
 #: bisect.c:1066
 #, c-format
@@ -1752,13 +1766,15 @@
 "No testable commit found.\n"
 "Maybe you started with bad path arguments?\n"
 msgstr ""
+"Tidak ada komit yang bisa diuji ditemukan.\n"
+"Mungkin Anda mulai dengan argumen jalur jelek?\n"
 
 #: bisect.c:1095
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "(kira-kira %d langkah)"
+msgstr[1] "(kira-kira %d langkah)"
 
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
@@ -1767,26 +1783,27 @@
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Membagi dua: %d revisi tersisa untuk diuji setelah ini %s\n"
+msgstr[1] "Membagi dua: %d revisi tersisa untuk diuji setelah ini %s\n"
 
 #: blame.c:2776
 msgid "--contents and --reverse do not blend well."
-msgstr ""
+msgstr "--contents dan --reverse tidak dapat dipadu dengan baik."
 
 #: blame.c:2790
 msgid "cannot use --contents with final commit object name"
-msgstr ""
+msgstr "tidak dapat menggunakan --contents dengan nama objek komit final"
 
 #: blame.c:2811
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
+"--reverse dan --first-parent bersama-sama butuh komit terbaru yang disebutkan"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "persiapan jalan revisi gagal"
 
@@ -1794,16 +1811,18 @@
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
+"--reverse --first-parent bersama-sama butuh rentang bersama rantai induk "
+"pertama"
 
 #: blame.c:2849
 #, c-format
 msgid "no such path %s in %s"
-msgstr ""
+msgstr "tidak ada jalur seperti %s di %s"
 
 #: blame.c:2860
 #, c-format
 msgid "cannot read blob %s for path %s"
-msgstr ""
+msgstr "tidak dapat membaca blob %s untuk jalur %s"
 
 #: branch.c:53
 #, c-format
@@ -1929,118 +1948,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr ""
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr ""
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr ""
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr ""
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr ""
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr ""
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr ""
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr ""
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr ""
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr ""
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr ""
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr ""
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr ""
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr ""
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr ""
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr ""
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr ""
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr ""
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr ""
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr ""
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr ""
@@ -2108,12 +2127,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr ""
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr ""
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr ""
@@ -2175,7 +2194,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr ""
@@ -2224,78 +2243,78 @@
 msgid "too many commits to write graph"
 msgstr ""
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr ""
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr ""
@@ -2569,7 +2588,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "harus salah satu dari nothing, matching, simple, upstream atau current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "level kompresi pak jelek %d"
@@ -2589,110 +2608,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "tidak dapat menguraikan blob konfigurasi '%s'"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "gagal menguraikan %s"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "gagal menguraikan konfigurasi baris perintah"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "error tidak diketahui ketika membaca berkas konfigurasi"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s tidak valid: '%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "nilai splitIndex.maxPercentChange '%d' harusnya diantara 0 dan 100"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "tidak dapat menguraikan '%s' dari konfigurasi baris perintah"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "variabel konfigurasi '%s' jelek dalam berkas '%s' pada baris %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "nama bagian '%s' tidak valid"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s punya banyak nilai"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "gagal menulis berkas konfigurasi baru %s"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "tidak dapat mengunci berkas konfigurasi %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "membuka %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "pola tidak valid: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "berkas konfigurasi %s tidak valid"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat pada %s gagal"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "tidak dapat me-mmap '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "tidak dapat me-mmap '%s'%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod pada %s gagal"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "tidak dapat menulis berkas konfigurasi %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "tidak dapat menyetel '%s' ke '%s'"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "tidak dapat mem-batal setel '%s'"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "nama bagian tidak valid: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "nilai hilang untuk '%s'"
@@ -2861,7 +2880,7 @@
 msgid "unable to fork"
 msgstr ""
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr ""
 
@@ -2973,23 +2992,23 @@
 msgid "path name too long for external filter"
 msgstr ""
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr ""
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr ""
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr ""
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr ""
@@ -3114,36 +3133,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr ""
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr ""
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr ""
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr ""
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr ""
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr ""
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr ""
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3199,35 +3218,49 @@
 "Ditemukan error dalam variable konfigurasi 'diff.dirstat':\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "diff eksternal mati, berhenti pada %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check dan -s saling eksklusif"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S dan --find-object saling eksklusif"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G dan --pickaxe-regex saling eksklusif, gunakan --pickaxe-regex dengan -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all dan --find-object saling eksklusif, gunakan --pickaxe-all "
+"dengan -G dan -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow butuh tepatnya satu spek jalur"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "nilai --stat tidak valid: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s harap nilai numerik"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3236,42 +3269,42 @@
 "Gagal menguraikan parameter opsi --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "kelas perubahan '%c' tidak dikenal dalam --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "nilai tidak dikenal setelah ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "tidak dapat menguraikan '%s'"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s butuh bentuk <n>/<m>"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s butuh sebuah karakter, dapat '%s'"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "argumen --color-moved jelek: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "mode tidak valid '%s' dalam --color-moved-ws"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3279,162 +3312,162 @@
 "opsi diff-algorithm terima \"myers\", \"minimal\", \"patience\" dan "
 "\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argumen tidak valid ke %s"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "regex tidak valid diberikan ke -I: '%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "gagal menguraikan parameter opsi --submodule: '%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "argumen --word-diff jelek: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Opsi format keluaran diff"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "buat tambalan"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "sembunyikan keluaran diff"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "buat diff dengan <n> baris konteks"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "buat diff dalam format mentah"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "sinonim untuk '-p --raw'"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "sinonim untuk '-p --stat'"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "--stat yang ramah mesin"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "keluarkan hanya baris terakhir --stat"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<parameter 1,parameter 2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "keluarkan distribusi jumlah perubahan relatif untuk setiap subdirektori"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinonim untuk --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "sinonim untuk --dirstat=files,param1,param2..."
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "peringatkan bila perubahan memasukkan penanda konflik atau kesalahan spasi"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "ringkasan singkat seperti pembuatan, penggantian nama dan perubahan mode"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "perlihatkan hanya nama berkas yang berubah"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "perlihatkan hanya nama dan status berkas yang berubah"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<lebar>[,<nama lebar>[,<hitungan>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "buat diffstat"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<lebar>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "buat diffstat dengan lebar yang diberikan"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "buat diffstat dengan nama lebar yang diberikan"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "buat diffstat dengan lebar grafik yang diberikan"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<hitungan>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "buat diffstat dengan baris yang terbatas"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "buat ringkasan singkat dalam diffstat"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "keluarkan diff biner yang dapat diterapkan"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "perlihatkan objek pra- dan pasca-citra penuh pada baris \"index\""
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "perlihatkan diff berwarna"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<tipe>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 "soroti kesalahan spasi dalam baris 'context', 'old' atau 'new' dalam diff"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3442,91 +3475,91 @@
 "jangan tengkar jalur nama dan gunakan NUL sebagai pembatas bidang keluaran "
 "pada --raw atau --numstat"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<prefiks>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "perlihatkan prefiks sumber yang diberikan daripada \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "perlihatkan prefiks tujuan daripada \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "tambah depan prefiks tambahan pada setiap baris keluaran"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "jangan perlihatkan prefiks sumber atau tujuan apapun"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "perlihatkan konteks diantara hunk diff hingga jumlah baris yang disebutkan"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<karakter>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "sebutkan karakter yang menandai baris baru daripada '+'"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "sebutkan karakter yang menandai baris lama daripada '-'"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "sebutkan karakter yang menandai konteks daripada ' '"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Opsi penamaan ulang diff"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "pisahkan perubahan penulisan ulang penuh kedalam pasangan penghapusan dan "
 "pembuatan"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "deteksi penamaan ulang"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "lewati pracitra untuk penghapusan"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "deteksi penyalinan"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr ""
 "gunakan berkas tak termodifikasi sebagai sumber untuk menemukan salinan"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "nonaktifkan deteksi penamaan ulang"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "gunakan blob kosong sebagai sumber penamaan ulang"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "lanjutkan daftarkan riwayat berkas di luar penamaan ulang"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3534,232 +3567,231 @@
 "cegah pendeteksian penamaan ulang/penyalinan jika jumlah target penamaan "
 "ulang/penyalinan melebihi batas yang diberikan"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Opsi algoritma diff"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "hasilkan diff yang paling kecil yang dimungkinkan"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "abaikan spasi saat membandingkan baris"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "abaikan perubahan dalam jumlah spasi"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "abaikan perubahan spasi pada EOL"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "abaikan kembalian-kurir pada akhir baris"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "abaikan perubahan yang semua baris kosong"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "abaikan perubahan yang semua baris cocok dengan <regex>"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heuristik untuk geser perbatasan hunk diff untuk pembacaan yang mudah"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "buat diff menggunakan algoritma \"diff sabar\""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "buat diff menggunakan algoritma \"diff histogram\""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<algoritma>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "pilih algoritma diff"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<teks>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "buat diff menggunakan algoritma \"diff terlabuh\""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<mode>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "perlihatkan diff kata, menggunakan <mode> untuk batasi kata yang berubah"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "gunakan <regex> untuk menentukan apa itu kata"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "sama dengan --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "baris kode yang berpindah diwarnai berbeda"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "bagaimana spasi diabaikan di --color-moved"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Opsi diff yang lainnya"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "ketika dijalankan dari subdirektori, kecualikan perubahan diluar dan "
 "perlihatkan jalur relatif"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "perlakukan semua berkas sebagai teks"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "tukar dua masukkan, balikkan diff"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "keluar dengan 1 jika ada perbedaan, selain itu 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "nonaktifkan semua keluaran program"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "perbolehkan pembantu diff eksternal untuk dieksekusi"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "jalankan saringan konversi teks eksternal ketika membandingkan berkas biner"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<kapan>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "abaikan perubahan submodul dalam pembuatan diff"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "sebutkan bagaimana perbedaan dalam submodul diperlihatkan"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "sembunyikan entri 'git add -N' dari indeks"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "perlakukan entri 'git add -N' sebagai nyata dalam indeks"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<untai>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "cari perbedaan yang mengubah jumlah kemunculan untai yang disebutkan"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "cari perbedaan yang mengubah jumlah kemunculan regex yang disebutkan"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "perlihatkan semua perubahan dalam set perubahan dengan -S atau -G"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "perlakukan <string> di -S sebagai ekspresi reguler POSIX yang diperluas"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "kontrol urutan berkas yang muncul dalam keluaran"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<jalur>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "perlihatkan perubahan dalam jalur yang disebutkan terlebih dahulu"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "lewati keluaran ke jalur yang disebutkan"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<id objek>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "cari perubahan yang mengubah jumlah kemunculan objek yang disebutkan"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "pilih berkas oleh tipe diff"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<berkas>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Keluarkan ke berkas yang disebutkan"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
-msgstr ""
-"deteksi penamaan ulang tak eksak dilewati karena terlalu banyak berkas."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr "deteksi penamaan ulang lengkap dilewati karena terlalu banyak berkas."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "hanya ditemukan salinan dari jalur yang berubah karena terlalu banyak berkas."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3772,7 +3804,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr ""
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr ""
 
@@ -3781,59 +3813,59 @@
 msgid "No such path '%s' in the diff"
 msgstr ""
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr ""
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr ""
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr ""
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr ""
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr ""
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr ""
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr ""
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr ""
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr ""
@@ -3843,11 +3875,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr ""
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr ""
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr ""
@@ -3857,7 +3889,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr ""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr ""
@@ -4022,7 +4054,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr ""
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr ""
 
@@ -4044,7 +4076,7 @@
 msgid "Server supports filter"
 msgstr ""
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr ""
 
@@ -4100,24 +4132,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr ""
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr ""
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr ""
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr ""
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr ""
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
@@ -4137,7 +4169,7 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr ""
 
 #: grep.c:531
@@ -4145,108 +4177,110 @@
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
 msgstr ""
+"pola yang diberikan berisi bita NULL (via -f <berkas>). Hal ini hanya "
+"didukung dengan -P di bawah PCRE v2"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
-msgstr ""
+msgstr "'%s': tidak dapat membaca %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
-msgstr ""
+msgstr "gagal men-stat '%s'"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
-msgstr ""
+msgstr "'%s': baca pendek"
 
 #: help.c:23
 msgid "start a working area (see also: git help tutorial)"
-msgstr ""
+msgstr "mulai area kerja (lihat pula: git help tutorial)"
 
 #: help.c:24
 msgid "work on the current change (see also: git help everyday)"
-msgstr ""
+msgstr "bekerja pada perubahan saat ini (lihat pula: git help everyday)"
 
 #: help.c:25
 msgid "examine the history and state (see also: git help revisions)"
-msgstr ""
+msgstr "periksa riwayat dan keadaan (lihat pula: git help revisions)"
 
 #: help.c:26
 msgid "grow, mark and tweak your common history"
-msgstr ""
+msgstr "tumbuhkan, tandai, dan cubit riwayat umum Anda"
 
 #: help.c:27
 msgid "collaborate (see also: git help workflows)"
-msgstr ""
+msgstr "kolaborasi (lihat pula: git help workflows)"
 
 #: help.c:31
 msgid "Main Porcelain Commands"
-msgstr ""
+msgstr "Perintah Porselen Utama"
 
 #: help.c:32
 msgid "Ancillary Commands / Manipulators"
-msgstr ""
+msgstr "Perintah Tambahan / Peubah"
 
 #: help.c:33
 msgid "Ancillary Commands / Interrogators"
-msgstr ""
+msgstr "Perintah Tambahan / Pemeriksa"
 
 #: help.c:34
 msgid "Interacting with Others"
-msgstr ""
+msgstr "Berinteraksi dengan yang Lain"
 
 #: help.c:35
 msgid "Low-level Commands / Manipulators"
-msgstr ""
+msgstr "Perintah Tingkat Rendah / Peubah"
 
 #: help.c:36
 msgid "Low-level Commands / Interrogators"
-msgstr ""
+msgstr "Perintah Tingkat Rendah / Pemeriksa"
 
 #: help.c:37
 msgid "Low-level Commands / Syncing Repositories"
-msgstr ""
+msgstr "Perintah Tingkat Rendah / Sinkronisasi Repositori"
 
 #: help.c:38
 msgid "Low-level Commands / Internal Helpers"
-msgstr ""
+msgstr "Perintah Tingak Rendah / Pembantu Internal"
 
 #: help.c:300
 #, c-format
 msgid "available git commands in '%s'"
-msgstr ""
+msgstr "perintah git yang tersedia di '%s'"
 
 #: help.c:307
 msgid "git commands available from elsewhere on your $PATH"
-msgstr ""
+msgstr "perintah git yang tersedia dari tempat lain pada $PATH Anda"
 
 #: help.c:316
 msgid "These are common Git commands used in various situations:"
-msgstr ""
+msgstr "Berikut ini perintah Git umum yang digunakan dalam beragam situasi:"
 
 #: help.c:365 git.c:100
 #, c-format
 msgid "unsupported command listing type '%s'"
-msgstr ""
+msgstr "tipe daftar perintah '%s' tidak didukung"
 
 #: help.c:405
 msgid "The Git concept guides are:"
-msgstr ""
+msgstr "Panduan konsep Git adalah:"
 
 #: help.c:429
 msgid "See 'git help <command>' to read about a specific subcommand"
-msgstr ""
+msgstr "Lihat 'git help <perintah>' untuk baca tentang subperintah spesifik"
 
 #: help.c:434
 msgid "External commands"
-msgstr ""
+msgstr "Perintah eksternal"
 
 #: help.c:449
 msgid "Command aliases"
-msgstr ""
+msgstr "Alias perintah"
 
 #: help.c:527
 #, c-format
@@ -4254,30 +4288,32 @@
 "'%s' appears to be a git command, but we were not\n"
 "able to execute it. Maybe git-%s is broken?"
 msgstr ""
+"'%s' sepertinya perintah git, tetapi kami tidak dapat\n"
+"menjalankannya. Mungkin git-%s rusak?"
 
 #: help.c:543 help.c:631
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
-msgstr ""
+msgstr "git: '%s' bukan perintah git. Lihat 'git --help'."
 
 #: help.c:591
 msgid "Uh oh. Your system reports no Git commands at all."
-msgstr ""
+msgstr "Eh oh. Sistem Anda melaporkan tidak ada perintah Git sama sekali."
 
 #: help.c:613
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
-msgstr ""
+msgstr "PERINGATAN: Anda memanggil perintah Git bernama '%s' yang tidak ada."
 
 #: help.c:618
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
-msgstr ""
+msgstr "Melanjutkan di bawah asumsi bahwa maksud Anda '%s'."
 
 #: help.c:623
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
-msgstr ""
+msgstr "Melanjutkan dalam %0.1f detik, mengasumsikan bahwa maksud Anda '%s'."
 
 #: help.c:635
 msgid ""
@@ -4287,16 +4323,20 @@
 "\n"
 "The most similar commands are"
 msgstr[0] ""
+"\n"
+"Perintah paling mirip adalah"
 msgstr[1] ""
+"\n"
+"Perintah paling mirip adalah"
 
 #: help.c:675
 msgid "git version [<options>]"
-msgstr ""
+msgstr "git version [<opsi>]"
 
 #: help.c:730
 #, c-format
 msgid "%s: %s - %s"
-msgstr ""
+msgstr "%s: %s - %s"
 
 #: help.c:734
 msgid ""
@@ -4306,7 +4346,11 @@
 "\n"
 "Did you mean one of these?"
 msgstr[0] ""
+"\n"
+"Mungkin maksud Anda yang ini?"
 msgstr[1] ""
+"\n"
+"Mungkin maksud Anda salah satu dari yang ini?"
 
 #: ident.c:353
 msgid "Author identity unknown\n"
@@ -4374,7 +4418,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr ""
 
 #: list-objects-filter-options.c:124
@@ -4419,7 +4463,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr ""
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr ""
@@ -4459,39 +4503,39 @@
 msgid "bad action '%s' for '%s'"
 msgstr ""
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr ""
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr ""
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr ""
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr ""
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
 "%s\n"
 msgstr ""
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4502,42 +4546,42 @@
 "which will accept this suggestion.\n"
 msgstr ""
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
 "%s"
 msgstr ""
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr ""
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr ""
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr ""
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
 "implicit directory rename(s) putting the following path(s) there: %s."
 msgstr ""
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
 "implicit directory renames tried to put these paths there: %s"
 msgstr ""
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4545,47 +4589,47 @@
 "majority of the files."
 msgstr ""
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
 "renamed."
 msgstr ""
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
 "moving it to %s."
 msgstr ""
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
 "%s; moving it to %s."
 msgstr ""
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
 "in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
 "was renamed in %s, suggesting it should perhaps be moved to %s."
 msgstr ""
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4593,67 +4637,67 @@
 "markers."
 msgstr ""
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr ""
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr ""
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
 "%s instead."
 msgstr ""
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
 "of them so each can be recorded somewhere."
 msgstr ""
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
 "of them so each can be recorded somewhere."
 msgstr ""
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr ""
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr ""
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr ""
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr ""
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
 "of %s left in tree."
 msgstr ""
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4663,192 +4707,192 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr ""
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "  %s"
 msgstr ""
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Sudah terbaru."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr ""
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr ""
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr ""
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr ""
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ""
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr ""
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr ""
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr ""
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr ""
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr ""
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr ""
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree."
 msgstr ""
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree."
 msgstr ""
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr ""
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr ""
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr ""
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
 "\"->\"%s\" in \"%s\"%s"
 msgstr ""
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr ""
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -4856,85 +4900,85 @@
 "getting a majority of the files."
 msgstr ""
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
 ">%s in %s"
 msgstr ""
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr ""
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr ""
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr ""
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr ""
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr ""
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr ""
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr ""
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr ""
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr ""
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr ""
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr ""
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr ""
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr ""
@@ -4943,8 +4987,8 @@
 msgid "failed to read the cache"
 msgstr ""
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr ""
@@ -5018,106 +5062,114 @@
 msgid "failed to locate object %d in packfile"
 msgstr ""
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "tidak dapat menyimpan berkas indeks balik"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr ""
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr ""
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr ""
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr ""
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr ""
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "gagal menghapus %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr ""
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr ""
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr ""
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr ""
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr ""
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr ""
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr ""
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr ""
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr ""
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr ""
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr ""
 
@@ -5177,265 +5229,266 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr ""
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr ""
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr ""
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr ""
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr ""
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr ""
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr ""
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr ""
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr ""
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr ""
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr ""
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr ""
 
-#: object-file.c:1031
-msgid "mmap failed"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
 msgstr ""
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr ""
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr ""
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr ""
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr ""
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr ""
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr ""
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr ""
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr ""
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr ""
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr ""
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr ""
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr ""
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr ""
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr ""
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr ""
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr ""
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr ""
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr ""
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr ""
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr ""
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr ""
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr ""
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr ""
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr ""
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr ""
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr ""
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr ""
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr ""
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr ""
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "tidak dapat membuka %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr ""
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr ""
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr ""
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr ""
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr ""
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr ""
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr ""
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5448,62 +5501,62 @@
 "running \"git config advice.objectNameWarning false\""
 msgstr ""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr ""
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr ""
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr ""
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
 "hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
 msgstr ""
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr ""
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
 "hint: Did you mean ':%d:%s'?"
 msgstr ""
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
 "hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
 msgstr ""
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr ""
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr ""
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr ""
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr ""
@@ -5518,27 +5571,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr ""
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr ""
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr ""
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr ""
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr ""
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr ""
@@ -5591,12 +5644,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr ""
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5797,7 +5855,7 @@
 msgstr ""
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
+msgid "unable to write response end packet"
 msgstr ""
 
 #: pkt-line.c:113
@@ -5857,19 +5915,19 @@
 msgid "unable to parse --pretty format"
 msgstr ""
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr ""
@@ -5890,7 +5948,7 @@
 msgid "could not read `log` output"
 msgstr ""
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr ""
@@ -5907,213 +5965,213 @@
 msgid "could not parse git header '%.*s'"
 msgstr ""
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr ""
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr ""
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr ""
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr ""
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr ""
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr ""
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr ""
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr ""
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr ""
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr ""
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr ""
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr ""
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr ""
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr ""
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr ""
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr ""
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr ""
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr ""
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr ""
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr ""
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr ""
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr ""
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr ""
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr ""
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
+msgid "%s: unable to map index file%s"
 msgstr ""
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr ""
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr ""
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr ""
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr ""
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr ""
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr ""
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr ""
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr ""
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr ""
@@ -6191,8 +6249,8 @@
 "\n"
 msgstr ""
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr ""
@@ -6228,7 +6286,7 @@
 msgid "could not read '%s'."
 msgstr ""
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr ""
 
@@ -6247,247 +6305,247 @@
 msgid "ahead %d, behind %d"
 msgstr ""
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr ""
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr ""
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr ""
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr ""
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr ""
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr ""
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr ""
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr ""
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr ""
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr ""
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr ""
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr ""
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr ""
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr ""
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr ""
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr ""
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr ""
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr ""
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr ""
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr ""
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr ""
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr ""
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr ""
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr ""
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr ""
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr ""
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr ""
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr ""
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr ""
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr ""
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr ""
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr ""
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr ""
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr ""
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr ""
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr ""
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr ""
@@ -6928,8 +6986,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr ""
@@ -6967,38 +7025,38 @@
 msgid "could not determine HEAD revision"
 msgstr "tidak dapat menentukan revisi HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "gagal menemukan pohon %s"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr ""
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr ""
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr ""
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr ""
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr ""
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7031,25 +7089,25 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr ""
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr ""
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr ""
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr ""
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr ""
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr ""
 
@@ -7104,7 +7162,7 @@
 msgstr ""
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr ""
@@ -7115,7 +7173,7 @@
 msgstr ""
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr ""
@@ -7165,8 +7223,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr ""
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr ""
@@ -7279,7 +7337,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr ""
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr ""
 
@@ -7287,7 +7345,7 @@
 msgid "unable to parse commit author"
 msgstr ""
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr ""
 
@@ -7305,12 +7363,13 @@
 msgid "corrupt author: missing date information"
 msgstr ""
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr ""
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr ""
@@ -7362,7 +7421,7 @@
 msgid "need a HEAD to fixup"
 msgstr ""
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr ""
 
@@ -7503,7 +7562,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr ""
 
@@ -7534,7 +7593,7 @@
 msgid "could not lock HEAD"
 msgstr ""
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr ""
 
@@ -7546,7 +7605,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr ""
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr ""
@@ -7592,7 +7651,7 @@
 "try \"git %s --continue\""
 msgstr ""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr ""
 
@@ -7658,90 +7717,90 @@
 "\n"
 msgstr ""
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr ""
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr ""
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr ""
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr ""
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr ""
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr ""
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr ""
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr ""
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr ""
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr ""
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr ""
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr ""
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr ""
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr ""
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr ""
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr ""
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -7749,29 +7808,29 @@
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr ""
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr ""
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr ""
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr ""
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -7784,108 +7843,108 @@
 "    git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr ""
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr ""
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr ""
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr ""
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr ""
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr ""
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr ""
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr ""
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr ""
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr ""
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr ""
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr ""
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr ""
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr ""
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr ""
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr ""
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr ""
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr ""
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr ""
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr ""
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr ""
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr ""
 
@@ -7926,126 +7985,130 @@
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr ""
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr ""
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] ""
+msgstr[1] ""
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr ""
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] ""
+msgstr[1] ""
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr ""
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr ""
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr ""
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr ""
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr ""
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr ""
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr ""
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr ""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr ""
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr ""
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr ""
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr ""
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr ""
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
 "The owner of files must always have read and write permissions."
 msgstr ""
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr ""
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr ""
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr ""
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr ""
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr ""
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr ""
@@ -8102,7 +8165,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8172,7 +8235,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "argumen --ignore-submodules jelek: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8181,12 +8244,12 @@
 "Submodul dalam komit %s pada jalur '%s' bertabrakan dengan submodul yang "
 "bernama sama. Melewati itu."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "entri submodul '%s' (%s) adalah %s, bukan komit"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8195,36 +8258,36 @@
 "Tidak dapat menjalankan perintah 'git rev-list <komit> --not --remotes -n 1' "
 "dalam submodul %s"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "proses untuk submodul '%s' gagal"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Gagal menguraikan HEAD sebagai referensi valid."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Mendorong submodul '%s'\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Tidak dapat mendorong submodul '%s'\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Mengambil submodul %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Tidak dapat mengakses submodul '%s'\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8233,61 +8296,61 @@
 "Kesalahan saat pengambilan submodul:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' tak dikenal sebagai repositori git"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Tidak dapat menjalankan 'git status --porcelain=2' dalam submodul %s"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'git status --porcelain=2' gagal dalam submodul %s"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "Tidak dalat memulai 'git status' dalam submodul '%s'"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "tidak dapat menjalankan 'git status' dalam submodul '%s'"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Tidak dapat batal setel setelan core.worktree dalam submodul '%s'"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "tidak dapat rekursi ke dalam submodul '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "tidak dapat reset indeks submodul"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "submodul '%s' punya indeks kotor"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Submodul '%s' tidak dapat diperbarui."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "direktori submodul git '%s' di dalam direktori git '%.*s'"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8295,17 +8358,17 @@
 "relocate_gitdir untuk submodul '%s' dengan lebih dari satu pohon kerja tidak "
 "didukung"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "tidak dapat mencari nama untuk submodul '%s'"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "menolak memindahkan '%s' ke dalam direktori git yang ada"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8316,11 +8379,11 @@
 "'%s' ke\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "tidak dapat memulai ls-files dalam .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree kembalikan kode kembali %d yang tak diharapkan"
@@ -8357,7 +8420,7 @@
 msgid "could not read input file '%s'"
 msgstr ""
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr ""
 
@@ -8445,7 +8508,7 @@
 msgid "invalid remote service path"
 msgstr ""
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr ""
 
@@ -8454,7 +8517,7 @@
 msgid "can't connect to subservice %s"
 msgstr ""
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr ""
 
@@ -8585,53 +8648,53 @@
 msgid "could not read bundle '%s'"
 msgstr ""
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr ""
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr ""
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr ""
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr ""
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr ""
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr ""
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr ""
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr ""
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr ""
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr ""
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -8647,11 +8710,11 @@
 "\n"
 msgstr ""
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr ""
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr ""
 
@@ -8864,11 +8927,11 @@
 "colliding group is in the working tree:\n"
 msgstr ""
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr ""
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -8910,100 +8973,100 @@
 msgid "Fetching objects"
 msgstr ""
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "gagal membaca '%s'"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "'%s' pada pohon kerja utama bukan direktori repositori"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "berkas '%s' tidak berisi jalur absolut ke lokasi pohon kerja"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' tidak ada"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' bukan berkas .git, kode error %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' tidak menunjuk kembali ke '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "bukan direktori"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git bukan berkas"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr "berkas .git rusak"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr "berkas .git salah"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "bukan jalur valid"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "tidak dapat menempatkan repositori; .git bukan berkas"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr ""
 "tidak dapat menempatkan repositori; berkas .git tidak merujuk repositori"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "tidak dapat menempatkan repositori; berkas .git rusak"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir tidak dapat dibaca"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir salah"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "bukan direktori valid"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "berkas gitdir tidak ada"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "tidak dapat membaca berkas gitdir (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "baca singkat (diharapkan %<PRIuMAX> bita, terbaca %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "berkas gitdir tidak valid"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "berkas gitdir menunjuk ke lokasi yang tidak ada"
 
@@ -9047,18 +9110,18 @@
 #: wt-status.c:199 wt-status.c:203
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
-"  (gunakan \"git add.rm <berkas>...\" sebagaimana mestinya untuk menandai "
+"  (gunakan \"git add/rm <berkas>...\" sebagaimana mestinya untuk menandai "
 "penyelesaian)"
 
 #: wt-status.c:201
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (gunakan \"git rm <berkas>\" untuk menandai penyelesaian)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Perubahan yang akan dikomit:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Perubahan yang tidak digelar untuk komit:"
 
@@ -9162,22 +9225,22 @@
 msgid "untracked content, "
 msgstr "konten yang tak dilacak, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Simpanan Anda saat ini ada %d entri"
 msgstr[1] "Simpanan Anda saat ini ada %d entri"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Submodul berubah tapi tak diperbarui:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Perubahan submodul yang akan dikomit:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9185,7 +9248,7 @@
 "Jangan ubah atau hapus baris diatas.\n"
 "Semua dibawahnya akan diabaikan."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9196,262 +9259,266 @@
 "Butuh %.2f detik untuk menghitung cabang di depan/di belakang nilai.\n"
 "Anda bisa gunakan '--no-ahead-behind' untuk menghindari hal tersebut.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Anda punya jalur yang tak tergabung."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (selesaikan konflik dan jalankan \"git commit\")"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (gunakan \"git merge --abort\" untuk membatalkan penggabungan)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Semua konflik sudah selesai tapi Anda masih menggabungkan."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (gunakan \"git commit\" untuk mengakhiri penggabungan)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Anda berada ditengah-tengah sesi am."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Jalur saat ini kosong"
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (selesaikan konflik lalu jalankan \"git am --continue\")"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (gunakan \"git am --skip\" untuk lewati tambalan ini)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (gunakan \"git am --abort\" untuk mengembalikan cabang asal)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo hilang."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Tidak ada perintah selesai."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Perintah yang selesai (%d perintah):"
 msgstr[1] "Perintah yang selesai (%d perintah):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (lihat lebih lanjut di berkas %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Tidak ada perintah yang tersisa."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Perintah berikutnya (%d perintah tersisa):"
 msgstr[1] "Perintah berikutnya (%d perintah tersisa):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (gunakan \"git rebase --edit-todo\" untuk lihat dan sunting)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Anda sedang mendasarkan ulang cabang '%s' pada '%s'."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Anda sedang mendasarkan ulang."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (selesaikan konflik lalu jalankan \"git rebase --continue\")"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (gunakan \"git rebase --skip\" untuk lewati tambalan ini)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (gunakan \"git rebase --abort\" untuk check out cabang asal)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (semua konflik sudah selesai: jalankan \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Anda sedang membelah komit saat mendasarkan ulang cabang '%s' pada '%s'."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Anda sedang membelah komit saat mendasarkan ulang."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Setelah direktori kerja Anda bersih, jalankan \"git rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Anda sedang menyunting komit saat mendasarkan ulang cabang '%s' pada '%s'."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Anda sedang menyunting komit saat mendasarkan ulang."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (gunakan \"git commit --amend\" untuk mengubah komit saat ini)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (gunakan \"git rebase --continue\" begitu Anda puas dengan perubahan Anda)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Petik ceri sedang berjalan."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Anda sedang memetik ceri komit %s."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (selesaikan konflik dan jalankan \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (jalankan \"git cherry-pick --continue\" untuk melanjutkan)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (semua konflik sudah selesai: jalankan \"git cherry-pick --continue\")"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (gunakan \"git cherry-pick --skip\" untuk lewati tambalan ini)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (gunakan \"git cherry-pick --abort\" untuk membatalkan operasi petik ceri)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Pengembalian sedang berjalang."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Anda sedang mengembalikan komit %s."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (selesaikan konflik dan jalankan \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (jalankan \"git revert --continue\" untuk melanjutkan)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (semua konflik sudah selesai: jalankan \"git revert --continue\")"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (gunakan \"git revert --skip\" untuk lewati tambalan ini)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (gunakan \"git revert --abort\" untuk membatalkan operasi pengembalian)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Anda sedang membagi dua, dimulai dari cabang '%s'."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Anda sedang membagi dua."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (gunakan \"git bisect reset\" untuk kembali ke cabang asal)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Anda berada dalam checkout tipis."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "Anda berada dalam checkout tipis dengan %d%% berkas terlacak ada."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "Pada cabang "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "sedang mendasarkan ulang interaktif; ke "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "sedang mendasarkan ulang; ke "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr ""
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr ""
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Tidak sedang berada pada cabang apapun."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Komit awal"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Tidak ada komit"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Berkas tak terlacak"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Berkas yang diabaikan"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9462,32 +9529,32 @@
 "mungkin bisa mempercepat, tapi Anda harus berhati-hati jangan sampai lupa\n"
 "untuk tambahkan berkas baru sendiri (lihat 'git help status')."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Berkas tak terlacak yang tak disebutkan%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (gunakan opsi -u untuk melihat berkas yang tak terlacak)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Tidak ada perubahan"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "tidak ada perubahan untuk dikomit (gunakan \"git add\" dan/atau \"git commit "
 "-a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "tidak ada perubahan untuk dikomit\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9496,82 +9563,82 @@
 "tidak ada perubahan untuk dikomit tapi berkas yang tak terlacak ada(gunakan "
 "\"git add\" untuk lacak)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "tidak ada perubahan untuk dikomit tapi berkas yang tak terlacak ada\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "tidak ada yang dikomit (buat/salin berkas dan gunakan \"git add\" untuk "
 "lacak)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "tidak ada yang dikomit\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "tidak ada yang dikomit (gunakan -u untuk lihat berkas tak terlacak)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "tidak ada yang dikomit, pohon kerja bersih\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Tidak ada komit apapun pada "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (tanpa cabang)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "berbeda"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "di belakang "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "di depan "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "tidak dapat %s: Anda punya perubahan yang tidak digelar."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "juga indeks Anda berisi perubahan yang belum dikomit."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "tidak dapat %s: indeks Anda berisi perubahan yang belum dikomit."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr ""
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr ""
@@ -9608,7 +9675,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Perubahan tak tergelar setelah menyegarkan indeks:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Tidak dapat membaca indeks"
 
@@ -9643,8 +9710,8 @@
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Jalur berikut diabaikan oleh salah satu dari berkas .gitignore Anda:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "latihan"
@@ -9653,7 +9720,7 @@
 msgid "interactive picking"
 msgstr "pengambilan interaktif"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "pilih bingkah secara interaktif"
 
@@ -9784,13 +9851,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod param '%s' harus berupa -x atau +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file tidak kompatibel dengan argumen pathspec"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul butuh --pathspec-from-file"
 
@@ -9809,128 +9876,128 @@
 "Matikan pesan ini dengan menjalankan\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr ""
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr ""
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr ""
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr ""
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr ""
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr ""
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr ""
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr ""
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr ""
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr ""
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr ""
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr ""
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr ""
 
-#: builtin/am.c:1125
-#, c-format
-msgid "When you have resolved this problem, run \"%s --continue\"."
-msgstr ""
-
 #: builtin/am.c:1126
 #, c-format
-msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
+msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr ""
 
 #: builtin/am.c:1127
 #, c-format
+msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
+msgstr ""
+
+#: builtin/am.c:1128
+#, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr ""
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr ""
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr ""
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr ""
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
 msgstr ""
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr ""
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr ""
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr ""
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr ""
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr ""
 
@@ -9938,46 +10005,46 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr ""
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr ""
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr ""
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr ""
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr ""
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr ""
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
 "already introduced the same changes; you might want to skip this patch."
 msgstr ""
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -9985,106 +10052,106 @@
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Tidak dapat mengurai objek '%s'."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr ""
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr ""
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr ""
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr ""
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr ""
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr ""
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr ""
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr ""
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr ""
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr ""
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr ""
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr ""
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr ""
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr ""
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr ""
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr ""
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr ""
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10093,93 +10160,93 @@
 msgid "n"
 msgstr ""
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr ""
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr ""
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr ""
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr ""
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr ""
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr ""
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr ""
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr ""
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr ""
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr ""
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr ""
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr ""
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr ""
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
 msgstr ""
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr ""
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
 "Use \"git am --abort\" to remove it."
 msgstr ""
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr ""
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr ""
 
@@ -10219,17 +10286,21 @@
 
 #: builtin/bisect--helper.c:23
 msgid "git bisect--helper --bisect-reset [<commit>]"
-msgstr ""
+msgstr "git bisect--helper --bisect-reset [<komit>]"
 
 #: builtin/bisect--helper.c:24
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
+"git bisect--helper --bisect-next-check <istilah bagus> <istilah jelek> "
+"[<istilah>]"
 
 #: builtin/bisect--helper.c:25
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 msgstr ""
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"term-new]"
 
 #: builtin/bisect--helper.c:26
 msgid ""
@@ -10237,445 +10308,459 @@
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
 "[<paths>...]"
 msgstr ""
+"git bisect--helper --bisect-start [--term-{new,bad}=<istilah> --term-{old,"
+"good}=<istilah>] [--no-checkout] [--first-parent] [<jelek> [<bagus>...]] "
+"[--] [<jalur>...]"
 
 #: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
-msgstr ""
+msgstr "git bisect--helper --bisect-next"
 
 #: builtin/bisect--helper.c:29
 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
-msgstr ""
+msgstr "git bisect--helper --bisect-state (bad|new) [<revisi>]"
 
 #: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
-msgstr ""
+msgstr "git bisect--helper --bisect-state (good|old) [<revisi>...]"
 
 #: builtin/bisect--helper.c:31
 msgid "git bisect--helper --bisect-replay <filename>"
-msgstr ""
+msgstr "git bisect--helper --bisect-replay <nama berkas>"
 
 #: builtin/bisect--helper.c:32
 msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
-msgstr ""
+msgstr "git bisect--helper --bisect-skip [(<revisi>|<rentang>)...]"
 
 #: builtin/bisect--helper.c:107
 #, c-format
 msgid "cannot open file '%s' in mode '%s'"
-msgstr ""
+msgstr "tidak dapat membuka berkas '%s' dalam mode '%s'"
 
 #: builtin/bisect--helper.c:114
 #, c-format
 msgid "could not write to file '%s'"
-msgstr ""
+msgstr "tidak dapat menulis ke berkas '%s'"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
-msgstr ""
+msgstr "'%s' bukan istilah yang valid"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
-msgstr ""
+msgstr "tidak dapat menggunakan perintah bawaan '%s' sebagai istilah"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
-msgstr ""
+msgstr "tidak dapat mengubah makna istilah '%s'"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
-msgstr ""
+msgstr "mohon gunakan dua istilah yang berbeda"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
-msgstr ""
+msgstr "Kami tidak sedang membagi dua.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
-msgstr ""
+msgstr "'%s' bukan sebuah komit yang valid"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
+"tidak dapat men-checkout HEAD asli '%s'. Coba 'git bisect reset <komit>'."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
-msgstr ""
+msgstr "argument bisect_write jelek: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
-msgstr ""
+msgstr "tidak dapat mendapatkan oid revisi '%s'"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
-msgstr ""
+msgstr "tidak dapat membuka berkas '%s'"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
-msgstr ""
+msgstr "Perintah tidak valid: sekarang Anda berada dalam pembagian dua %s/%s"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
+"Anda perlu berikan saya setidaknya satu revisi %s dan %s.\n"
+"Untuk itu Anda dapat menggunakan \"git bisect %s\" dan \"git bisect %s\"."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
 "You then need to give me at least one %s and %s revision.\n"
 "You can use \"git bisect %s\" and \"git bisect %s\" for that."
 msgstr ""
+"Anda perlu memulai dengan \"git bisect start\".\n"
+"Lalu Anda perlu berikan saya setidaknya satu revisi %s dan %s.\n"
+"Untuk itu Anda dapat menggunakan \"git bisect %s\" dan \"git bisect %s\"."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
-msgstr ""
+msgstr "membagi dua hanya dengan sebuah komit %s"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
-msgstr ""
+msgstr "Anda yakin [Y/n]?"
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
-msgstr ""
+msgstr "tidak ada istilah yang didefinisikan"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
+"Istilah Anda saat ini adalah %s untuk keadaan lama\n"
+"dan %s untuk keadaan baru.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
+"argumen %s tidak valid untuk 'git bisect terms'.\n"
+"Opsi yang didukung adalah: --term-good|--term-old dan --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
-msgstr ""
+msgstr "setup jalan revisi gagal\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
-msgstr ""
+msgstr "tidak dapat membuka '%s' untuk menambahkan"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
-msgstr ""
+msgstr "'' bukan istilah yang valid"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
-msgstr ""
+msgstr "opsi tidak dikenal: '%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
-msgstr ""
+msgstr "'%s' sepertinya bukan revisi valid"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
-msgstr ""
+msgstr "HEAD jelek - saya butuh HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
-msgstr ""
+msgstr "gagal men-checkout '%s'. Coba 'git bisect start <cabang valid>'."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
-msgstr ""
+msgstr "tidak akan membagi dua pada pohon yang di-cg-seek"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
-msgstr ""
+msgstr "HEAD jelek - referensi simbolik aneh"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
-msgstr ""
+msgstr "referensi tidak valid: '%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
-msgstr ""
+msgstr "Anda perlu memulai dengan \"git bisect start\"\n"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
-msgstr ""
+msgstr "Anda ingin saya melakukannya untuk Anda [Y/n]"
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
-msgstr ""
+msgstr "Mohon panggil `--bisect-state` dengan setidaknya satu argumen"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
-msgstr ""
+msgstr "'git bisect %s' hanya dapat mengambil satu argumen."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
-msgstr ""
+msgstr "Masukan revisi jelek: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
-msgstr ""
+msgstr "Masukan revisi jelek (bukan sebuah komit): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
-msgstr ""
+msgstr "Kami tidak sedang membagi dua."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
-msgstr ""
+msgstr "'%s'?? Anda bilang tentang apa?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
-msgstr ""
-
-#: builtin/bisect--helper.c:1054
-msgid "reset the bisection state"
-msgstr ""
+msgstr "tidak dapat membuka berkas '%s' untuk memainkan ulang"
 
 #: builtin/bisect--helper.c:1056
-msgid "check whether bad or good terms exist"
-msgstr ""
+msgid "reset the bisection state"
+msgstr "setel ulang keadaan pembagian dua"
 
 #: builtin/bisect--helper.c:1058
-msgid "print out the bisect terms"
-msgstr ""
+msgid "check whether bad or good terms exist"
+msgstr "periksa apakah ada istilah jelek atau bagus"
 
 #: builtin/bisect--helper.c:1060
-msgid "start the bisect session"
-msgstr ""
+msgid "print out the bisect terms"
+msgstr "cetak istilah pembagian dua"
 
 #: builtin/bisect--helper.c:1062
-msgid "find the next bisection commit"
-msgstr ""
+msgid "start the bisect session"
+msgstr "mulai sesi pembagian dua"
 
 #: builtin/bisect--helper.c:1064
-msgid "mark the state of ref (or refs)"
-msgstr ""
+msgid "find the next bisection commit"
+msgstr "temukan komit pembagian dua berikutnya"
 
 #: builtin/bisect--helper.c:1066
-msgid "list the bisection steps so far"
-msgstr ""
+msgid "mark the state of ref (or refs)"
+msgstr "tandai keadaan referensi"
 
 #: builtin/bisect--helper.c:1068
-msgid "replay the bisection process from the given file"
-msgstr ""
+msgid "list the bisection steps so far"
+msgstr "daftar langkah pembagian dua sejauh ini"
 
 #: builtin/bisect--helper.c:1070
-msgid "skip some commits for checkout"
-msgstr ""
+msgid "replay the bisection process from the given file"
+msgstr "mainkan ulang proses pembagian dua dari berkas yang diberikan"
 
 #: builtin/bisect--helper.c:1072
+msgid "skip some commits for checkout"
+msgstr "lewati beberapa komit untuk checkout"
+
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
-msgstr ""
+msgstr "tidak ada log untuk BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
-msgstr ""
+msgstr "--bisect-reset butuh baik tanpa argumen atau sebuah komit"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
-msgstr ""
+msgstr "--bisect-next-check butuh 2 atau 3 argumen"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
-msgstr ""
+msgstr "--bisect-terms butuh 0 atau 1 argumen"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
-msgstr ""
+msgstr "--bisect-next butuh 0 argumen"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
-msgstr ""
+msgstr "--bisect-log butuh 0 argumen"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
-msgstr ""
+msgstr "tidak ada berkas log yang diberikan"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
-msgstr ""
+msgstr "git blame [<opsi>] [<opsi revisi>] [<revisi>] [--] <berkas>"
 
 #: builtin/blame.c:37
 msgid "<rev-opts> are documented in git-rev-list(1)"
-msgstr ""
+msgstr "<opsi revisi> didokumentasikan dalam git-rev-list(1)"
 
 #: builtin/blame.c:410
 #, c-format
 msgid "expecting a color: %s"
-msgstr ""
+msgstr "mengharapkan warna: %s"
 
 #: builtin/blame.c:417
 msgid "must end with a color"
-msgstr ""
+msgstr "harus berakhir dengan warna"
 
 #: builtin/blame.c:728
 #, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
-msgstr ""
+msgstr "warna tidak valid '%s' pada color.blame.repeatedLines"
 
 #: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
-msgstr ""
+msgstr "nilai tidak valid untuk blame.coloring"
 
 #: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
-msgstr ""
+msgstr "tidak dapat menemukan revisi %s untuk diabaikan"
 
 #: builtin/blame.c:867
 msgid "show blame entries as we find them, incrementally"
-msgstr ""
+msgstr "perlihatkan entri penyalahan seperti yang kami temukan secara bertahap"
 
 #: builtin/blame.c:868
 msgid "do not show object names of boundary commits (Default: off)"
-msgstr ""
+msgstr "jangan perlihatkan nama objek dari komit perbatasan (asali: off)"
 
 #: builtin/blame.c:869
 msgid "do not treat root commits as boundaries (Default: off)"
-msgstr ""
+msgstr "jangan perlakukan komit akar sebagai perbatasan (asali: off)"
 
 #: builtin/blame.c:870
 msgid "show work cost statistics"
-msgstr ""
+msgstr "perlihatkan statistik biaya usaha"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "paksa laporkan perkembangan"
 
 #: builtin/blame.c:872
 msgid "show output score for blame entries"
-msgstr ""
+msgstr "perlihatkan nilai keluaran untuk entri penyalahan"
 
 #: builtin/blame.c:873
 msgid "show original filename (Default: auto)"
-msgstr ""
+msgstr "perlihatkan nama berkas asli (asali: auto)"
 
 #: builtin/blame.c:874
 msgid "show original linenumber (Default: off)"
-msgstr ""
+msgstr "perlihatkan nomor baris asli (asali: off)"
 
 #: builtin/blame.c:875
 msgid "show in a format designed for machine consumption"
-msgstr ""
+msgstr "perlihatkan dalam format yang didesain untuk konsumsi mesin"
 
 #: builtin/blame.c:876
 msgid "show porcelain format with per-line commit information"
-msgstr ""
+msgstr "perlihatkan format porselen dengan informasi komit per baris"
 
 #: builtin/blame.c:877
 msgid "use the same output mode as git-annotate (Default: off)"
-msgstr ""
+msgstr "gunakan mode keluaran yang sama dengan git-annotate (asali: off)"
 
 #: builtin/blame.c:878
 msgid "show raw timestamp (Default: off)"
-msgstr ""
+msgstr "perlihatkan stempel waktu mentah (asali: off)"
 
 #: builtin/blame.c:879
 msgid "show long commit SHA1 (Default: off)"
-msgstr ""
+msgstr "perlihatkan SHA1 komit panjang (asali: off)"
 
 #: builtin/blame.c:880
 msgid "suppress author name and timestamp (Default: off)"
-msgstr ""
+msgstr "sembunyikan nama pengarang dan stempel waktu (asali: off)"
 
 #: builtin/blame.c:881
 msgid "show author email instead of name (Default: off)"
-msgstr ""
+msgstr "perlihatkan email pengarang daripada nama (asali: off)"
 
 #: builtin/blame.c:882
 msgid "ignore whitespace differences"
-msgstr ""
+msgstr "abaikan perbedaan spasi putih"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
-msgstr ""
+msgstr "revisi"
 
 #: builtin/blame.c:883
 msgid "ignore <rev> when blaming"
-msgstr ""
+msgstr "abaikan <revisi> ketika menyalahkan"
 
 #: builtin/blame.c:884
 msgid "ignore revisions from <file>"
-msgstr ""
+msgstr "abaikan revisi dari <berkas>"
 
 #: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
-msgstr ""
+msgstr "metadata warna berlebihan dari baris sebelumnya secara berbeda"
 
 #: builtin/blame.c:886
 msgid "color lines by age"
-msgstr ""
+msgstr "warnai baris oleh umur"
 
 #: builtin/blame.c:887
 msgid "spend extra cycles to find better match"
-msgstr ""
+msgstr "perlihatkan siklus ekstra untuk menemukan cocokan yang lebih baik"
 
 #: builtin/blame.c:888
 msgid "use revisions from <file> instead of calling git-rev-list"
-msgstr ""
+msgstr "gunakan revisi dari <berkas> daripada memanggil git-rev-list"
 
 #: builtin/blame.c:889
 msgid "use <file>'s contents as the final image"
-msgstr ""
+msgstr "gunakan konten <berkas> sebagai citra final"
 
 #: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
-msgstr ""
+msgstr "nilai"
 
 #: builtin/blame.c:890
 msgid "find line copies within and across files"
-msgstr ""
+msgstr "temukan salinan baris di dalam dan di seluruh berkas"
 
 #: builtin/blame.c:891
 msgid "find line movements within and across files"
-msgstr ""
+msgstr "temukan gerakan baris di dalam dan di seluruh baris"
 
 #: builtin/blame.c:892
 msgid "range"
-msgstr ""
+msgstr "rentang"
 
 #: builtin/blame.c:893
 msgid "process only line range <start>,<end> or function :<funcname>"
-msgstr ""
+msgstr "hanya proses rentang baris <awal>,<akhir> atau fungsi :<nama fungsi>"
 
 #: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
+"--progress tidak dapat digunakan dengan --incremental atau format porselen"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -10687,18 +10772,18 @@
 #.
 #: builtin/blame.c:996
 msgid "4 years, 11 months ago"
-msgstr ""
+msgstr "4 tahun, 11 bulan yang lalu"
 
 #: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "berkas %s hanya punya %lu baris"
+msgstr[1] "berkas %s hanya punya %lu baris"
 
 #: builtin/blame.c:1157
 msgid "Blaming lines"
-msgstr ""
+msgstr "Menyalahkan baris"
 
 #: builtin/branch.c:29
 msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
@@ -11193,19 +11278,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr ""
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr ""
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 
@@ -11217,105 +11302,105 @@
 msgid "Need a repository to create a bundle."
 msgstr ""
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr ""
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr ""
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr ""
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr ""
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr ""
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
 msgstr ""
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 msgstr ""
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr ""
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr ""
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr ""
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr ""
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr ""
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr ""
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr ""
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr ""
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr ""
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr ""
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr ""
 
@@ -11343,8 +11428,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr ""
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr ""
 
@@ -11402,9 +11487,11 @@
 msgstr ""
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr ""
 
@@ -11498,70 +11585,70 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Tidak dapat menambahkan hasil penggabungan untuk '%s'"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "Konflik penggabungan %d dibuat ulang"
 msgstr[1] "Konflik penggabungan %d dibuat ulang"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "%d jalur diperbarui dari %s"
 msgstr[1] "%d jalur diperbarui dari %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "%d jalur diperbarui dari indeks"
 msgstr[1] "%d jalur diperbarui dari indeks"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' tidak dapat digunakan untuk memperbarui jalur"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' tidak dapat digunakan untuk %s"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr ""
 "Tidak dapat memperbarui jalur dan mengganti ke cabang '%s' dalam waktu yang "
 "bersamaan."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "baik '%s' atau '%s' tidak disebutkan"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s' harus disebutkan ketika '%s' tidak disebutkan"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' atau '%s' tidak dapat digunakan untuk %s"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "jalur '%s' tak tergabung"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "Anda perlu selesaikan dulu indeks Anda saat ini"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11571,50 +11658,50 @@
 "berikut:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Tidak dapat melakukan reflog untuk '%s': %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD sekarang berada di"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "tidak dapat memperbarui HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Ganti ulang cabang '%s'\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Sudah berada pada '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Ganti ke dan ganti cabang '%s'\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Ganti ke cabang baru '%s'\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Ganti ke cabang '%s'\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "... dan %d lainnya.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11637,7 +11724,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11660,19 +11747,19 @@
 "saat yang tepat untuk dilakukan dengan:\n"
 "git branch <nama-cabang-baru> %s\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "kesalahan internal dalam jalan revisi"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "Posisi HEAD sebelumnya adalah"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Anda berada pada cabang yang belum lahir"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11681,7 +11768,7 @@
 "'%s' bisa jadi berkas lokal dan cabang pelacak.\n"
 "Mohon gunakan -- (dan secara opsional --no-guess) untuk disambiguasi"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11701,51 +11788,51 @@
 "seperti remote 'origin', pertimbangkan untuk menyetel\n"
 "checkout.defaultRemote=origin di konfigurasi Anda"
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' cocok dengan banyak (%d) cabang pelacak remote"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "hanya satu referensi yang diharapkan"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "hanya satu referensi yang diharapkan, %d diberikan"
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referensi tidak valid: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensi bukan pohon: %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "sebuah cabang diharapkan, dapat tag '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "sebuah cabang diharapkan, dapat cabang remote '%s'"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "sebuah cabang diharapkan, dapat '%s'"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "sebuah cabang diharapkan, dapat komit '%s'"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11754,7 +11841,7 @@
 "Pertimbangkan untuk menggunakan \"git merge --quit\" atau \"git worktree add"
 "\"."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11762,7 +11849,7 @@
 "tidak dapat mengganti cabang di tengah sesi am\n"
 "Pertimbangkan untuk menggunakan \"git am --quit\" atau \"git worktree add\"."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11771,7 +11858,7 @@
 "Pertimbangkan untuk menggunakan \"git rebase --quit\" atau \"git worktree add"
 "\"."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11780,218 +11867,219 @@
 "Pertimbangkan untuk menggunakan \"git cherry-pick --quit\" atau \"git "
 "worktree add\"."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 "tidak dapat mengganti cabang saat pembalikan\n"
-"Pertimbangkan untuk menggunakan \"git cherry-pick --quit\" atau \"git "
-"worktree add\"."
+"Pertimbangkan untuk menggunakan \"git revert --quit\" atau \"git worktree add"
+"\"."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "Anda mengganti cabang saat pembagian dua"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "jalur tidak dapat digunakan dengan mengganti cabang"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' tidak dapat digunakan dengan mengganti cabang"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' tidak dapat digunakan dengan '%s'"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' tidak bisa mengambil <titik-awal>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Tidak dapat mengganti cabang ke bukan komit '%s'"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "kehilangan argumen cabang atau komit"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "lakukan penggabungan 3 arah dengan cabang baru"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "gaya"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "gaya konflik (merge atau diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "lepas HEAD pada komit bernama"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "setel info hulu untuk cabang baru"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "paksa checkout (buang modifikasi lokal)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "cabang baru"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "cabang baru tanpa induk"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "perbarui berkas yang diabaikan (default)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "jangan periksa jika pohon kerja yang lain mempunyai referensi yang diberikan"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "checkout versi kami untuk berkas yang tak tergabung"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "checkout versi mereka untuk berkas yang tak tergabung"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "jangan batasi jalur spek hanya ke entri tipis"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c dan --orphan saling eksklusif"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p dan --overlay saling eksklusif"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track butuh nama cabang"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "kehilangan nama cabang; coba -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "tidak dapat menyelesaikan %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "spesifikasi jalur tidak valid"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' bukanlah commit dan cabang '%s' tidak dapat dibuat dari itu"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach tidak mengambil argumen jalur '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file tidak kompatible dengan --detach"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file tidak kompatibel dengan --patch"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
-"git checkout: --ours/theirs, --force dan --merge tidak kompatibel saat\n"
+"git checkout: --ours/--theirs, --force dan --merge tidak kompatibel saat\n"
 "men-checkout index"
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "Anda harus sebutkan jalur untuk dipulihkan"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "cabang"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "buat dan checkout cabang baru"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "buat/setel ulang dan checkout cabang"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "buat reflog untuk cabang baru"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "tebakan kedua 'git checkout <tidak-ada-cabang-seperti-itu>' (default)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "gunakan mode hamparan (default)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "buat dan ganti ke cabang baru"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "buat/setel ulang dan ganti ke cabang"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "tebakan kedua 'git switch <tidak-ada-cabang-seperti-itu>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "buang modifikasi lokal"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "mana mirip-cabang untuk di-checkout"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "pulihkan indeks"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "pulihkan pohon kerja (default)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "abaikan entri yang tak tergabung"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "gunakan mode hamparan"
 
@@ -12026,7 +12114,7 @@
 msgid "could not lstat %s\n"
 msgstr "tidak dapat me-lstat %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12039,7 +12127,7 @@
 "foo        - pilih item berdasarkan prefiks unik\n"
 "           - (kosong) tidak pilih apa-apa\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12060,33 +12148,33 @@
 "*          - pilih semua item\n"
 "           - (kosong) selesai memilih\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Huh (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Masukkan pola pengabaian>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "PERINGATAN: Tidak dapat menemukan item yang cocok dengan: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Pilih item untuk dihapus"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Hapus %s [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12104,52 +12192,52 @@
 "help                - layar ini\n"
 "?                   - bantuan untuk bisik pemilihan"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Akan menghapus item berikut:"
 msgstr[1] "Akan menghapus item berikut:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Tidak ada lagi berkas untuk dibersihkan, keluar."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "jangan cetak nama berkas yang dihapus"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "paksa"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "pembersihan interaktif"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "hapus keseluruhan direktori"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "pola"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "tambahkan <pola> ke aturan pengabaian"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "juga hapus berkas terabaikan"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "hanya hapus berkas terabaikan"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12157,7 +12245,7 @@
 "clean.requireForce disetel ke true dan baik -i, -n, atau -f tidak diberikan; "
 "menolak membersihkan"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12165,7 +12253,7 @@
 "clean.requireForce asal ke true dan baik -i, -n, atau -f tidak diberikan; "
 "menolak membersihkan"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x dan -X tidak dapat digunakan bersamaan"
 
@@ -12181,7 +12269,7 @@
 msgid "don't create a checkout"
 msgstr "jangan buat checkout"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "buat repositori bare"
 
@@ -12213,26 +12301,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "jumlah submodul yang diklon secara paralel"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "direktori templat"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "direktori dimana templat akan digunakan"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "repositori rujukan"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "gunakan --reference hanya pada saat kloning"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "nama"
@@ -12249,7 +12337,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "jalur ke git-upload-pack pada remote"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "kedalaman"
@@ -12258,7 +12346,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "buat klon dangkal sedalam kedalaman tersebut"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "waktu"
@@ -12276,8 +12364,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "perdalam riwayat klon dangkal, tidak termasuk rev"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "klon hanya satu cabang, HEAD atau --branch"
 
@@ -12289,11 +12377,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "submodul yang diklon akan dangkal"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "direktori git"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "pisahkan direktori git dari pohon kerja"
 
@@ -12306,22 +12394,22 @@
 msgstr "setel konfigurasi di dalam repositori baru"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "spesifik ke server"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "opsi untuk transmisi"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "gunakan hanya alamat IPv4"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "gunakan hanya alamat IPv6"
 
@@ -12422,7 +12510,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "tidak dapat batal-taut berkas alternatif sementara"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Terlalu banyak argumen."
 
@@ -12444,7 +12532,7 @@
 msgid "repository '%s' does not exist"
 msgstr "repositori '%s' tidak ada"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "kedalaman %s bukan bilangan positif"
@@ -12465,7 +12553,7 @@
 msgstr "pohon kerja '%s' sudah ada."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "tidak dapat membuat direktori pendahulu '%s'"
@@ -12524,12 +12612,16 @@
 msgid "--local is ignored"
 msgstr "--local diabaikan"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "transportasi remote melaporkan kesalahan"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Cabang remote %s tidak ditemukan di hulu %s"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Anda tampaknya mengklon repositori kosong."
 
@@ -12583,7 +12675,7 @@
 msgstr ""
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr ""
 
@@ -12675,7 +12767,7 @@
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr ""
@@ -12703,13 +12795,13 @@
 msgid "id of a parent commit object"
 msgstr ""
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr ""
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr ""
 
@@ -12717,7 +12809,7 @@
 msgid "read commit log message from file"
 msgstr ""
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr ""
@@ -12822,7 +12914,7 @@
 
 #: builtin/commit.c:437 builtin/commit.c:460 builtin/commit.c:508
 msgid "unable to write new_index file"
-msgstr "tidak dapat menulis berkas indeks baru"
+msgstr "tidak dapat menulis berkas new_index"
 
 #: builtin/commit.c:489
 msgid "cannot do a partial commit during a merge."
@@ -12866,7 +12958,7 @@
 "tidak dapat memilih karakter komentar yang tidak terpakai\n"
 "dalam pesan komit saat ini"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "tidak dapat mencari komit %s"
@@ -12902,7 +12994,45 @@
 msgid "could not write commit template"
 msgstr "tidak dapat menulis templat komit"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
+"dengan '%c' akan diabaikan.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
+"dengan '%c' akan diabaikan, dan pesan kosong batalkan komit.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
+"dengan '%c' akan tetap; Anda dapat menghapus itu jika Anda mau.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
+"dengan '%c' akan tetap; Anda dapat menghapus itu jika Anda mau.\n"
+"Pesan kosong batalkan komit.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -12916,7 +13046,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "dan coba lagi.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -12930,195 +13060,175 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "dan coba lagi.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
-"dengan '%c' akan diabaikan, dan pesan kosong batalkan komit.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Mohon masukkan pesan komit untuk perubahan Anda. Baris yang diawali\n"
-"dengan '%c' akan tetap; Anda dapat menghapus itu jika Anda mau.\n"
-"Pesan kosong batalkan komit.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sPengarang:    %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sTanggal:       %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sPengkomit: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Tidak dapat membaca indeks"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "tidak dapat melewatkan trailer ke --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Kesalahan membangun pohon"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Mohon berikan pesan baik dengan opsi -m atau -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' bukan 'Nama <email>' dan tidak cocok dengan pengarang yang ada"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Mode terabaikan '%s' tidak valid"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Mode berkas tak terlacak '%s' tidak valid"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long dan -z tidak kompatibel"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Anda berada di tengah penggabungan -- tidak dapat menulis ulang."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "Anda berada di tengah pemetikan ceri -- tidak dapat menulis ulang."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 "tidak dapat menggabungkan opsi penulisan ulang --fixup dengan jalur '%s'"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
 msgstr ""
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Menggunakan baik --reset-author dan --author tidak masuk akal"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Anda tidak punya apapun untuk diubah."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Anda berada di tengah penggabungan -- tidak dapat mengubah."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Anda berada di tengah pemetikan ceri -- tidak dapat mengubah."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "Anda berada di tengah pendasaran ulang -- tidak dapat mengubah."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Opsi --squash dan --fixup tidak dapat digunakan bersamaan"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Hanya salah satu dari -c/-C/-F/--fixup yang dapat digunakan."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Opsi -m tidak dapat digabung dengan -c/-C/-F."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author hanya dapat digunakan dengan -C, -c atau --amend."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Hanya salah satu dari --include/--only/--all/--interactive/--patch yang "
 "dapat digunakan."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr ""
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "jalur '%s ...' dengan -a tidak masuk akal"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "perlihatkan status dengan ringkas"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "perlihatkan informasi cabang"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "perlihatkan informasi stase"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "hitung nilai didepan/dibelakang penuh"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "versi"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "keluaran yang dapat dibaca mesin"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "perlihatkan status dalam format panjang (asali)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "akhiri entri dengan NUL"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "mode"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "perlihatkan berkas tak terlacak, mode opsional: all, normal, no. (Asali: all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13126,11 +13236,11 @@
 "perlihatkan berkas terabaikan, mode opsional: traditional, matching, no. "
 "(Asali: traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "bila"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13138,199 +13248,199 @@
 "abaikan perubahan submodul, bila opsional: all, dirty, untracked. (Asali: "
 "all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "sebut berkas tak terlacak dalam kolom"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "jangan deteksi penggantian nama"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "deteksi penggantian nama, setel indeks kemiripan secara opsional"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Kombinasi argumen berkas terabaikan dan tak terlacak tidak didukung"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "sembunyikan rangkuman setelah komit berhasil"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "perlihatkan diff dalam templat pesan komit"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Opsi pesan komit"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "Baca pesan dari berkas"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "pengarang"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "timpa pengarang komit"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "tangal"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "timpa tanggal komit"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "komit"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "gunakan kembali dan sunting pesan dari komit tersebut"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "gunakan kembali pesan dari komit tersebut"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]komit"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "gunakan pesan terformat autosquash untuk perbaiki atau ubah/tulis ulang "
 "komit yang disebutkan"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "gunakan pesan terformat autosquash untuk lumat komit tersebut"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "komit sekarang dikarang olehku (gunakan dengan -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr ""
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr ""
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "tambahkan trailer Signed-off-by"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "gunakan templat berkas tersebut"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "paksa sunting komit"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "masukkan status dalam templat pesaan komit"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Opsi isi komit"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "komit semua berkas terubah"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "tambahakn berkas tersebut ke indeks untuk dikomit"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "tambah berkas secara interaktif"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "tambah perubahan secara interaktif"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "hanya komit berkas tersebut"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "lewati hook pre-commit dan commit-msg"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "perlihatkan apa yang akan dikomit"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "ubah komit sebelumnya"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "lewati hook post-rewrite"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "ok merekam perubahan kosong"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "ok merekam perubahan dengan pesan kosong"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Berkas MERGE_HEAD (%s) rusak"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "tidak dapat membaca MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "tidak dapat membaca pesan komit: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Batalkan komit karena pesan komit kosong.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Batalkan komit; Anda tidak menyunting pesan.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "Batalkan komit karena badan pesan komit kosong.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
 "not exceeded, and then \"git restore --staged :/\" to recover."
 msgstr ""
 "repositori sudah diperbarui, tetapi tidak dapat menulis\n"
-"berkas indeks baru. Periksa bahwa disk tidak penuh dan kuota\n"
+"berkas new_index. Periksa bahwa disk tidak penuh dan kuota\n"
 "tidak terlampaui, lalu \"git restore --staged :/\" untuk pulihkan."
 
 #: builtin/config.c:11
@@ -13695,48 +13805,50 @@
 
 #: builtin/describe.c:26
 msgid "git describe [<options>] [<commit-ish>...]"
-msgstr ""
+msgstr "git describe [<opsi>] [<mirip-komit>...]"
 
 #: builtin/describe.c:27
 msgid "git describe [<options>] --dirty"
-msgstr ""
+msgstr "git describe [<opsi>] --dirty"
 
 #: builtin/describe.c:63
 msgid "head"
-msgstr ""
+msgstr "kepala"
 
 #: builtin/describe.c:63
 msgid "lightweight"
-msgstr ""
+msgstr "ringan"
 
 #: builtin/describe.c:63
 msgid "annotated"
-msgstr ""
+msgstr "teranotasi"
 
 #: builtin/describe.c:277
 #, c-format
 msgid "annotated tag %s not available"
-msgstr ""
+msgstr "tag teranotasi %s tidak tersedia"
 
 #: builtin/describe.c:281
 #, c-format
 msgid "tag '%s' is externally known as '%s'"
-msgstr ""
+msgstr "tag '%s' dikenal luar sebagai '%s'"
 
 #: builtin/describe.c:328
 #, c-format
 msgid "no tag exactly matches '%s'"
-msgstr ""
+msgstr "tidak ada tag yang tepat cocok dengan '%s'"
 
 #: builtin/describe.c:330
 #, c-format
 msgid "No exact match on refs or tags, searching to describe\n"
 msgstr ""
+"tidak ada kecocokan eksak pada referensi atau tag, mencari untuk "
+"menjelaskan \n"
 
 #: builtin/describe.c:397
 #, c-format
 msgid "finished search at %s\n"
-msgstr ""
+msgstr "selesai mencari pada %s\n"
 
 #: builtin/describe.c:424
 #, c-format
@@ -13744,6 +13856,8 @@
 "No annotated tags can describe '%s'.\n"
 "However, there were unannotated tags: try --tags."
 msgstr ""
+"Tidak ada tag teranotasi yang dapat menjelaskan '%s'.\n"
+"Bagaimanapun, ada tag tak teranotasi: coba --tags."
 
 #: builtin/describe.c:428
 #, c-format
@@ -13751,11 +13865,13 @@
 "No tags can describe '%s'.\n"
 "Try --always, or create some tags."
 msgstr ""
+"Tidak ada tag yang dapat menjelaskan '%s'\n"
+"Coba --always, atau buat beberapa tag."
 
 #: builtin/describe.c:458
 #, c-format
 msgid "traversed %lu commits\n"
-msgstr ""
+msgstr "%lu komit dilintasi\n"
 
 #: builtin/describe.c:461
 #, c-format
@@ -13763,140 +13879,142 @@
 "more than %i tags found; listed %i most recent\n"
 "gave up search at %s\n"
 msgstr ""
+"lebih dari %i tag ditemukan; %i terbaru didaftarkan\n"
+"menyerah mencari pada %s\n"
 
 #: builtin/describe.c:529
 #, c-format
 msgid "describe %s\n"
-msgstr ""
+msgstr "jelaskan %s\n"
 
 #: builtin/describe.c:532
 #, c-format
 msgid "Not a valid object name %s"
-msgstr ""
+msgstr "Bukan nama objek yang valid %s"
 
 #: builtin/describe.c:540
 #, c-format
 msgid "%s is neither a commit nor blob"
-msgstr ""
+msgstr "%s bukan sebuah komit atau blob"
 
 #: builtin/describe.c:554
 msgid "find the tag that comes after the commit"
-msgstr ""
+msgstr "temukan tag yang datang setelah komit"
 
 #: builtin/describe.c:555
 msgid "debug search strategy on stderr"
-msgstr ""
+msgstr "debug strategi pencarian pada keluaran standar"
 
 #: builtin/describe.c:556
 msgid "use any ref"
-msgstr ""
+msgstr "gunakan referensi apapun"
 
 #: builtin/describe.c:557
 msgid "use any tag, even unannotated"
-msgstr ""
+msgstr "gunakan tag apapun, bahkan tak teranotasi"
 
 #: builtin/describe.c:558
 msgid "always use long format"
-msgstr ""
+msgstr "selalu gunakan format panjang"
 
 #: builtin/describe.c:559
 msgid "only follow first parent"
-msgstr ""
+msgstr "hanya ikuti induk pertama"
 
 #: builtin/describe.c:562
 msgid "only output exact matches"
-msgstr ""
+msgstr "hanya keluarkan kecocokan eksak"
 
 #: builtin/describe.c:564
 msgid "consider <n> most recent tags (default: 10)"
-msgstr ""
+msgstr "pertimbangkan <n> tag terbaru (asali: 10)"
 
 #: builtin/describe.c:566
 msgid "only consider tags matching <pattern>"
-msgstr ""
+msgstr "hanya pertimbangkan tag yang cocok dengan <pola>"
 
 #: builtin/describe.c:568
 msgid "do not consider tags matching <pattern>"
-msgstr ""
+msgstr "jangan pertimbangkan tag yang cocok dengan <pola>"
 
 #: builtin/describe.c:570 builtin/name-rev.c:535
 msgid "show abbreviated commit object as fallback"
-msgstr ""
+msgstr "perlihatkan objek komit singkat sebagai langkah terakhir"
 
 #: builtin/describe.c:571 builtin/describe.c:574
 msgid "mark"
-msgstr ""
+msgstr "tanda"
 
 #: builtin/describe.c:572
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
-msgstr ""
+msgstr "tambahkan <tanda> pada direktori kerja kotor (asali: \"-dirty\")"
 
 #: builtin/describe.c:575
 msgid "append <mark> on broken working tree (default: \"-broken\")"
-msgstr ""
+msgstr "tambahkan <tanda> pada direktori kerja rusak (asali: \"-broken\")"
 
 #: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
-msgstr ""
+msgstr "--long tidak kompatibel dengan --abbrev=0"
 
 #: builtin/describe.c:622
 msgid "No names found, cannot describe anything."
-msgstr ""
+msgstr "Tidak ada nama yang ditemukan, tidak dapat menjelaskan apapun."
 
 #: builtin/describe.c:673
 msgid "--dirty is incompatible with commit-ishes"
-msgstr ""
+msgstr "--dirty tidak kompatibel dengan mirip-komit"
 
 #: builtin/describe.c:675
 msgid "--broken is incompatible with commit-ishes"
-msgstr ""
+msgstr "--broken tidak kompatibel dengan mirip-komit"
 
 #: builtin/diff-tree.c:155
 msgid "--stdin and --merge-base are mutually exclusive"
-msgstr ""
+msgstr "--stdin dan --merge-base saling eksklusif"
 
 #: builtin/diff-tree.c:157
 msgid "--merge-base only works with two commits"
-msgstr ""
+msgstr "--merge-base hanya bekerja dengan dua komit"
 
 #: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
-msgstr ""
+msgstr "'%s': bukan berkas reguler atau tautan simbolik"
 
 #: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
-msgstr ""
+msgstr "opsi tidak valid: %s"
 
 #: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
-msgstr ""
+msgstr "%s...%s: tidak ada dasar penggabungan"
 
 #: builtin/diff.c:486
 msgid "Not a git repository"
-msgstr ""
+msgstr "bukan repositori git"
 
 #: builtin/diff.c:532 builtin/grep.c:684
 #, c-format
 msgid "invalid object '%s' given."
-msgstr ""
+msgstr "objek yang diberikan '%s' tidak valid"
 
 #: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
-msgstr ""
+msgstr "lebih dari dua blob diberikan: '%s'"
 
 #: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
-msgstr ""
+msgstr "objek tak tertangani '%s' diberikan"
 
 #: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
-msgstr ""
+msgstr "%s...%s: banyak dasar penggabungan, menggunakan %s"
 
 #: builtin/difftool.c:31
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
@@ -13946,65 +14064,65 @@
 msgid "you may want to cleanup or recover these."
 msgstr ""
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr ""
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr ""
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr ""
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr ""
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr ""
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr ""
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr ""
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr ""
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr ""
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr ""
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr ""
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr ""
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr ""
 
@@ -14092,7 +14210,7 @@
 msgid "skip output of blob data"
 msgstr ""
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr ""
 
@@ -14410,7 +14528,7 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
+msgid "rejected %s because shallow roots are not allowed to be updated"
 msgstr "tolak %s karena akar dangkal tidak diperkenankan untuk diperbarui"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
@@ -14511,48 +14629,52 @@
 msgid "You need to specify a tag name."
 msgstr "Anda perlu sebutkan nama tag"
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only perlu satu atau lebih --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Kedalaman negatif di --deepen tidak didukung"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen dan --depth saling eksklusif"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth dan --unshallow tidak dapat digunakan bersamaan"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow pada repositori penuh tidak masuk akal"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tidak mengambil argumen repositori"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all tidak masuk akal dengan spek referensi"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "tidak ada remote atau grup remote seperti itu: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Ambil grup dan sebutkan spek referensi tidak masuk akal"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr ""
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr ""
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14560,11 +14682,11 @@
 "--filter hanya dapat digunakan dengan remote yang terkonfigurasi di "
 "extensions.partialclone"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic hanya dapat digunakan saat mengambil dari satu remote"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin hanya dapat digunakan saat mengambil dari satu remote"
 
@@ -14657,19 +14779,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr ""
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr ""
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr ""
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr ""
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr ""
 
@@ -14685,227 +14807,227 @@
 msgid "warning in %s %s: %s"
 msgstr ""
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr ""
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
 "              to %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr ""
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr ""
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr ""
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr ""
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr ""
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr ""
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr ""
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr ""
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr ""
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr ""
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr ""
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr ""
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr ""
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr ""
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr ""
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr ""
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr ""
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr ""
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr ""
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr ""
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr ""
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr ""
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr ""
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "%s tidak valid"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr ""
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr ""
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr ""
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr ""
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr ""
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr ""
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr ""
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr ""
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr ""
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr ""
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr ""
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr ""
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr ""
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr ""
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr ""
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr ""
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr ""
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Memeriksa objek"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr ""
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr ""
@@ -15161,24 +15283,24 @@
 
 #: builtin/grep.c:30
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
-msgstr ""
+msgstr "git grep [<opsi>] [-e] <pola> [<revisi>...] [[--] <pola>...]"
 
 #: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
-msgstr ""
+msgstr "grep: gagal membuat utas: %s"
 
 #: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
-msgstr ""
+msgstr "jumlah utas yang diberikan (%d) tidak valid untuk %s"
 
 #. TRANSLATORS: %s is the configuration
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "tidak ada dukungan utas, abaikan %s"
@@ -15186,251 +15308,252 @@
 #: builtin/grep.c:473 builtin/grep.c:603 builtin/grep.c:643
 #, c-format
 msgid "unable to read tree (%s)"
-msgstr ""
+msgstr "tidak dapat membaca pohon (%s)"
 
 #: builtin/grep.c:658
 #, c-format
 msgid "unable to grep from object of type %s"
-msgstr ""
+msgstr "tidak dapan men-grep dari objek dengan tipe %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
-msgstr ""
+msgstr "saklar '%c' mengharapkan nilai numerik"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
-msgstr ""
+msgstr "cari dalam index daripada dalam pohon kerja"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
-msgstr ""
+msgstr "temukan dalam konten yang tak dikelola oleh git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
-msgstr ""
+msgstr "cari dalam berkas terlacak dan tak terlacak"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
-msgstr ""
+msgstr "abaikan berkas yang disebutkan via '.gitignore'"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
-msgstr ""
+msgstr "cari secara rekursif dalam setiap submodul"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
-msgstr ""
+msgstr "perlihatkan baris nir-cocok"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
-msgstr ""
+msgstr "pencocokan tak peka kapital"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
-msgstr ""
+msgstr "cocokkan pola hanya pada batas kata"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
-msgstr ""
+msgstr "proses berkas biner sebagai teks"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
-msgstr ""
+msgstr "jangan cocokkan pola pada berkas biner"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
-msgstr ""
+msgstr "proses berkas biner dengan saringan textconv"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
-msgstr ""
+msgstr "cari dalam subdirektori (asali)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
-msgstr ""
+msgstr "turun paling banyak <kedalaman> tingkat"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
-msgstr ""
+msgstr "gunakan ekspresi reguler POSIX diperpanjang"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
-msgstr ""
+msgstr "gunakan ekspresi reguler POSIX dasar (asali)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
-msgstr ""
+msgstr "tafsirkan pola sebagai untai tetap"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
-msgstr ""
+msgstr "gunakan ekspresi reguler kompatibel dengan Perl"
+
+#: builtin/grep.c:879
+msgid "show line numbers"
+msgstr "perlihatkan nomor baris"
 
 #: builtin/grep.c:880
-msgid "show line numbers"
-msgstr ""
+msgid "show column number of first match"
+msgstr "perlihatkan nomor kolom cocokan pertama"
 
 #: builtin/grep.c:881
-msgid "show column number of first match"
-msgstr ""
+msgid "don't show filenames"
+msgstr "jangan perlihatkan nama berkas"
 
 #: builtin/grep.c:882
-msgid "don't show filenames"
-msgstr ""
-
-#: builtin/grep.c:883
 msgid "show filenames"
-msgstr ""
+msgstr "perlihatkan nama berkas"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
-msgstr ""
+msgstr "perlihatkan nama berkas relatif terhadap direktori puncak"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
-msgstr ""
+msgstr "hanya perlihatkan nama berkas daripada baris yang cocok"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
-msgstr ""
+msgstr "sinonim untuk --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
-msgstr ""
+msgstr "hanya perlihatkan nama berkas tanpa cocok"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
-msgstr ""
+msgstr "cetak NUL setelah nama berkas"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
-msgstr ""
+msgstr "hanya perlihatkan bagian cocokan baris"
+
+#: builtin/grep.c:898
+msgid "show the number of matches instead of matching lines"
+msgstr "perlihatkan jumlah cocokan daripada baris yang cocok"
 
 #: builtin/grep.c:899
-msgid "show the number of matches instead of matching lines"
-msgstr ""
-
-#: builtin/grep.c:900
 msgid "highlight matches"
-msgstr ""
+msgstr "sorot cocokan"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
-msgstr ""
+msgstr "cetak baris kosong di antara cocokan dari berkas yang berbeda"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
+"perlihatkan nama berkas hanya sekali di atas cocokan dari berkas yang sama"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
-msgstr ""
+msgstr "perlihatkan <n> baris konteks sebelum dan sesudah cocokan"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
-msgstr ""
+msgstr "perlihatkan <n> baris konteks sebelum cocokan"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
-msgstr ""
+msgstr "perlihatkan <n> baris konteks setelah cocokan"
+
+#: builtin/grep.c:913
+msgid "use <n> worker threads"
+msgstr "gunakan <n> utas pekerja"
 
 #: builtin/grep.c:914
-msgid "use <n> worker threads"
-msgstr ""
-
-#: builtin/grep.c:915
 msgid "shortcut for -C NUM"
-msgstr ""
+msgstr "pintasan untuk -C NUM"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
-msgstr ""
+msgstr "perlihatkan sebuah baris dengan nama fungsi sebelum cocokan"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
-msgstr ""
+msgstr "perlihatkan fungsi di sekitar"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
-msgstr ""
+msgstr "baca pola dari berkas"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
-msgstr ""
+msgstr "cocokkan <pola>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
-msgstr ""
+msgstr "kombinasikan pola yang disebutkan dengan -e"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
-msgstr ""
+msgstr "tunjukkan kena dengan status keluar tanpa keluaran"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
-msgstr ""
+msgstr "hanya perlihatkan cocokan dari berkas yang cocok dengan semua pola"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
-msgstr ""
+msgstr "penghalaman"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
-msgstr ""
+msgstr "perlihatkan berkas yang cocok dalam penghalaman"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
-msgstr ""
+msgstr "perbolehkan pemanggilan grep(1) (diabaikan oleh bangunan ini)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
-msgstr ""
+msgstr "tidak ada pola yang diberikan"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
-msgstr ""
+msgstr "--no-index atau --untracked tidak dapat digunakan dengan revisi"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
-msgstr ""
+msgstr "tidak dapat menguraikan revisi: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
-msgstr ""
+msgstr "--untracked tidak didukung dengan --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
-msgstr ""
+msgstr "kombinasi opsi tidak valid, abaikan --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
-msgstr ""
+msgstr "tidak ada dukungan utas, abaikan --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "jumlah utas tersebut (%d) tidak valid"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
-msgstr ""
+msgstr "--open-files-in-pager hanya bekerja pada pohon kerja"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
-msgstr ""
+msgstr "--cached atau --untracked tidak dapat digunakan dengan --no-index"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
-msgstr ""
+msgstr "--untracked tidak dapat digunakan dengan --cached"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
-msgstr ""
+msgstr "--[no-]exclude-standard tidak dapat digunakan untuk konten terlacak"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
-msgstr ""
+msgstr "baik --cached dan pohon diberikan"
 
 #: builtin/hash-object.c:85
 msgid ""
@@ -15549,30 +15672,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s': pembaca man tidak dikenal"
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "tidak ada pembaca man yang menangani permintaan"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "tidak ada pembaca info yang menangani permintaan"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' dialiaskan ke '%s'"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "untai alias.%s jelek: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "penggunaan: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' untuk informasi lebih lanjut"
 
@@ -15610,7 +15733,7 @@
 msgid "used more bytes than were available"
 msgstr "gunakan lebih banyak pita dari pada yang tersedia"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "paket terlalu besar untuk definisi off_t saat ini"
 
@@ -15637,238 +15760,238 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "versi paket %<PRIu32> tidak didukung"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paket ada objek jelek pada offset %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate mengembalikan %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "nilai offset meluap untuk objek basis delta"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "offset basis delta di luar jangkauan"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "tipe objek tidak diketahui %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "tidak dapat pread berkas paket"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "inkonsistensi inflate serius"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "TUMBUKAN SHA1 DITEMUKAN DENGAN %s !"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "tidak dapat membaca %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "tidak dapat membaca info objek yang ada %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "tidak dapat membaca objek yang ada %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objek blob tidak valid %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "kesalahan fsck dalam objek terpaket"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Tidak semua objek anak dari %s bisa dicapai"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "gagal menerapkan delta"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Menerima objek"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Mengindeks objek"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paket rusak (SHA1 tidak cocok)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "tidak dapat fstat berkas paket"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "paket memiliki sampah pada ujung"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "bingung di luar kegilaan di parse_pack_objects()"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Menguraikan delta"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "tidak dapat membuat utas: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "bingung di luar kegilaan"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Checksum ekor tidak diharapkan untuk %s (kerusakan disk?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "tidak dapat menggemboskan objek tertambah (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "objek lokal %s rusak"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "nama berkas paket '%s' tidak diakhiri dengan '.%s'"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "tidak dapat menulis %s berkas '%s'"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "tidak dapat menutup %s berkas tertulis '%s'"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "kesalahan menutup berkas paket"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "tidak dapat menyimpan berkas paket"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "tidak dapat menyimpan berkas indeks"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "pack.indexversion=%<PRIu32> jelek"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "tidak dapat membuka berkas paket yang ada '%s'"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "tidak dapat membuka berkas indeks paket untuk '%s'"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "tidak dapat kembali ke direktori kerja saat ini"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "%s jelek"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "algoritma hash tak dikenal '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin tidak dapat digunakan tanpa --stdin"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin memerlukan repositori git"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format tidak dapat digunakan dengan --stdin"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify tanpa nama berkas paket diberikan"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "kesalahan fsck dalam objek paket"
 
@@ -15912,56 +16035,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "tidak menyalin templat dari '%s': %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "nama cabang asal salah: '%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "tidak dapat menangani tipe berkas %d"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "tidak dapat memindahkan %s ke %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "mencoba menginisialisasi ulang repositori dengan hash yang berbeda"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s sudah ada"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: --initial-branch=%s diabaikan"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Repositori berbagi Git yang sudah ada diinisialisasi ulang di %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Repositori Git diinisialisasi ulang di %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Repositori berbagi Git kosong diinisialisasi di %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Repositori Git kosong dinisialisasi di %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15969,56 +16092,56 @@
 "git init [-q | --quiet] [--bare] [--template=<direktori-templat>][--"
 "shared[=<perizinan>]] [<direktori>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "perizinan"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 "tentukan bahwa repositori git untuk dibagikan di antara beberapa pengguna"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "timpa nama cabang asal"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr ""
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "tentukan algoritma hash yang akan digunakan"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir dan --bare saling eksklusif"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "tidak dapat membuat direktori %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "tidak dapat mengganti direktori ke %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr ""
 "%s (atau --work-tree=<direktori>) tidak diperbolehkan tanpa sebutkan %s "
-"(atau--git-dir=<direktori>)"
+"(atau --git-dir=<direktori>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Tidak dapat mengakses pohon kerja '%s'"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir tidak kompatibel dengan repositori bare"
 
@@ -16125,85 +16248,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<rentang>:<berkas> tidak dapat digunakan dengan spek jalur"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Keluaran terakhir: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: berkas jelek"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "tidak dapat membaca objek %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "tipe tidak dikenal: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: sampul tidak valid dari mode deskripsi"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers tanpa nilai"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "tidak dapat membuka berkas tambalan %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "butuh tepatnya satu rentang"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "bukan sebuah rentang"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "sampul surat butuh format email"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "gagal membuat berkas sampul surat"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to gila: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opsi>] [<sejak> | <rentang revisi>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "dua direktori keluaran?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "komit tidak dikenal %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "gagal menguraikan '%s' sebagai referensi valid"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "tidak dapat menemukan dasar penggabungan eksak"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16215,292 +16338,292 @@
 "Atau Anda dapat menyebutkan dasar komit secara manual dengan --base=<id "
 "dasar komit>"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "tidak dapat menemukan dasar penggabungan eksak"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "dasar komit seharusnya menjadi leluhur daftar revisi"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "dasar komit tidak seharusnya dalam daftar revisi"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "tidak dapat mendapatkan id tambalan"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "gagal menduga asal range-diff dari seri saat ini"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "menggunakan '%s' sebagai asal range-diff dari seri saat ini"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "gunakan [PATCH n/m] bahkan dengan satu tambalan"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "gunakan [PATCH] bahkan dengan banyak tambalan"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "cetak tambalan ke keluaran standar"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "buat sampul surat"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "gunakan urutan bilangan sederhana untuk keluarkan nama berkas"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "gunakan <akhiran> daripada '.patch'"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "mulai menomorkan tambalan pada <n> daripada 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr ""
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "tandai seri sebagai gulung ulang ke-N"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "panjang nama berkas keluaran maksimum"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "gunakan [RFC PATCH] daripada [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-mode"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "buat bagian dari sampul surat berdasarkan deskripsi cabang"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "gunakan [<prefix>] daripada [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "simpan hasil berkas di <direktori>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "jangan copot/tambah [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "jangan keluarkan diff biner"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "keluarkan hash semua-nol di kepala From"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "jangan termasuk tambalan yang cocok dengan komit hulu"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "perlihatkan format tambalan daripada asali (tambalan + stat)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "Perpesanan"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "kepala"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "tambahkan kepala email"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "email"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "tambahkan kepala To:"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "tambahkan kepala Cc:"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "setel alamat From ke <identitas> (atau identitas pengkomit jika tidak ada)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "buat surat pertama balasan ke <id pesan>"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "perbatasan"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "lampirkan tambalan"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "bariskan tambalan"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "aktifkan utasan pesan, gaya: shallow, deep"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "tanda tangan"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "tambah tanda tangan"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "dasar komit"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "tambahkan info pohon prasyarat ke seri tambalan"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "tambahkan tandatangan dari berkas"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "jangan cetak nama berkas tambalan"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "perlihatkan perkembangan ketika membuat tambalan"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "perlihatkan perubahan terhadap <revisi> di sampul surat atau satu tambalan"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "perlihatkan perubahan terhadap <spek referensi> di sampul surat atau satu "
 "tambalan"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "persentase dimana pembuatan tertimbang"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "baris identitas tidak valid: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n dan -k saling eksklusif"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc dan -k saling eksklusif"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only tidak masuk akal"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status tidak masuk akal"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check tidak masuk akal"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, dan --output-directory saling eksklusif"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff butuh --cover-letter atau satu tambalan"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff terhadap v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor butuh --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff butuh --cover-letter atau satu tambalan"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff terhadap v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "tidak dapat membaca berkas tanda tangan '%s'"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Membuat tambalan"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "tidak dapat membuat berkas keluaran"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<hulu> [<kepala> [<batas>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -16862,14 +16985,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opsi>] [<komit>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "tombol `m' butuh sebuah nilai"
@@ -17012,38 +17127,38 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' tidak menunjuk pada sebuah komit"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Untai branch.%s.mergeoptions jelek: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Tak tangani apapun selain penggabungan dua kepala."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opsi merge-recursive tak dikenal: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "tidak dapat menulis %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Tidak dapat membaca dari '%s'"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Tak mengkomit penggabungan; gunakan 'git commit' untuk menyelesaikan "
 "penggabungan.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17053,11 +17168,11 @@
 "diperlukan, khususnya jika itu menggabungkan hulu terbarui ke cabang\n"
 "topik.\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Pesan kosong membatalkan komit.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17066,72 +17181,72 @@
 "Baris yang diawali dengan '%c' akan diabaikan, dan pesan kosong batalkan\n"
 "komit.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Pesan komit kosong"
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Luar biasa.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "Penggabungan otomatis gagal; selesaikan konflik lalu komit hasilnya.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Tidak ada cabang saat ini."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Tidak ada remote untuk cabang saat ini."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Tidak ada hulu asali yang ditentukan untuk cabang saat ini."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Tidak ada cabang pelacak remote untuk %s dari %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Nilai jelek '%s' dalam lingkungan '%s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "bukan sesuatu yang kami bisa gabungkan di %s: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "bukan sesuatu yang kami bisa gabungkan"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort harap tanpa argumen"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Tidak ada penggabungan yang bisa dibatalkan (MERGE_HEAD hilang)."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit harap tanpa argumen"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue harap tanpa argumen"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Tidak ada penggabungan yang sedang berlangsung (MERGE_HEAD hilang)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17139,7 +17254,7 @@
 "Anda belum mengakhiri penggabungan Anda (MERGE_HEAD ada).\n"
 "Mohon komit perubahan Anda sebelum Anda gabungkan."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17147,89 +17262,89 @@
 "Anda belum mengakhiri pemetikan ceri Anda (CHERRY_PICK_HEAD ada).\n"
 "Mohon komit perubahan Anda sebelum Anda gabungkan."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Anda belum mengakhiri pemetikan ceri Anda (CHERRY_PICK_HEAD ada)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Anda tidak dapat menggabungkan --squash dengan --no-ff."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "Anda tidak dapat menggabungkan --squash dengan --commit"
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "Tidak ada komit yang disebutkan dan merge.defaultToUpstream tidak disetel."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "Lumat komit ke kepala kosong belum didukung"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Komit nir maju cepat tidak masuk akal ke kepala kosong"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - bukan sesuatu yang kami bisa gabungkan"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Hanya bisa menggabungkan tepantnya satu komit ke kepala kosong"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "menolak menggabungkan riwayat tak terkait"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Memperbarui %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Mencoba penggabungan dalam indeks yang sangat sepele\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Tidak.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Tidak mungkin untuk maju cepat, batalkan."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Memutar ulang pohon ke asli...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Mencoba strategi penggabungan %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Tidak ada strategi yang menangani penggabungan.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Penggabungan dengan strategi %s gagal.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Menggunakan %s untuk menyiapkan penyelesaian dengan tangan.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Menggunakan strategi %s untuk menyiapkan penyelesaian dengan tangan.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -17327,7 +17442,7 @@
 "larger than this size"
 msgstr ""
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr ""
@@ -17849,7 +17964,7 @@
 msgid "read object names from the standard input"
 msgstr ""
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr ""
 
@@ -17865,404 +17980,404 @@
 msgid "use notes from <notes-ref>"
 msgstr ""
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr ""
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
 "pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr ""
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr ""
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr ""
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
 "hash> <uri>' (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr ""
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr ""
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr ""
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr ""
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr ""
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr ""
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr ""
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr ""
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr ""
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr ""
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr ""
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr ""
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr ""
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr ""
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr ""
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr ""
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr ""
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr ""
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr ""
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr ""
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr ""
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18477,21 +18592,21 @@
 "--rebase, --no-rebase, atau --ff-only pada baris perintah untuk menimpa\n"
 "asali terkonfigurasi untuk setiap invokasi.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Memperbarui cabang yang belum lahir dengan perubahan yang ditambahkan ke "
 "indeks."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "tarik dengan pendasaran ulang"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "mohon komit atau stase itu."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18501,7 +18616,7 @@
 "fetch memperbarui kepala cabang saat ini.\n"
 "memajukan-cepat pohon kerja Anda dari komit %s."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18518,15 +18633,15 @@
 "$ git reset --hard\n"
 "untuk memulihkan."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Tidak dapat menggabungkan banyak cabang ke kepala kosong."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Tidak dapat mendasarkan ulang pada banyak cabang."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "tidak dapat mendasarkan ulang dengan modifikasi submodul yang terekam lokal."
@@ -18592,7 +18707,7 @@
 "\n"
 "    git push %s HEAD:<nama-cabang-remote>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -18605,12 +18720,19 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Cabang saat ini %s punya banyak cabang hulu, tolak dorong. "
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Anda tidak sebutkan spek referensi apapun untuk didorong, dan push.default "
+"yaitu \"nothing\""
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -18621,14 +18743,7 @@
 "cabang Anda saat ini '%s', tanpa beri tahu saya apa yang harus\n"
 "didorong untuk perbarui cabang remote yang mana."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Anda tidak sebutkan spek referensi apapun untuk didorong, dan push.default "
-"yaitu \"nothing\""
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -18640,7 +18755,7 @@
 "'git pull') sebelum dorong lagi.\n"
 "Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -18652,7 +18767,7 @@
 "remote (seperti 'git pull') sebelum dorong lagi.\n"
 "Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -18666,11 +18781,11 @@
 "perubahan remote (seperti 'git pull') sebelum dorong lagi.\n"
 "Lihat 'Note about fast-forwards' di 'git push --help' untuk selengkapnya."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Pembaruan ditolak karena tag sudah ada di remote."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -18680,7 +18795,7 @@
 "non komit atau memperbarui referensi remote agar itu memnunjuk ke\n"
 "objek non komit, tanpa menggunakan opsi '--force'.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -18692,103 +18807,103 @@
 "integrasikan perubahan tersebut ke lokal (seperti 'git pull...')\n"
 "sebelum memaksa pembaruan.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Mendorong ke %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "gagal dorong beberapa referensi ke '%s'"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "repositori"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "dorong semua referensi"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "cermin semua referensi"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "hapus referensi"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "dorong tag (tidak dapat digunakan dengan --all atau --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "paksa pembaruan"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<nama referensi>:<harapan>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "memerlukan nilai lama referensi berada pada nilai saat ini"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "memerlukan pembaruan remote diintegrasikan ke lokal"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "kontrol dorong rekursif submodul"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "gunakan paket tipis"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "program terima paket"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "setel hulu untuk git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "buang referensi terhapus lokal"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "lewati kait pra-dorong"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "dorong tag yang hilang tapi relevan"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "Tandatangan GPG dorong"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "minta transaksi atomik pada sisi remote"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete tidak kompatibel dengan --all, --mirror dan --tags "
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete tidak masuk akal tanpa referensi"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "repositori jelek '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -18810,27 +18925,27 @@
 "\n"
 "    git push <nama>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all dan --tags tidak kompatibel"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all tidak dapat digabung dengan spek referensi"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror dan --tags tidak kompatibel"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror tidak dapat digabungkan dengan spek referensi"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all dan --mirror tidak kompatibel"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "opsi dorong harus tidak ada karakter baris baru"
 
@@ -19408,7 +19523,7 @@
 msgstr ""
 "Aksi --edit-todo hanya dapat digunakan selama pendasaran ulang interaktif."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Tidak dapat membaca HEAD"
 
@@ -19516,8 +19631,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "fatal: tidak ada cabang/komit seperti '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Tidak ada referensi seperti: %s"
@@ -19587,7 +19702,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr ""
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -19604,7 +19719,7 @@
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -19616,11 +19731,11 @@
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr ""
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr ""
 
@@ -20580,15 +20695,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr ""
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr ""
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr ""
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr ""
@@ -20740,19 +20855,19 @@
 msgid "Could not write new index file."
 msgstr "Tidak dapat menulis berkas indeks baru."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr ""
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr ""
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr ""
 
@@ -20772,6 +20887,18 @@
 msgid "output in stuck long form"
 msgstr ""
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr ""
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr ""
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr ""
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -20781,91 +20908,135 @@
 "Run \"git rev-parse --parseopt -h\" for more information on the first usage."
 msgstr ""
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr ""
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr ""
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr ""
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr ""
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr ""
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
-msgstr ""
+msgstr "git revert [<opsi>] <mirip-komit>..."
 
 #: builtin/revert.c:25
 msgid "git revert <subcommand>"
-msgstr ""
+msgstr "git revert <subperintah>"
 
 #: builtin/revert.c:30
 msgid "git cherry-pick [<options>] <commit-ish>..."
-msgstr ""
+msgstr "git cherry-pick [<opsi>] <mirip-komit>..."
 
 #: builtin/revert.c:31
 msgid "git cherry-pick <subcommand>"
-msgstr ""
+msgstr "git cherry-pick <subperintah>"
 
 #: builtin/revert.c:72
 #, c-format
 msgid "option `%s' expects a number greater than zero"
-msgstr ""
+msgstr "opsi `%s' harap sebuah angka lebih dari nol"
 
 #: builtin/revert.c:92
 #, c-format
 msgid "%s: %s cannot be used with %s"
-msgstr ""
+msgstr "%s: %s tidak dapat digunakan dengan %s"
 
 #: builtin/revert.c:102
 msgid "end revert or cherry-pick sequence"
-msgstr ""
+msgstr "akhiri rangkaian pembalikan atau pemetikan ceri"
 
 #: builtin/revert.c:103
 msgid "resume revert or cherry-pick sequence"
-msgstr ""
+msgstr "lanjutkan rangkaian pembalikan atau pemetikan ceri"
 
 #: builtin/revert.c:104
 msgid "cancel revert or cherry-pick sequence"
-msgstr ""
+msgstr "batalkan rangkaian pembalikan atau pemetikan ceri"
 
 #: builtin/revert.c:105
 msgid "skip current commit and continue"
-msgstr ""
+msgstr "lewati komit saat ini dan lanjutkan"
 
 #: builtin/revert.c:107
 msgid "don't automatically commit"
-msgstr ""
+msgstr "jangan komit otomatis"
 
 #: builtin/revert.c:108
 msgid "edit the commit message"
-msgstr ""
+msgstr "sunting pesan komit"
 
 #: builtin/revert.c:111
 msgid "parent-number"
-msgstr ""
+msgstr "nomor-induk"
 
 #: builtin/revert.c:112
 msgid "select mainline parent"
-msgstr ""
+msgstr "pilih induk garis utama"
 
 #: builtin/revert.c:114
 msgid "merge strategy"
-msgstr ""
+msgstr "strategi penggabungan"
 
 #: builtin/revert.c:116
 msgid "option for merge strategy"
-msgstr ""
+msgstr "opsi untuk strategi penggabungan"
 
 #: builtin/revert.c:125
 msgid "append commit name"
-msgstr ""
+msgstr "tambahkan nama komit"
 
 #: builtin/revert.c:127
 msgid "preserve initially empty commits"
-msgstr ""
+msgstr "pertahankan komit kosong awal"
 
 #: builtin/revert.c:129
 msgid "keep redundant, empty commits"
-msgstr ""
+msgstr "simpan komit kosong mubazir"
 
 #: builtin/revert.c:237
 msgid "revert failed"
-msgstr ""
+msgstr "pembalikan gagal"
 
 #: builtin/revert.c:250
 msgid "cherry-pick failed"
-msgstr ""
+msgstr "pemetikan ceri gagal"
 
 #: builtin/rm.c:20
 msgid "git rm [<options>] [--] <file>..."
@@ -20979,60 +21150,60 @@
 
 #: builtin/shortlog.c:16
 msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
-msgstr ""
+msgstr "git shortlog [<opsi>] [<rentang revisi>] [[--] <jalur>...]"
 
 #: builtin/shortlog.c:17
 msgid "git log --pretty=short | git shortlog [<options>]"
-msgstr ""
+msgstr "git log --pretty=short | git shortlog [<opsi>]"
 
 #: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
-msgstr ""
+msgstr "menggunakan banyak opsi --group dengan masukan standar tidak didukung"
 
 #: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
-msgstr ""
+msgstr "mengguanakn --group=trailer dengan stdin tidak didukung"
 
 #: builtin/shortlog.c:323
 #, c-format
 msgid "unknown group type: %s"
-msgstr ""
+msgstr "tipe kelompok tidak dikenal: %s"
 
 #: builtin/shortlog.c:351
 msgid "group by committer rather than author"
-msgstr ""
+msgstr "kelompokkan oleh pengkomit daripada pengarang"
 
 #: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
-msgstr ""
+msgstr "urutkan keluaran berdasarkan jumlah komit per pengarang"
 
 #: builtin/shortlog.c:356
 msgid "suppress commit descriptions, only provides commit count"
-msgstr ""
+msgstr "sembunyikan deskripsi komit, hanya sediakan hitungan komit"
 
 #: builtin/shortlog.c:358
 msgid "show the email address of each author"
-msgstr ""
+msgstr "perlihatkan alamat email setiap pengarang"
 
 #: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
-msgstr ""
+msgstr "<w>[,<i1>[,<i2>]]"
 
 #: builtin/shortlog.c:360
 msgid "linewrap output"
-msgstr ""
+msgstr "bungkus-baris keluaran"
 
 #: builtin/shortlog.c:362
 msgid "field"
-msgstr ""
+msgstr "bidang"
 
 #: builtin/shortlog.c:363
 msgid "group by field"
-msgstr ""
+msgstr "kelompokkan oleh bidang"
 
 #: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
-msgstr ""
+msgstr "terlalu banyak argumen diberikan di luar repositori"
 
 #: builtin/show-branch.c:13
 msgid ""
@@ -21041,178 +21212,189 @@
 "\t\t[--more=<n> | --list | --independent | --merge-base]\n"
 "\t\t[--no-name | --sha1-name] [--topics] [(<rev> | <glob>)...]"
 msgstr ""
+"git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
+"\t\t[--current] [--color[=<kapan>] | --no-color] [--sparse]\n"
+"\t\t[--more=<n> | --list | --independent | --merge-base]\n"
+"\t\t[--no-name | --sha1-name] [--topics] [(<revisi> | <glob>)...]"
 
 #: builtin/show-branch.c:17
 msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]"
-msgstr ""
+msgstr "git show-branch (-g | --reflog)[=<n>[,<dasar>]] [--list] [<referensi>]"
 
 #: builtin/show-branch.c:395
 #, c-format
 msgid "ignoring %s; cannot handle more than %d ref"
 msgid_plural "ignoring %s; cannot handle more than %d refs"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "mengabaikan %s; tidak dapat menangani lebih dari %d referensi"
+msgstr[1] "mengabaikan %s; tidak dapat menangani lebih dari %d referensi"
 
 #: builtin/show-branch.c:548
 #, c-format
 msgid "no matching refs with %s"
-msgstr ""
+msgstr "tidak ada referensi yang cocok dengan %s"
 
 #: builtin/show-branch.c:645
 msgid "show remote-tracking and local branches"
-msgstr ""
+msgstr "perlihatkan cabang pelacak remote dan lokal"
 
 #: builtin/show-branch.c:647
 msgid "show remote-tracking branches"
-msgstr ""
+msgstr "perlihatkan cabang pelacak remote"
 
 #: builtin/show-branch.c:649
 msgid "color '*!+-' corresponding to the branch"
-msgstr ""
+msgstr "warna '*!+-' bersesuaian pada cabang"
 
 #: builtin/show-branch.c:651
 msgid "show <n> more commits after the common ancestor"
-msgstr ""
+msgstr "perlihatkan <n> komit lagi setelah nenek moyang yang sama"
 
 #: builtin/show-branch.c:653
 msgid "synonym to more=-1"
-msgstr ""
+msgstr "sinonim untuk more=-1"
 
 #: builtin/show-branch.c:654
 msgid "suppress naming strings"
-msgstr ""
+msgstr "sembunyikan untai penamaan"
 
 #: builtin/show-branch.c:656
 msgid "include the current branch"
-msgstr ""
+msgstr "masukkan cabang saat ini"
 
 #: builtin/show-branch.c:658
 msgid "name commits with their object names"
-msgstr ""
+msgstr "namai komit dengan nama objeknya"
 
 #: builtin/show-branch.c:660
 msgid "show possible merge bases"
-msgstr ""
+msgstr "perlihatkan dasar penggabungan yang mungkin"
 
 #: builtin/show-branch.c:662
 msgid "show refs unreachable from any other ref"
 msgstr ""
+"perlihatkan referensi yang tidak dapat dicapai dari referensi yang lainnya"
 
 #: builtin/show-branch.c:664
 msgid "show commits in topological order"
-msgstr ""
+msgstr "perlihatkan komit dalam urutan topologis"
 
 #: builtin/show-branch.c:667
 msgid "show only commits not on the first branch"
-msgstr ""
+msgstr "hanya perlihatkan komit yang bukan pada cabang pertama"
 
 #: builtin/show-branch.c:669
 msgid "show merges reachable from only one tip"
-msgstr ""
+msgstr "perlihatkan penggabungan yang bisa dicapai hanya dari satu ujung"
 
 #: builtin/show-branch.c:671
 msgid "topologically sort, maintaining date order where possible"
-msgstr ""
+msgstr "urutkan secara topologis, pelihara urutan tanggal bila memungkinkan"
 
 #: builtin/show-branch.c:674
 msgid "<n>[,<base>]"
-msgstr ""
+msgstr "<n>[,<dasar>]"
 
 #: builtin/show-branch.c:675
 msgid "show <n> most recent ref-log entries starting at base"
-msgstr ""
+msgstr "perlihatkan <n> entri ref-log terkini dimulai dari dasar"
 
 #: builtin/show-branch.c:711
 msgid ""
 "--reflog is incompatible with --all, --remotes, --independent or --merge-base"
 msgstr ""
+"--reflog tidak kompatibel dengan --all, --remotes, --independent atau --"
+"merge-base"
 
 #: builtin/show-branch.c:735
 msgid "no branches given, and HEAD is not valid"
-msgstr ""
+msgstr "tidak ada cabang yang diberikan, dan HEAD tidak valid"
 
 #: builtin/show-branch.c:738
 msgid "--reflog option needs one branch name"
-msgstr ""
+msgstr "opsi --reflog butuh satu nama cabang"
 
 #: builtin/show-branch.c:741
 #, c-format
 msgid "only %d entry can be shown at one time."
 msgid_plural "only %d entries can be shown at one time."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "hanya %d entri yang bisa diperlihatkan pada satu waktu."
+msgstr[1] "hanya %d entri yang bisa diperlihatkan pada satu waktu."
 
 #: builtin/show-branch.c:745
 #, c-format
 msgid "no such ref %s"
-msgstr ""
+msgstr "tidak ada referensi seperti %s"
 
 #: builtin/show-branch.c:831
 #, c-format
 msgid "cannot handle more than %d rev."
 msgid_plural "cannot handle more than %d revs."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "tidak dapat menangani lebih dari %d revisi."
+msgstr[1] "tidak dapat menangani lebih dari %d revisi."
 
 #: builtin/show-branch.c:835
 #, c-format
 msgid "'%s' is not a valid ref."
-msgstr ""
+msgstr "'%s' bukan sebuah referensi yang valid."
 
 #: builtin/show-branch.c:838
 #, c-format
 msgid "cannot find commit %s (%s)"
-msgstr ""
+msgstr "tidak dapat menemukan komit %s (%s)"
 
 #: builtin/show-index.c:21
 msgid "hash-algorithm"
-msgstr ""
+msgstr "algoritma hash"
 
 #: builtin/show-index.c:31
 msgid "Unknown hash algorithm"
-msgstr ""
+msgstr "algoritma hash tidak dikenal"
 
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
 "hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
 msgstr ""
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pola>...]"
 
 #: builtin/show-ref.c:13
 msgid "git show-ref --exclude-existing[=<pattern>]"
-msgstr ""
+msgstr "git show-ref --exclude-existing[=<pola>]"
 
 #: builtin/show-ref.c:162
 msgid "only show tags (can be combined with heads)"
-msgstr ""
+msgstr "hanya perlihatkan tag (bisa dikombinasikan dengan kepala)"
 
 #: builtin/show-ref.c:163
 msgid "only show heads (can be combined with tags)"
-msgstr ""
+msgstr "hanya perlihatkan kepala (bisa dikombinasikan dengan tag)"
 
 #: builtin/show-ref.c:164
 msgid "stricter reference checking, requires exact ref path"
-msgstr ""
+msgstr "pemeriksaan referensi lebih ketat, butuh jalur referensi eksak"
 
 #: builtin/show-ref.c:167 builtin/show-ref.c:169
 msgid "show the HEAD reference, even if it would be filtered out"
-msgstr ""
+msgstr "perlihatkan referensi HEAD, bahkan jika itu akan disaring"
 
 #: builtin/show-ref.c:171
 msgid "dereference tags into object IDs"
-msgstr ""
+msgstr "dereferensi tag ke dalam ID objek"
 
 #: builtin/show-ref.c:173
 msgid "only show SHA1 hash using <n> digits"
-msgstr ""
+msgstr "hanya perlihatkan hash SHA1 menggunakan <n> digit"
 
 #: builtin/show-ref.c:177
 msgid "do not print results to stdout (useful with --verify)"
-msgstr ""
+msgstr "jangan cetak hasil ke keluaran standar (berguna dengan --verify)"
 
 #: builtin/show-ref.c:179
 msgid "show refs from stdin that aren't in local repository"
 msgstr ""
+"perlihatkan referensi dari masukan standar yang tidak ada dalam repositori "
+"lokal"
 
 #: builtin/sparse-checkout.c:22
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
@@ -21259,37 +21441,37 @@
 msgid "failed to open '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr ""
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr ""
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr ""
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr ""
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr ""
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr ""
 
@@ -21313,10 +21495,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <nama cabang> [<stase>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -21467,95 +21645,95 @@
 msgid "only show untracked files in the stash"
 msgstr "hanya perlihatkan berkas tak terlacak dalam stase"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Tidak dapat memperbarui %s dengan %s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "pesan stase"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" butuh satu argumen <komit>"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Tidak ada perubahan yang dipilih"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Anda belum punya komit awal"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Tidak dapat menyimpan keadaan indeks saat ini"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Tidak dapat menyimpan berkas tak terlacak"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Tidak dapat menyimpang keadaan pohon kerja saat ini"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Tidak dapat merekam keadaan pohon kerja"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr ""
 "Tidak dapat menggunakan --patch dan --include-untracked atau --all pada "
 "waktu yang bersamaan"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Anda lupa untuk 'git add'?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Tidak ada perubahan lokal untuk disimpan"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Tidak dapat menginisialisasi stase"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Tidak dapat menyimpan status saat ini"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Direktori kerja dan keadaan indeks %s disimpan"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Tidak dapat menghapus perubahaan pohon kerja"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "jaga indeks"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "stase dalam mode tambalan"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "mode hening"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "masukkan berkas tak terlacak ke dalam stase"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "masukkan berkas ignore"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21579,41 +21757,42 @@
 msgid "prepend comment character and space to each line"
 msgstr ""
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Mengharapkan nama referensi penuh, dapat %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote tidak membutuhkan argumen"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "tidak dapat mencopot satu komponen dari url '%s'"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "jangkar alternatif untuk jalur relatif"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<jalur>] [<jalur>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr ""
 "Tidak ada url yang ditemukan untuk jalur submodul '%s' dalam .gitmodules"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Memasuki '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -21622,7 +21801,7 @@
 "run_command mengembalikan status bukan nol untuk %s\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -21633,21 +21812,21 @@
 "bersarang %s\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "sembunyikan keluaran memasuki setiap perintah submodul"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "rekursi ke dalam submodul bersarang"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr ""
 "git submodule--helper foreach [--quiet] [--recursive] [--] [<perintah>]"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -21656,54 +21835,54 @@
 "tidak dapat mencari konfigurasi '%s'. Asumsi bahwa repositori ini adalah "
 "hulu otoritatif tersendiri."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Gagal mendaftarkan url untuk jalur submodul '%s'"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submodul '%s' (%s) didaftarkan untuk jalur '%s'\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "peringatan: perintah mode pembaruan disarankan untuk submodul '%s'\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Gagal mendaftarkan mode pembaruan untuk jalur submodul '%s'"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "sembunyikan keluaran menginisialisasi submodul"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<opsi>] [<jalur>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "tidak ada pemetaan submodul ditemukan di .gitmodules untuk jalur '%s'"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "tidak dapat menguraikan referensi HEAD di dalam submodul '%s'"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "gagal merekursi ke dalam submodul '%s'"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "sembunyikan keluaran status submodul"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -21711,97 +21890,96 @@
 "gunakan komit yang disimpan di dalam indeks daripada yang disimpan di dalam "
 "HEAD"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<jalur>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
-msgstr "git submodule==helper name <jalur>"
+msgstr "git submodule--helper name <jalur>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodul)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodul)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "tidak dapat hash objek dari '%s'"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "mode tidak diharapkan %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "gunakan komit yang disimpan di dalam indeks daripada HEAD submodul"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr ""
-"untuk membandingkan komit di dalam indeks dengan yang di dalam HEAD submodul"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "bandingkan komit di dalam indeks dengan yang di dalam HEAD submodul"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "lewatkan submodul dengan nilai 'ignore_config' disetel ke 'all'"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "batasi ukuran ringkasan"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<opsi>] [<commit>] -- [<jalur>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "tidak dapat mengambil revisi untuk HEAD"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached dan --files saling eksklusif"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Mensinkronisasi url submodul untuk '%s'\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "gagal mendaftarkan url untuk jalur submodul '%s'"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "gagal mendapatkan remote asali untuk submodul '%s'"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "gagal memperbarui remote untuk submodul '%s'"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "sembunyikan keluaran mensinkronisasi url submodul"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<jalur>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -21810,7 +21988,7 @@
 "Pohon kerja submodul '%s' berisi direktori .git (gunakan 'rm -rf' bila Anda "
 "benar-benar ingin menghapus itu termasuk semua riwayatnya)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -21819,46 +21997,46 @@
 "Pohon kerja submodul '%s' berisi modifikasi lokal; gunakan '-f' untuk "
 "menyingkirkan itu"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Direktori '%s' dibersihkan\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Tidak dapat menghapus pohon kerja submodul '%s'\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "tidak dapat membuat direktori submodul kosong %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submodul '%s' (%s) tak terdaftar untuk jalur '%s'\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr "hapus pohon kerja submodul bahkan jika itu berisi perubahan lokal"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "batal daftar semua submodul"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<jalur>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 "Gunakan '--all' jika Anda benar-benar ingin deinisialisasi semua submodul"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -21870,46 +22048,68 @@
 " itu, setel submodule.alternateErrorStrategy ke 'info' atau yang sama,\n"
 "kloning degan '--reference-if-able' daripada '--reference'."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "submodul '%s' tidak dapat menambahkan pengganti: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Nilai '%s' untuk submodule.alternateErrorStrategy tidak dikenal"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Nilai '%s' untuk submodule.alternateLocation tidak dikenal"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
+"menolak membuat/menggunakan '%s' di dalam direktori git submodul yang lain"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "gagal mengkloning '%s' ke dalam jalur submodul '%s'"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "direktori tidak kosong: '%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "tidak dapat mendapatkan direktori submodul untuk '%s'"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "di mana submodul baru akan dikloning"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "nama submodul baru"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "url di mana submodul dikloning"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "kedalaman untuk kloning dangkal"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "paksa perkembangan kloning"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "tak perbolehkan kloning ke dalam direktori bukan kosong"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -21919,103 +22119,82 @@
 "<repositori>] [--name <nama>] [--depth <kedalaman>] [--single-branch] --url "
 "<url> --path <jalur>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr ""
-"menolak membuat/menggunakan '%s' di dalam direktori git submodul yang lain"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "gagal mengkloning '%s' ke dalam jalur submodul '%s'"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "direktori tidak kosong: '%s'"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "tidak dapat mendapatkan direktori submodul untuk '%s'"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Mode pembaruan '%s' tidak valid untuk jalur submodul '%s'"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr "Mode pembaruan '%s' tidak valid untuk jalur submodul '%s'"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Jalur submodul '%s' tidak diinisialisasi"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Mungkin Anda ingin menggunakan 'update --init'?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Melewati submodul tak tergabung %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Melewati submodul '%s'"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Gagal mengkloning '%s'. Percobaan ulang dijadwalkan"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Gagal mengkloning '%s' untuk kedua kalinya, batalkan"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "jalur ke dalam pohon kerja"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "jalur ke dalam pohon kerja, melintasi perbatasan submodul bersarang"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "dasarkan ulang, gabungkan, checkout atau tidak sama sekali"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "buat klon dangkal terpotong hingga sejumlah revisi yang disebutkan"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "pekerjaan paralel"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "apakah klon awal seharusnya mengikuti rekomendasi dangkal"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "jangan cetak perkembangan pengkloningan"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<jalur>] [<jalur>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "nilai jelek untuk parameter pembaruan"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22024,84 +22203,142 @@
 "Cabang submodul (%s) dikonfigurasikan untuk mewarisi cabang dari proyek "
 "super, tapi proyek super tidak pada cabang apapun"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "tidak dapat mendapat pegangan repositori untuk submodul '%s'"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "rekursi ke dalam submodul"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
-msgstr "giit submodule--helper absorb-git-dirs [<opsi>] [<jalur>...]"
+msgstr "git submodule--helper absorb-git-dirs [<opsi>] [<jalur>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "periksa apakah itu aman untuk menulis ke berkas .gitmodules"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "batal setel konfigurasi dalam berkas .gitmodules"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <nama> [<nilai>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <nama>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "mohom pastikan berkas .gitmodules di dalam pohon kerja"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "sembunyikan keluaran penyetelan url submodule"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <jalur> <url baru>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "setel cabang pelacak asali ke master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "setel cabang pelacak asali"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <jalur>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <cabang> <jalur>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "--branch atau --default dibutuhkan"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch dan --default saling eksklusif"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Menambahkan repo yang sudah ada pada '%s' ke indeks\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' sudah ada dan bukan repo git valid"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "Sebuah direktori git untuk '%s' ditemukan lokal dengan remote:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Jika Anda ingin menggunakan ulang direktori git lokal ini daripada "
+"mengkloning lagi dari\n"
+"  %s\n"
+"gynakan opsi '--force'. Jika direktori git lokal bukan repo yang benar\n"
+"atau Anda tidak yakin apa maksudnya, pilih nama yang lain dengan opsi "
+"'--name'.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Mengaktifkan ulang direktori git lokal untuk submodul '%s'\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "Tidak dapat men-checkout submodul '%s'"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "cabang repositori untuk di-checkout saat kloning"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "perbolehkan menambah jalur submodul yang diabaikan"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<opsi>...] --url <url> --path <path> "
+"--name <nama>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s tidak mendukung --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' bukan subperintah submodule--helper valid"
@@ -22712,7 +22949,7 @@
 msgid "git worktree unlock <path>"
 msgstr ""
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr ""
@@ -22722,59 +22959,63 @@
 msgid "Removing %s/%s: %s"
 msgstr ""
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr ""
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr ""
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr ""
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
 "use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
 "use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr ""
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr ""
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr ""
@@ -22799,147 +23040,155 @@
 msgid "keep the new working tree locked"
 msgstr ""
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr ""
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr ""
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr ""
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr ""
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr ""
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr ""
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr ""
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr ""
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr ""
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr ""
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr ""
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr ""
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr ""
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr ""
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr ""
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr ""
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr ""
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr ""
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr ""
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr ""
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr ""
@@ -23262,7 +23511,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr ""
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23309,95 +23558,95 @@
 msgid "redirecting to %s"
 msgstr ""
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr ""
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr ""
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr ""
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr ""
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr ""
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr ""
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr ""
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr ""
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr ""
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr ""
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
@@ -24232,124 +24481,88 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr ""
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr ""
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr ""
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr ""
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr ""
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr ""
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr ""
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr ""
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
@@ -24940,86 +25153,86 @@
 msgid "invalid argument %s, expecting --"
 msgstr ""
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr ""
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr ""
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr ""
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr ""
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr ""
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr ""
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
 "Set sendemail.forbidSendmailVariables to false to disable this check.\n"
 msgstr ""
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr ""
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr ""
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr ""
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr ""
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25029,29 +25242,29 @@
 "    * Giving --format-patch option if you mean a range.\n"
 msgstr ""
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr ""
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
 "\n"
 msgstr ""
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr ""
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr ""
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -25060,37 +25273,37 @@
 "Clear the body content if you don't wish to send a summary.\n"
 msgstr ""
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr ""
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr ""
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr ""
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr ""
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr ""
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr ""
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -25099,20 +25312,20 @@
 "want to send.\n"
 msgstr ""
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr ""
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr ""
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr ""
@@ -25120,16 +25333,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr ""
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr ""
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25146,112 +25359,112 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr ""
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr ""
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr ""
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr ""
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr ""
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr ""
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr ""
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr ""
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr ""
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr ""
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr ""
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr ""
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -25259,29 +25472,38 @@
 "warning: no patches were sent\n"
 msgstr ""
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr ""
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
 "warning: no patches were sent\n"
 msgstr ""
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr ""
 
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
+
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
+
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
+
 #~ msgid "Already up to date. Yeeah!"
 #~ msgstr "Sudah terbaru. Ya!"
 
diff --git a/po/it.po b/po/it.po
index 8f79365..02a8c2b 100644
--- a/po/it.po
+++ b/po/it.po
@@ -14953,7 +14953,7 @@
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr ""
-"--filter può essere usato solo con il remoto configurato nelle estensioni."
+"--filter può essere usato solo con il remoto configurato nelle extensions."
 "partialclone"
 
 #: builtin/fetch.c:1891
@@ -19253,7 +19253,7 @@
 
 #: builtin/rebase.c:474
 msgid "git rebase--interactive [<options>]"
-msgstr "git rebase --interactive [<opzioni>]"
+msgstr "git rebase--interactive [<opzioni>]"
 
 #: builtin/rebase.c:487 builtin/rebase.c:1382
 msgid "keep commits which start empty"
@@ -21746,7 +21746,7 @@
 msgstr "impossibile generare il diff %s^!"
 
 #: builtin/stash.c:422
-msgid "conflicts in index.Try without --index."
+msgid "conflicts in index. Try without --index."
 msgstr "ci sono conflitti nell'indice. Prova senza --index."
 
 #: builtin/stash.c:428
diff --git a/po/ko.po b/po/ko.po
index dcfe21c..766d460 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1702,7 +1702,7 @@
 "Found errors in 'diff.dirstat' config variable:\n"
 "%s"
 msgstr ""
-"'diff.submodule' 설정 변수에 오류:\n"
+"'diff.dirstat' 설정 변수에 오류:\n"
 "%s'"
 
 #: diff.c:3823
@@ -2261,12 +2261,12 @@
 #: merge-recursive.c:320
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "'%s' 경로에 대해 addinfo_cache 실패. 병합 중지."
+msgstr "'%s' 경로에 대해 add_cacheinfo 실패. 병합 중지."
 
 #: merge-recursive.c:328
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "'%s' 경로에 대해 addinfo_cache 새로 고침 실패. 병합 중지."
+msgstr "'%s' 경로에 대해 add_cacheinfo 새로 고침 실패. 병합 중지."
 
 #: merge-recursive.c:410
 msgid "error building trees"
@@ -10983,7 +10983,7 @@
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
-"커밋 빼오기를 마치지 않았습니다. (COMMIT_PICK_HEAD 있음)\n"
+"커밋 빼오기를 마치지 않았습니다. (CHERRY_PICK_HEAD 있음)\n"
 "병합하기 전에 변경 사항을 커밋하십시오."
 
 #: builtin/merge.c:1257
diff --git a/po/pt_PT.po b/po/pt_PT.po
index f068d0e..b09f162 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -1,5 +1,5 @@
-# Portugual's Portuguese translations for Git package.
-# Copyright (C) 2020 Daniel Santos <hello@brighterdan.com> 
+# Portugal's Portuguese translations for Git package.
+# Copyright (C) 2021 Daniel Santos <hello@brighterdan.com> 
 # This file is distributed under the same license as the Git package.
 # Contributors:
 #   - Daniel Santos <hello@brighterdan.com>
@@ -12,129 +12,210 @@
 #   English                          |  Portuguese
 #   ---------------------------------+--------------------------------------
 #   3-way merge                      |  tri-junção
-#   abbreviate                       |  
-#   alternate object database        |  
-#   amend                            |  
-#   ancestor                         |  
-#   annotated tag                    |  
+#   abbreviate                       |  abreviar
+#   alternate object database        |  base dados de objetos alternativa
+#   amend                            |  emendar
+#   ancestor                         |  antepassado
+#   annotated tag                    |  etiqueta anotada
+#   archive                          |  arquivo
+#   backing store                    |  armazenamento-backup
+#   backward compatibility           |  retrocompatibilidade
 #   bare repository                  |  repositório nú
-#   bisect                           |  
-#   blob object                      |  
-#   bloom filter                     |  
+#   bisect                           |  bisetar
+#   blame                            |  blame
+#   blob object                      |  objeto-blob
 #   branch                           |  ramo 
-#   bundle                           |  
-#   bypass                           |  
-#   cache                            |  cache
-#   chain                            |  
-#   changeset                        |  
-#   checkout                         |  
-#   checksum                         |  
+#   bug                              |  bug
+#   bundle                           |  conjunto
+#   bypass                           |  desviar
+#   cache                            |  cenário
+#   chain                            |  corrente
+#   changeset                        |  memória
+#   checkout                         |  observar
+#   checksum                         |  checksum
 #   cherry-picking                   |  apanhar
-#   clean                            |  
-#   clone                            |  
+#   chunk                            |  fragmento
+#   clean                            |  limpa
+#   clone                            |  clone
 #   commit                           |  memorizar
 #   commit message                   |  mensagem de memória
-#   commit object                    |  objeto da memória
+#   commit object                    |  objeto de memória
 #   commit-ish (also committish)     |  mnemónica
+#   committer                        |  memorizador
 #   conflict                         |  conflito
-#   core Git                         |  
-#   cover letter                     |  
+#   core Git                         |  núcleo-Git
+#   cover letter                     |  carta de apresentação
 #   DAG                              |  DAG
-#   dangling object                  |  objeto DAG
-#   detached HEAD                    |  HEAD solta
+#   dangling object                  |  objeto perdido
+#   detached HEAD                    |  HEAD desanexada
 #   directory                        |  pasta
-#   dirty                            |  
-#   dumb HTTP protocol               |  
-#   evil merge                       |  
-#   fast-forward                     |  
+#   dirty                            |  suja
+#   dumb HTTP protocol               |  protocolo HTTP burro
+#   fanout                           |  fanout
+#   fast-forward                     |  avanço
 #   fetch                            |  buscar
-#   file system                      |  
-#   fork                             |  aforquilhar
-#   Git archive                      |  
-#   gitfile                          |  
-#   grafts                           |  
-#   hash                             |  
+#   file system                      |  sistema de ficheiro
+#   fixup                            |  consertar
+#   fork                             |  ramificar
+#   Git archive                      |  repositório
+#   gitfile                          |  ficheiro-git
+#   grafts                           |  enxertos
+#   hash                             |  hash
 #   HEAD                             |  HEAD
-#   head                             |  
-#   head ref                         |  
+#   head                             |  cabeça
 #   header                           |  cabeçalho
-#   hook                             |  
+#   hook                             |  gancho
 #   hunk                             |  pedaço
-#   index                            |  
-#   index entry                      |  
-#   loose object                     |  
-#   loose refs                       |  
-#   master                           |  
+#   index                            |  cenário
+#   index entry                      |  entrada do cenário
+#   init                             |  inicializar
+#   loose object                     |  objeto solto
+#   loose refs                       |  refs soltas
+#   mark                             |  marca
+#   master                           |  master
 #   merge                            |  junção 
-#   object                           |  
-#   object database                  |  
-#   object identifier                |  
-#   object name                      |  
-#   object type                      |  
-#   octopus                          |  
-#   origin                           |  
-#   pack                             |  
-#   pack index                       |  
-#   packfile                         |  
-#   parent                           |  
-#   patch                            |  
-#   pathspec                         |  
-#   pattern                          |  pattern
-#   pickaxe                          |  
-#   plumbing                         |  
-#   porcelain                        |  
-#   precious-objects repo            |  
-#   prune                            |  
+#   mergetag                         |  etiqueta-junção
+#   object                           |  objeto
+#   object database                  |  base dados de objeto
+#   object name                      |  nome de objeto
+#   object type                      |  tipo de objeto
+#   octopus                          |  polvinho
+#   origin                           |  origin
+#   overlay mode                     |  modo overlay
+#   pack                             |  pacote
+#   pack index                       |  índice de pacote
+#   packfile                         |  ficheiro-pacote
+#   parent                           |  parente
+#   patch                            |  remendo
+#   pathspec                         |  espetro-caminho
+#   pattern                          |  padrão
+#   pickaxe                          |  picareta
+#   plumbing                         |  nuclear
+#   porcelain                        |  porcelana
+#   precious-objects repo            |  repo de objetos preciosos
+#   promisor                         |  promissor
+#   prune                            |  podar
 #   pull                             |  agarrar
 #   push                             |  atirar
-#   reachable                        |  
-#   rebase                           |  
-#   ref                              |  
-#   reflog                           |  
-#   refspec                          |  
-#   remote                           |  
-#   remote-tracking branch           |  
-#   replay                           |  
+#   range                            |  intervalo
+#   reachable                        |  acessível
+#   rebase                           |  rebasear
+#   record                           |  registo
+#   ref                              |  ref
+#   reflog                           |  registo-ref
+#   refspec                          |  espetro-ref
+#   remote                           |  remoto
+#   remote-tracking branch           |  ramo remoto de monitorização
+#   replace object                   |  objeto-substituto
+#   replace ref                      |  ref-substituto
+#   replay                           |  replay
 #   repo                             |  repo
 #   repository                       |  repositório
-#   reset                            |  reposição
-#   resolve                          |  
+#   reset                            |  restabelecer
+#   resolve                          |  resolver
 #   revert                           |  reverter
 #   revision                         |  revisão
-#   rewind                           |  
-#   SCM                              |  
+#   rewind                           |  rebobinar
+#   root commit                      |  memória-raiz
+#   SCM                              |  SCM
 #   SHA-1                            |  SHA-1
-#   shallow repository               |  
-#   signed tag                       |  
-#   smart HTTP protocol              |  
-#   squash                           |  
-#   squelch                          |  suprimir
-#   stage                            |  preparar
-#   stash                            |  arrumos
-#   submodule                        |  
-#   symref                           |  
-#   tag                              |  
-#   tag object                       |  
-#   tagger                           |  
-#   topic branch                     |  
-#   track                            |  seguir
-#   trailer                          |  
-#   tree                             |  
-#   tree object                      |  
-#   tree-ish (also treeish)          |  
-#   unmerged index                   |  
-#   unpack                           |  
-#   unreachable object               |  
-#   unstage                          |  despreparar
+#   shallow repository               |  repositório superficial
+#   signed tag                       |  etiqueta assinada
+#   smart HTTP protocol              |  protocolo HTTP esperto
+#   smudge filter                    |  filtro-mancha
+#   squash                           |  esmagar
+#   squelch                          |  silenciar
+#   stage                            |  cenário
+#   stash                            |  esconderijo
+#   submodule                        |  submódulo
+#   superproject                     |  super-projeto
+#   symref                           |  ref-simbólica
+#   tag                              |  etiqueta
+#   tag object                       |  objeto-etiqueta
+#   tagger                           |  etiquetador
+#   thin pack                        |  pacote-fino
+#   thread                           |  fio
+#   tip                              |  ponta
+#   topic branch                     |  ramo-tópico
+#   track                            |  monitorizar
+#   trailer                          |  atribuições
+#   tree                             |  árvore
+#   tree object                      |  objeto-árvore
+#   tree-ish (also treeish)          |  arvoredo
+#   unmerged                         |  por juntar
+#   unpack                           |  desempacotar
+#   unreachable object               |  objeto inacessível
+#   unstage                          |  desencenar
 #   upstream                         |  upstream
-#   upstream branch                  |  ramo upstream
-#   working tree                     |  
+#   upstream branch                  |  ramo-upstream
+#   viewer                           |  visualizador
+#   wanted-ref                       |  wanted-ref
+#   working directory                |  pasta-trabalho
+#   working tree / worktree          |  árvore-trabalho
+#
+#
+#  Other translation table helper
+#
+#   English                          |  Portuguese
+#   ---------------------------------+--------------------------------------
+#   apply                            |  submeter
+#   ahead                            |  à frente
+#   bind                             |  vincular
+#   broken                           |  quebrado
+#   call                             |  chamar
+#   chain                            |  série
+#   change                           |  alteração
+#   clobber                          |  encobrir
+#   config file                      |  ficheiro config
+#   compress                         |  comprimir
+#   corrupt                          |  rompido
+#   corrupted                        |  roto
+#   debug                            |  depurar
+#   default                          |  predefinido
+#   deflate                          |  esvaziar
+#   delete                           |  apagar
+#   deprecated                       |  obsoleto
+#   dry-run                          |  dry-run
+#   edit                             |  modificação
+#   embedded                         |  embutido
+#   feature                          |  feição
+#   fix                              |  corrigir
+#   given                            |  fornecido
+#   handle                           |  pega
+#   in progress                      |  em curso
+#   inflate                          |  insuflar
+#   named                            |  denominado
+#   nested                           |  encaixado
+#   not supported                    |  insustentado
+#   mainline                         |  principal
+#   mismatch                         |  sem correspondência
+#   overflow                         |  transbordo
+#   parse                            |  processar
+#   path                             |  caminho
+#   register                         |  registar
+#   regular expression               |  expressão comum
+#   repack                           |  reempacotar
+#   save                             |  guardar
+#   set                              |  definir
+#   shell                            |  shell
+#   sparse                           |  disperso
+#   stat                             |  stat
+#   stream                           |  stream
+#   subdirectory                     |  subpasta
+#   support                          |  sustenta
+#   symlink                          |  ligação-simbólica
+#   template                         |  modelo
+#   timestamp                        |  carimbo cronológico
+#   token                            |  token
+#   unset                            |  desdefinir
+#   untrack                          |  desmonitorizar
+#   
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-12-15 16:27+0800\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
 "PO-Revision-Date: 2020-10-14 11:43+0100\n"
 "Last-Translator: Daniel Santos <hello@brighterdan.com>\n"
 "Language-Team: Git L10N Português <https://github.com/git-l10n-pt-PT/>\n"
@@ -149,9 +230,9 @@
 msgid "Huh (%s)?"
 msgstr "O quê (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3284
-#: sequencer.c:3735 sequencer.c:3890 builtin/rebase.c:1532
-#: builtin/rebase.c:1955
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
+#: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "incapaz de ler index"
 
@@ -177,9 +258,9 @@
 #: add-interactive.c:697 add-interactive.c:885
 #, fuzzy, c-format
 msgid "could not stage '%s'"
-msgstr "inacapaz de stage '%s'"
+msgstr "incapaz de stage '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3478
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 #, fuzzy
 msgid "could not write index"
 msgstr "incapaz de escrever index"
@@ -196,7 +277,7 @@
 msgid "note: %s is untracked now.\n"
 msgstr "nota: %s agora está por seguir.\n"
 
-#: add-interactive.c:729 apply.c:4127 builtin/checkout.c:295
+#: add-interactive.c:729 apply.c:4127 builtin/checkout.c:298
 #: builtin/reset.c:145
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
@@ -239,12 +320,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignorando unmerged: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Apenas ficheiros binários mudaram.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Sem modificação.\n"
@@ -273,7 +354,7 @@
 #: add-interactive.c:1016
 #, fuzzy
 msgid "pick hunks and update selectively"
-msgstr "apanha os pedaços e atualiza selectivamente"
+msgstr "apanha os pedaços e atualiza seletivamente"
 
 #: add-interactive.c:1018
 #, fuzzy
@@ -330,11 +411,11 @@
 msgid "(empty) select nothing"
 msgstr "(vazio) seleciona nada"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "E agora"
 
@@ -346,12 +427,13 @@
 msgid "unstaged"
 msgstr "unstaged"
 
-#: add-interactive.c:1144 apply.c:4989 apply.c:4992 builtin/am.c:2257
-#: builtin/am.c:2260 builtin/bugreport.c:134 builtin/clone.c:124
-#: builtin/fetch.c:147 builtin/merge.c:284 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1818
-#: builtin/submodule--helper.c:1821 builtin/submodule--helper.c:2326
-#: builtin/submodule--helper.c:2329 builtin/submodule--helper.c:2572
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
+#: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "path"
@@ -361,7 +443,7 @@
 msgid "could not refresh index"
 msgstr "incapaz de reactualizar o index"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Adeus.\n"
@@ -594,7 +676,7 @@
 #: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1461
 #, fuzzy, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Descartar modo de modficação de index e worktree [y,n,q,a,d%s,?]?"
+msgstr "Descartar modo de modificação de index e worktree [y,n,q,a,d%s,?]?"
 
 #: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1462
 #, fuzzy, c-format, perl-format
@@ -676,36 +758,36 @@
 "a - submeter este pedaço e qualquer próximo deste ficheiro\n"
 "d - declinar este pedaço e qualquer próximo deste ficheiro\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, fuzzy, c-format
 msgid "could not parse hunk header '%.*s'"
-msgstr "incapaz de analisar ínicio de pedaço '%s'"
+msgstr "incapaz de analisar início de pedaço '%s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, fuzzy, c-format
 msgid "could not parse colored hunk header '%.*s'"
-msgstr "incapaz de analizar início de pedaço colorido '%.*s'"
+msgstr "incapaz de analisar início de pedaço colorido '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 #, fuzzy
 msgid "could not parse diff"
 msgstr "incapaz de analisar diff"
 
-#: add-patch.c:438
+#: add-patch.c:439
 #, fuzzy
 msgid "could not parse colored diff"
 msgstr "incapaz de analisar diff colorido"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, fuzzy, c-format
 msgid "failed to run '%s'"
-msgstr "falha ao executar '%s'"
+msgstr "falhou executar '%s'"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "sem match de output de interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -713,7 +795,7 @@
 "O teu filtro tem de manter uma correspondência exata\n"
 "entre seu input e linhas output."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, fuzzy, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -722,7 +804,7 @@
 "linha de contexto esperada #%d em\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -735,11 +817,11 @@
 "\ttermina sem:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Modo de edição manual de pedaço -- ver final para guia rápido.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, fuzzy, c-format
 msgid ""
 "---\n"
@@ -753,7 +835,7 @@
 "Linhas começadas com %c serão removidas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -763,12 +845,12 @@
 "editar. Se todas as linhas deste pedaço forem removidas, então a edição\n"
 "é abortada e este pedaço é deixado inalterado.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 #, fuzzy
 msgid "could not parse hunk header"
 msgstr "incapaz interpretar início de pedaço"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' falhou"
 
@@ -784,27 +866,27 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
-"Problema na submissão de pedaço editado. Editar de novo (responder "
-"\"n\" para \"não\" descarta!) [y/n]? "
+"Problema na submissão de pedaço editado. Editar de novo (responder \"n\" "
+"para \"não\" descarta!) [y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 #, fuzzy
 msgid "The selected hunks do not apply to the index!"
 msgstr "Submissão incorreta de pedaços selecionados para index!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Submetê-los para worktree mesmo assim? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Nada foi submetido.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 #, fuzzy
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
@@ -827,77 +909,77 @@
 "e - editar manualmente o pedaço atual\n"
 "? - mostrar ajuda\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 #, fuzzy
 msgid "No previous hunk"
 msgstr "Sem pedaço anterior"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 #, fuzzy
 msgid "No next hunk"
 msgstr "Sem próximo pedaço"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Sem qualquer outro pedaço"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "ir para qual pedaço (<ret> para ver mais)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "ir para qual pedaço? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, fuzzy, c-format
 msgid "Invalid number: '%s'"
 msgstr "Número inválido: '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, fuzzy, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Lamento, apenas %d pedaço disponível."
 msgstr[1] "Lamento, apenas %d pedaços disponíveis."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Sem outro pedaço a procurar"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "procurar por regex? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, fuzzy, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Pesquisa regexp deformada %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 #, fuzzy
 msgid "No hunk matches the given pattern"
 msgstr "Sem pedaço correspondente ao padrão fornecido"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Lamento, incapaz de dividir este pedaço"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, fuzzy, c-format
 msgid "Split into %d hunks."
 msgstr "Dividir em %d pedaços."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Lamento, incapaz de editar este pedaço"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 #, fuzzy
 msgid "'git apply' failed"
 msgstr "'git apply' falhou"
 
-#: advice.c:143
+#: advice.c:145
 #, c-format
 msgid ""
 "\n"
@@ -906,37 +988,37 @@
 "\n"
 "Desative este mensagem com \"git config advice.%s false\""
 
-#: advice.c:159
+#: advice.c:161
 #, fuzzy, c-format
 msgid "%shint: %.*s%s\n"
 msgstr "%sdica: %.*s%s\n"
 
-#: advice.c:250
+#: advice.c:252
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "Cherry-picking é impossível porque tem ficheiros em separado."
 
-#: advice.c:252
+#: advice.c:254
 msgid "Committing is not possible because you have unmerged files."
 msgstr "Cometer é impossível porque tem ficheiros em separado."
 
-#: advice.c:254
+#: advice.c:256
 msgid "Merging is not possible because you have unmerged files."
 msgstr "Juntar é impossível porque tem ficheiros em separado."
 
-#: advice.c:256
+#: advice.c:258
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "Puxar é impossível porque tem ficheiros em separado."
 
-#: advice.c:258
+#: advice.c:260
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "Reverter é impossível porque tem ficheiros em separado."
 
-#: advice.c:260
+#: advice.c:262
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "É impossível fazer %s porque tem ficheiros em separado."
 
-#: advice.c:268
+#: advice.c:270
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -944,23 +1026,36 @@
 "Corrija-os em worktree, e use 'git add/rm <ficheiro>' apropriadamente\n"
 "para marcar resolução e fazer uma memória."
 
-#: advice.c:276
+#: advice.c:278
 msgid "Exiting because of an unresolved conflict."
 msgstr "Saindo devido a conflito por resolver."
 
-#: advice.c:281 builtin/merge.c:1369
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
-msgstr "O teu juntar ficou por concluír (MERGE_HEAD presente)."
+msgstr "O teu juntar ficou por concluir (MERGE_HEAD presente)."
 
-#: advice.c:283
+#: advice.c:285
 msgid "Please, commit your changes before merging."
 msgstr "Por favor, memoriza as tuas modificações antes de juntar."
 
-#: advice.c:284
+#: advice.c:286
 msgid "Exiting because of unfinished merge."
 msgstr "Saindo devido a juntar inacabado."
 
-#: advice.c:290
+#: advice.c:296
+#, c-format
+msgid ""
+"The following pathspecs didn't match any eligible path, but they do match "
+"index\n"
+"entries outside the current sparse checkout:\n"
+msgstr ""
+
+#: advice.c:303
+msgid ""
+"Disable or modify the sparsity rules if you intend to update such entries."
+msgstr ""
+
+#: advice.c:310
 #, fuzzy, c-format
 msgid ""
 "Note: switching to '%s'.\n"
@@ -997,7 +1092,7 @@
 "\n"
 "  git switch -\n"
 "\n"
-"Desliga este conselho pondo a variável de config advice.detachedHead em"
+"Desliga este conselho pondo a variável de config advice.detachedHead em "
 "false\n"
 "\n"
 
@@ -1010,85 +1105,83 @@
 msgid "unclosed quote"
 msgstr "aspa aberta"
 
-#: apply.c:69
+#: apply.c:70
 #, c-format
 msgid "unrecognized whitespace option '%s'"
 msgstr "opção de whitespace desconhecida '%s'"
 
-#: apply.c:85
+#: apply.c:86
 #, c-format
 msgid "unrecognized whitespace ignore option '%s'"
 msgstr "opção de ignorar whitespace desconhecida '%s'"
 
-#: apply.c:135
+#: apply.c:136
 msgid "--reject and --3way cannot be used together."
 msgstr "--reject e --3way só podem ser usados separadamente."
 
-#: apply.c:137
-msgid "--cached and --3way cannot be used together."
-msgstr "--cached e --3way só podem ser usados separadamente."
-
-#: apply.c:140
+#: apply.c:139
 msgid "--3way outside a repository"
 msgstr "--3way fora de um repositório"
 
-#: apply.c:151
+#: apply.c:150
 msgid "--index outside a repository"
 msgstr "--index fora de um repositório"
 
-#: apply.c:154
+#: apply.c:153
 msgid "--cached outside a repository"
-msgstr "--cached fora de um repositório"
+msgstr "--cached fora de repositório"
 
-#: apply.c:801
+#: apply.c:800
 #, c-format
 msgid "Cannot prepare timestamp regexp %s"
 msgstr "Incapaz preparar timestamp de regexp %s"
 
-#: apply.c:810
+#: apply.c:809
 #, c-format
 msgid "regexec returned %d for input: %s"
 msgstr "regexec devolveu %d para input: %s"
 
-#: apply.c:884
+#: apply.c:883
 #, c-format
 msgid "unable to find filename in patch at line %d"
 msgstr "incapaz de encontrar o nome do ficheiro no patch da linha %d"
 
-#: apply.c:922
+#: apply.c:921
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
-msgstr "git apply: git-diff incorreto - esperava /dev/null, tive %s na linha "
+msgstr ""
+"git apply: git-diff incorreto - esperava /dev/null, tive %s na linha %d"
+
+#: apply.c:927
+#, c-format
+msgid "git apply: bad git-diff - inconsistent new filename on line %d"
+msgstr ""
+"git apply: git-diff incorreto - novo nome de ficheiro inconsistente na linha "
 "%d"
 
 #: apply.c:928
 #, c-format
-msgid "git apply: bad git-diff - inconsistent new filename on line %d"
-msgstr "git apply: git-diff incorreto - novo nome de ficheiro inconsistente "
-"na linha %d"
-
-#: apply.c:929
-#, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
-msgstr "git apply: git-diff incorreto - antigo nome de ficheiro inconsistente "
-"na linha %d"
+msgstr ""
+"git apply: git-diff incorreto - antigo nome de ficheiro inconsistente na "
+"linha %d"
 
-#: apply.c:934
+#: apply.c:933
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null on line %d"
 msgstr "git apply: git-diff incorreto - esperava /dev/null na linha %d"
 
-#: apply.c:963
+#: apply.c:962
 #, fuzzy, c-format
 msgid "invalid mode on line %d: %s"
 msgstr "modo inválido na linha %d: %s"
 
-#: apply.c:1282
+#: apply.c:1281
 #, c-format
 msgid "inconsistent header lines %d and %d"
 msgstr "linhas de cabeçalho %d e %d inconsistentes"
 
-#: apply.c:1372
+#: apply.c:1371
 #, c-format
 msgid ""
 "git diff header lacks filename information when removing %d leading pathname "
@@ -1103,92 +1196,92 @@
 "cabeçalho do git diff falta informação de nome de ficheiro quando removendo "
 "%d componentes do pathname (linha %d)"
 
-#: apply.c:1385
+#: apply.c:1384
 #, c-format
 msgid "git diff header lacks filename information (line %d)"
 msgstr "cabeçalho do git diff falta informação de nome de ficheiro (linha %d)"
 
-#: apply.c:1481
+#: apply.c:1480
 #, c-format
 msgid "recount: unexpected line: %.*s"
 msgstr "recontagem: linha inesperada: %.*s"
 
-#: apply.c:1550
+#: apply.c:1549
 #, c-format
 msgid "patch fragment without header at line %d: %.*s"
 msgstr "fragmento de patch sem cabeçalho na linha %d: %.*s"
 
-#: apply.c:1753
+#: apply.c:1752
 msgid "new file depends on old contents"
 msgstr "novo ficheiro depende de conteúdos antigos"
 
-#: apply.c:1755
+#: apply.c:1754
 msgid "deleted file still has contents"
 msgstr "ficheiro eliminado ainda tem conteúdos"
 
-#: apply.c:1789
+#: apply.c:1788
 #, c-format
 msgid "corrupt patch at line %d"
 msgstr "patch roto na linha %d"
 
-#: apply.c:1826
+#: apply.c:1825
 #, c-format
 msgid "new file %s depends on old contents"
 msgstr "novo ficheiro %s depende de conteúdos antigos"
 
-#: apply.c:1828
+#: apply.c:1827
 #, c-format
 msgid "deleted file %s still has contents"
 msgstr "ficheiro apagado %s ainda tem conteúdos"
 
-#: apply.c:1831
+#: apply.c:1830
 #, c-format
 msgid "** warning: file %s becomes empty but is not deleted"
 msgstr "** aviso: ficheiro %s fica vazio e mantêm-se"
 
-#: apply.c:1978
+#: apply.c:1977
 #, c-format
 msgid "corrupt binary patch at line %d: %.*s"
 msgstr "patch binário roto na linha %d: %.*s"
 
-#: apply.c:2015
+#: apply.c:2014
 #, c-format
 msgid "unrecognized binary patch at line %d"
 msgstr "patch binário irreconhecível na linha %d"
 
-#: apply.c:2177
+#: apply.c:2176
 #, c-format
 msgid "patch with only garbage at line %d"
 msgstr "patch com apenas lixo na linha %d"
 
-#: apply.c:2263
+#: apply.c:2262
 #, c-format
 msgid "unable to read symlink %s"
 msgstr "incapaz de ler ligação simbólica %s"
 
-#: apply.c:2267
+#: apply.c:2266
 #, c-format
 msgid "unable to open or read %s"
 msgstr "incapaz de abrir ou ler %s"
 
-#: apply.c:2936
+#: apply.c:2935
 #, c-format
 msgid "invalid start of line: '%c'"
 msgstr "início de linha inválido: '%c'"
 
-#: apply.c:3057
+#: apply.c:3056
 #, c-format
 msgid "Hunk #%d succeeded at %d (offset %d line)."
 msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
 msgstr[0] "Pedaço #%d apareceu em %d (%d offset de linha)."
 msgstr[1] "Pedaço #%d apareceu em %d (%d offset de linhas)."
 
-#: apply.c:3069
+#: apply.c:3068
 #, c-format
 msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
 msgstr "Contexto reduzido a (%ld/%ld) para submeter fragmento em %d"
 
-#: apply.c:3075
+#: apply.c:3074
 #, c-format
 msgid ""
 "while searching for:\n"
@@ -1197,135 +1290,141 @@
 "procurando por:\n"
 "%.*s"
 
-#: apply.c:3097
+#: apply.c:3096
 #, c-format
 msgid "missing binary patch data for '%s'"
 msgstr "faltando patch binário para '%s'"
 
-#: apply.c:3105
+#: apply.c:3104
 #, c-format
 msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
-msgstr "incapaz submeter-inversamente patch binário sem pedaço "
-"inverso a '%s'"
+msgstr "incapaz submeter-inversamente patch binário sem pedaço inverso a '%s'"
 
-#: apply.c:3152
+#: apply.c:3151
 #, c-format
 msgid "cannot apply binary patch to '%s' without full index line"
 msgstr "incapaz submeter patch binário a '%s' sem a linha completa de index"
 
-#: apply.c:3163
+#: apply.c:3162
 #, c-format
 msgid ""
 "the patch applies to '%s' (%s), which does not match the current contents."
 msgstr ""
 "o patch submete-se a '%s' (%s), que corresponde a conteúdo actual nenhum."
 
-#: apply.c:3171
+#: apply.c:3170
 #, c-format
 msgid "the patch applies to an empty '%s' but it is not empty"
 msgstr "o patch submete-se a um '%s' vazio mas tem conteúdo"
 
-#: apply.c:3189
+#: apply.c:3188
 #, c-format
 msgid "the necessary postimage %s for '%s' cannot be read"
 msgstr "incapaz ler a postimage necessária %s para '%s'"
 
-#: apply.c:3202
+#: apply.c:3201
 #, c-format
 msgid "binary patch does not apply to '%s'"
 msgstr "path binário submete-se a '%s' de maneira nenhuma"
 
-#: apply.c:3209
+#: apply.c:3208
 #, c-format
 msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
-msgstr "patch binário para '%s' cria resultado incorreto (esperei %s, "
-"recebi %s)"
+msgstr ""
+"patch binário para '%s' cria resultado incorreto (esperei %s, recebi %s)"
 
-#: apply.c:3230
+#: apply.c:3229
 #, c-format
 msgid "patch failed: %s:%ld"
 msgstr "patch falhou: %s:%ld"
 
-#: apply.c:3353
+#: apply.c:3352
 #, c-format
 msgid "cannot checkout %s"
 msgstr "incapaz de checkout %s"
 
-#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:73 setup.c:308
+#: apply.c:3404 apply.c:3415 apply.c:3461 midx.c:98 pack-revindex.c:214
+#: setup.c:308
 #, c-format
 msgid "failed to read %s"
 msgstr "falha a ler %s"
 
-#: apply.c:3413
+#: apply.c:3412
 #, c-format
 msgid "reading from '%s' beyond a symbolic link"
 msgstr "lendo '%s' além de uma ligação simbólica"
 
-#: apply.c:3442 apply.c:3685
+#: apply.c:3441 apply.c:3687
 #, c-format
 msgid "path %s has been renamed/deleted"
 msgstr "path %s mudou de nome ou foi eliminado"
 
-#: apply.c:3528 apply.c:3700
+#: apply.c:3527 apply.c:3702
 #, c-format
 msgid "%s: does not exist in index"
 msgstr "%s: tem inexistência no index"
 
-#: apply.c:3537 apply.c:3708 apply.c:3953
+#: apply.c:3536 apply.c:3710 apply.c:3954
 #, c-format
 msgid "%s: does not match index"
 msgstr "%s: no index há correspondência nenhuma"
 
-#: apply.c:3572
-msgid "repository lacks the necessary blob to fall back on 3-way merge."
+#: apply.c:3571
+#, fuzzy
+msgid "repository lacks the necessary blob to perform 3-way merge."
 msgstr "repositório falta o blob necessário para recorrer à tri-junção."
 
-#: apply.c:3575
-#, c-format
-msgid "Falling back to three-way merge...\n"
+#: apply.c:3574
+#, fuzzy, c-format
+msgid "Performing three-way merge...\n"
 msgstr "A recorrer a integração com 3 pontos...\n"
 
-#: apply.c:3591 apply.c:3595
+#: apply.c:3590 apply.c:3594
 #, c-format
 msgid "cannot read the current contents of '%s'"
 msgstr "incapaz ler conteúdo atual de '%s'"
 
-#: apply.c:3607
-#, c-format
-msgid "Failed to fall back on three-way merge...\n"
+#: apply.c:3606
+#, fuzzy, c-format
+msgid "Failed to perform three-way merge...\n"
 msgstr "Falha a recorrer a integração com 3 pontos...\n"
 
-#: apply.c:3621
+#: apply.c:3620
 #, c-format
 msgid "Applied patch to '%s' with conflicts.\n"
 msgstr "Patch aplicado a '%s' com conflitos.\n"
 
-#: apply.c:3626
+#: apply.c:3625
 #, c-format
 msgid "Applied patch to '%s' cleanly.\n"
 msgstr "Patch aplicado a '%s' com sucesso.\n"
 
-#: apply.c:3652
+#: apply.c:3642
+#, fuzzy, c-format
+msgid "Falling back to direct application...\n"
+msgstr "A recorrer a integração com 3 pontos...\n"
+
+#: apply.c:3654
 msgid "removal patch leaves file contents"
 msgstr "patch de remoção deixa conteúdos no ficheiro"
 
-#: apply.c:3725
+#: apply.c:3727
 #, c-format
 msgid "%s: wrong type"
 msgstr "%s: tipo errado"
 
-#: apply.c:3727
+#: apply.c:3729
 #, c-format
 msgid "%s has type %o, expected %o"
 msgstr "%s é do tipo %o, esperado %o"
 
-#: apply.c:3892 apply.c:3894 read-cache.c:832 read-cache.c:858
-#: read-cache.c:1313
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "caminho inválido '%s'"
 
-#: apply.c:3950
+#: apply.c:3952
 #, c-format
 msgid "%s: already exists in index"
 msgstr "%s: já existe no índice"
@@ -1358,7 +1457,7 @@
 #: apply.c:4020
 #, c-format
 msgid "Checking patch %s..."
-msgstr "A verificar o patch %s..."
+msgstr ""
 
 #: apply.c:4112
 #, c-format
@@ -1410,7 +1509,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "incapaz adicionar entrada de cache para %s"
 
-#: apply.c:4376 builtin/bisect--helper.c:524
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "falha a escrever para '%s'"
@@ -1446,7 +1545,7 @@
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "a truncar o nome do ficheiro .rej em %.*s.rej"
 
-#: apply.c:4578 builtin/fetch.c:927 builtin/fetch.c:1228
+#: apply.c:4578 builtin/fetch.c:993 builtin/fetch.c:1394
 #, c-format
 msgid "cannot open %s"
 msgstr "incapaz abrir %s"
@@ -1461,172 +1560,175 @@
 msgid "Rejected hunk #%d."
 msgstr "Excerto nº%d rejeitado."
 
-#: apply.c:4720
+#: apply.c:4725
 #, c-format
 msgid "Skipped patch '%s'."
 msgstr "Patch '%s' ignorado."
 
-#: apply.c:4728
+#: apply.c:4733
 msgid "unrecognized input"
 msgstr "input desconhecido"
 
-#: apply.c:4748
+#: apply.c:4753
 msgid "unable to read index file"
 msgstr "incapaz ler ficheiro index"
 
-#: apply.c:4905
+#: apply.c:4910
 #, c-format
 msgid "can't open patch '%s': %s"
 msgstr "incapaz abrir patch '%s': %s"
 
-#: apply.c:4932
+#: apply.c:4937
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
 msgstr[0] "%d erro de espaço em branco reprimido"
 msgstr[1] "%d erros de espaço em branco reprimidos"
 
-#: apply.c:4938 apply.c:4953
+#: apply.c:4943 apply.c:4958
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
 msgstr[0] "%d linha adiciona erros de espaço em branco."
 msgstr[1] "%d linhas adicionam erros de espaço em branco."
 
-#: apply.c:4946
+#: apply.c:4951
 #, c-format
 msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d linha aplicada depois de corrigir erros de espaço em branco."
 msgstr[1] "%d linhas aplicadas depois de corrigir erros de espaço em branco."
 
-#: apply.c:4962 builtin/add.c:618 builtin/mv.c:304 builtin/rm.c:406
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Incapaz de escrever novo ficheiro index"
 
-#: apply.c:4990
+#: apply.c:4995
 msgid "don't apply changes matching the given path"
-msgstr "submeter de maneira nenhuma alterações correspondentes a path fornecido"
+msgstr ""
+"submeter de maneira nenhuma alterações correspondentes a path fornecido"
 
-#: apply.c:4993
+#: apply.c:4998
 msgid "apply changes matching the given path"
 msgstr "submeter alterações correspondentes a path fornecido"
 
-#: apply.c:4995 builtin/am.c:2266
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "num"
 
-#: apply.c:4996
+#: apply.c:5001
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr "remover <num> barras à esquerda dos caminhos de diff tradicional"
 
-#: apply.c:4999
+#: apply.c:5004
 msgid "ignore additions made by the patch"
 msgstr "ignorar adições feitas pelo patch"
 
-#: apply.c:5001
+#: apply.c:5006
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr "invés aplicada patch, output diffstat para "
 
-#: apply.c:5005
+#: apply.c:5010
 msgid "show number of added and deleted lines in decimal notation"
 msgstr "mostrar número de linhas adicionadas e removidas em notação decimal"
 
-#: apply.c:5007
+#: apply.c:5012
 msgid "instead of applying the patch, output a summary for the input"
 msgstr "em vez de aplicar o patch, mostrar um resumo da entrada"
 
-#: apply.c:5009
+#: apply.c:5014
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr "em vez de aplicar o patch, verificar se o patch pode ser aplicado"
 
-#: apply.c:5011
+#: apply.c:5016
 msgid "make sure the patch is applicable to the current index"
 msgstr "garantir que o patch pode ser aplicado ao índice atual"
 
-#: apply.c:5013
+#: apply.c:5018
 msgid "mark new files with `git add --intent-to-add`"
 msgstr ""
 
-#: apply.c:5015
+#: apply.c:5020
 msgid "apply a patch without touching the working tree"
 msgstr "aplicar um patch sem tocar na árvore de trabalho"
 
-#: apply.c:5017
+#: apply.c:5022
 msgid "accept a patch that touches outside the working area"
 msgstr "aceitar patches que alteram ficheiros fora da área de trabalho"
 
-#: apply.c:5020
+#: apply.c:5025
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "aplicar o patch também (use com --stat/--summary/--check)"
 
-#: apply.c:5022
-msgid "attempt three-way merge if a patch does not apply"
+#: apply.c:5027
+#, fuzzy
+msgid "attempt three-way merge, fall back on normal patch if that fails"
 msgstr "tentar tri-junção se um patch submete-se de maneira nenhuma"
 
-#: apply.c:5024
+#: apply.c:5029
 msgid "build a temporary index based on embedded index information"
 msgstr ""
 "construir um índice temporário baseado na informação incorporada do índice"
 
-#: apply.c:5027 builtin/checkout-index.c:182 builtin/ls-files.c:525
+#: apply.c:5032 builtin/checkout-index.c:196 builtin/ls-files.c:617
 msgid "paths are separated with NUL character"
 msgstr "os caminhos estão separados por caracteres NUL"
 
-#: apply.c:5029
+#: apply.c:5034
 msgid "ensure at least <n> lines of context match"
 msgstr "garantir que, pelo menos, <n> linhas de contexto coincidem"
 
-#: apply.c:5030 builtin/am.c:2245 builtin/interpret-trailers.c:98
-#: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3562 builtin/rebase.c:1346
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
+#: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
+#: builtin/rebase.c:1347
 msgid "action"
 msgstr "ação"
 
-#: apply.c:5031
+#: apply.c:5036
 msgid "detect new or modified lines that have whitespace errors"
 msgstr "detetar linhas novas ou modificadas que tenham espaços em branco"
 
-#: apply.c:5034 apply.c:5037
+#: apply.c:5039 apply.c:5042
 msgid "ignore changes in whitespace when finding context"
 msgstr "ignorar alterações de espaço em branco ao procurar contexto"
 
-#: apply.c:5040
+#: apply.c:5045
 msgid "apply the patch in reverse"
 msgstr "aplicar o patch em reverso"
 
-#: apply.c:5042
+#: apply.c:5047
 msgid "don't expect at least one line of context"
 msgstr "conta com linha de contexto nenhuma"
 
-#: apply.c:5044
+#: apply.c:5049
 msgid "leave the rejected hunks in corresponding *.rej files"
-msgstr "deixar os excertos rejeitados nos respetivos ficheiros *.rej"
+msgstr "deixar os pedaços rejeitados nos respetivos ficheiros *.rej"
 
-#: apply.c:5046
+#: apply.c:5051
 msgid "allow overlapping hunks"
-msgstr "permitir a sobreposição de excertos"
+msgstr "permitir a sobreposição de pedaços"
 
-#: apply.c:5047 builtin/add.c:329 builtin/check-ignore.c:22
-#: builtin/commit.c:1364 builtin/count-objects.c:98 builtin/fsck.c:775
-#: builtin/log.c:2287 builtin/mv.c:123 builtin/read-tree.c:128
+#: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ser verboso"
 
-#: apply.c:5049
+#: apply.c:5054
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr ""
 "tolerar deteções incorretas de falta de nova linha no final do ficheiro"
 
-#: apply.c:5052
+#: apply.c:5057
 msgid "do not trust the line counts in the hunk headers"
 msgstr "desconfia da contagem de linhas nos headers de pedaços"
 
-#: apply.c:5054 builtin/am.c:2254
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "raiz"
 
-#: apply.c:5055
+#: apply.c:5060
 msgid "prepend <root> to all filenames"
 msgstr "preceder <root> a todos os nomes de ficheiro"
 
@@ -1665,7 +1767,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr ""
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "erro ao compactar (%d)"
@@ -1694,145 +1796,146 @@
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <repo> [--exec <cmd>] --list"
 
-#: archive.c:192
+#: archive.c:188
 #, fuzzy, c-format
 msgid "cannot read %s"
-msgstr "incapaz ler '%s'"
+msgstr "incapaz ler %s"
 
-#: archive.c:345 sequencer.c:459 sequencer.c:1736 sequencer.c:2886
-#: sequencer.c:3327 sequencer.c:3436 builtin/am.c:249 builtin/commit.c:786
-#: builtin/merge.c:1138
+#: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "incapaz ler '%s'"
 
-#: archive.c:430 builtin/add.c:181 builtin/add.c:594 builtin/rm.c:315
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "especificador de path '%s' correspondeu a ficheiro nenhum"
 
-#: archive.c:454
+#: archive.c:451
 #, fuzzy, c-format
 msgid "no such ref: %.*s"
-msgstr "referência inexistente %s"
+msgstr "ref inexistente: %.*s"
 
-#: archive.c:460
+#: archive.c:457
 #, fuzzy, c-format
 msgid "not a valid object name: %s"
 msgstr "nome de objeto inválido: %s"
 
-#: archive.c:473
+#: archive.c:470
 #, fuzzy, c-format
 msgid "not a tree object: %s"
 msgstr "é objeto árvore nenhum: %s"
 
-#: archive.c:485
+#: archive.c:482
 #, fuzzy
 msgid "current working directory is untracked"
 msgstr "pasta de trabalho atual está por seguir"
 
-#: archive.c:526
+#: archive.c:523
 #, fuzzy, c-format
 msgid "File not found: %s"
 msgstr "ficheiro por encontrar: %s"
 
-#: archive.c:528
+#: archive.c:525
 #, fuzzy, c-format
 msgid "Not a regular file: %s"
 msgstr "É ficheiro normal nenhum: %s"
 
-#: archive.c:555
+#: archive.c:552
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:555
+#: archive.c:552
 msgid "archive format"
 msgstr "formato do arquivo"
 
-#: archive.c:556 builtin/log.c:1765
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "prefixo"
 
-#: archive.c:557
+#: archive.c:554
 msgid "prepend prefix to each pathname in the archive"
 msgstr "preceder o prefixo a cada nome de caminho dentro do arquivo"
 
-#: archive.c:558 archive.c:561 builtin/blame.c:886 builtin/blame.c:890
-#: builtin/blame.c:891 builtin/commit-tree.c:117 builtin/config.c:135
-#: builtin/fast-export.c:1208 builtin/fast-export.c:1210
-#: builtin/fast-export.c:1214 builtin/grep.c:919 builtin/hash-object.c:105
-#: builtin/ls-files.c:561 builtin/ls-files.c:564 builtin/notes.c:412
-#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:190
+#: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
+#: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
+#: builtin/fast-export.c:1207 builtin/fast-export.c:1209
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
+#: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
+#: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
 msgstr "ficheiro"
 
-#: archive.c:559
+#: archive.c:556
 #, fuzzy
 msgid "add untracked file to archive"
 msgstr "adiciona ficheiro por seguir a arquivo"
 
-#: archive.c:562 builtin/archive.c:90
+#: archive.c:559 builtin/archive.c:90
 msgid "write the archive to this file"
 msgstr "escreve arquivo para este ficheiro"
 
-#: archive.c:564
+#: archive.c:561
 msgid "read .gitattributes in working directory"
 msgstr "ler .gitattributes do diretório de trabalho"
 
-#: archive.c:565
+#: archive.c:562
 msgid "report archived files on stderr"
 msgstr "listar ficheiros arquivados para stderr"
 
-#: archive.c:567
+#: archive.c:564
 #, fuzzy
 msgid "set compression level"
 msgstr "nível de compactação do pacote"
 
-#: archive.c:570
+#: archive.c:567
 msgid "list supported archive formats"
 msgstr "listar formatos de arquivo suportados"
 
-#: archive.c:572 builtin/archive.c:91 builtin/clone.c:114 builtin/clone.c:117
-#: builtin/submodule--helper.c:1830 builtin/submodule--helper.c:2335
+#: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "repo"
 
-#: archive.c:573 builtin/archive.c:92
+#: archive.c:570 builtin/archive.c:92
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "obter o arquivo a partir do repositório remoto <repo>"
 
-#: archive.c:574 builtin/archive.c:93 builtin/difftool.c:714
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "comando"
 
-#: archive.c:575 builtin/archive.c:94
+#: archive.c:572 builtin/archive.c:94
 msgid "path to the remote git-upload-archive command"
 msgstr "caminho para o comando git-upload-archive no remoto"
 
-#: archive.c:582
+#: archive.c:579
 msgid "Unexpected option --remote"
 msgstr "Opção inesperada --remote"
 
-#: archive.c:584
+#: archive.c:581
 msgid "Option --exec can only be used together with --remote"
-msgstr "A opção --exec só pode ser usada em conjunto com --remote"
+msgstr "Opção --exec apenas pode ser usada com --remote"
 
-#: archive.c:586
+#: archive.c:583
 msgid "Unexpected option --output"
 msgstr "Opção inesperada --output"
 
-#: archive.c:588
+#: archive.c:585
 #, fuzzy
 msgid "Options --add-file and --remote cannot be used together"
 msgstr "Opções --add-file e --remote podem nada ser usadas juntas"
 
-#: archive.c:610
+#: archive.c:607
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Formato de arquivo desconhecido '%s'"
 
-#: archive.c:619
+#: archive.c:616
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argumento por ser suportado para formato '%s': -%d"
@@ -1842,12 +1945,12 @@
 msgid "%.*s is not a valid attribute name"
 msgstr "%.*s é nome de atributo inválido"
 
-#: attr.c:359
+#: attr.c:363
 #, fuzzy, c-format
 msgid "%s not allowed: %s:%d"
 msgstr "falha ao aplicar o patch: %s:%ld"
 
-#: attr.c:399
+#: attr.c:403
 msgid ""
 "Negative patterns are ignored in git attributes\n"
 "Use '\\!' for literal leading exclamation."
@@ -1929,12 +2032,12 @@
 msgid "a %s revision is needed"
 msgstr "precisa-se de uma revisão %s"
 
-#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:255
+#: bisect.c:941 builtin/notes.c:177 builtin/tag.c:298
 #, c-format
 msgid "could not create file '%s'"
 msgstr "incapaz criar ficheiro '%s'"
 
-#: bisect.c:987 builtin/merge.c:152
+#: bisect.c:987 builtin/merge.c:153
 #, c-format
 msgid "could not read file '%s'"
 msgstr "incapaz ler ficheiro '%s'"
@@ -1949,10 +2052,10 @@
 msgstr "%s era %s e %s em simultâneo\n"
 
 #: bisect.c:1066
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "No testable commit found.\n"
-"Maybe you started with bad path parameters?\n"
+"Maybe you started with bad path arguments?\n"
 msgstr ""
 "Nenhum commit testável encontrado.\n"
 "Talvez tenha começado com parâmetros de caminho incorretos?\n"
@@ -1974,39 +2077,39 @@
 msgstr[0] "A bissetar: falta %d revisão para testar depois desta %s\n"
 msgstr[1] "A bissetar: faltam %d revisões para testar depois desta %s\n"
 
-#: blame.c:2777
+#: blame.c:2776
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents e --reverse são imiscíveis."
 
-#: blame.c:2791
+#: blame.c:2790
 msgid "cannot use --contents with final commit object name"
 msgstr "usar --contents com nome de objeto commit final é impossível"
 
-#: blame.c:2812
+#: blame.c:2811
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse e --first-parent juntos requer que se especifique o último commit"
 
-#: blame.c:2821 bundle.c:213 ref-filter.c:2272 remote.c:2031 sequencer.c:2138
-#: sequencer.c:4633 submodule.c:855 builtin/commit.c:1045 builtin/log.c:409
-#: builtin/log.c:1023 builtin/log.c:1625 builtin/log.c:2046 builtin/log.c:2336
-#: builtin/merge.c:423 builtin/pack-objects.c:3380 builtin/pack-objects.c:3395
-#: builtin/shortlog.c:267
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "falha ao configurar percurso de revisões"
 
-#: blame.c:2839
+#: blame.c:2838
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent juntos requer intervalo ao longo do primeiro-pai"
 
-#: blame.c:2850
+#: blame.c:2849
 #, c-format
 msgid "no such path %s in %s"
 msgstr "path %s inexistente em %s"
 
-#: blame.c:2861
+#: blame.c:2860
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "incapaz ler blob %s para path %s"
@@ -2095,7 +2198,9 @@
 #: branch.c:233
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
-msgstr "Impossível configurar informação sobre seguir; o ponto inicial '%s' é ramo nenhum."
+msgstr ""
+"Impossível configurar informação sobre seguir; o ponto inicial '%s' é ramo "
+"nenhum."
 
 #: branch.c:235
 #, c-format
@@ -2137,390 +2242,393 @@
 msgid "Not a valid branch point: '%s'."
 msgstr "Ponto no ramo inválido: '%s'."
 
-#: branch.c:365
+#: branch.c:366
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "'%s' foi já extraído em '%s'"
 
-#: branch.c:388
+#: branch.c:389
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD da working tree %s está desatualizada"
 
-#: bundle.c:41
+#: bundle.c:44
 #, fuzzy, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "algoritmo hash de bundle irreconhecível: %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, fuzzy, c-format
 msgid "unknown capability '%s'"
 msgstr "capacidade desconhecida '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, fuzzy, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' parece-se com ficheiro bundle v2 ou v3 nenhum"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "cabeçalho irreconhecível: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:480 rerere.c:690 sequencer.c:2390 sequencer.c:3176
-#: builtin/commit.c:814
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "incapaz abrir '%s'"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Falta ao repositório estes pré-requisitos de commits:"
 
-#: bundle.c:192
+#: bundle.c:201
 #, fuzzy
 msgid "need a repository to verify a bundle"
 msgstr "é preciso repositório para verificar um bundle."
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "O bundle contém esta referência:"
 msgstr[1] "O bundle contém estas %d referências:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "O pacote regista um histórico completo."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "O bundle requer esta referência:"
 msgstr[1] "O bundle requer estas %d referências:"
 
-#: bundle.c:319
+#: bundle.c:333
 #, fuzzy
 msgid "unable to dup bundle descriptor"
 msgstr "incapaz de dup descritor de bundle"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Impossível gerar pack-objects"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects terminaram inesperadamente"
 
-#: bundle.c:379
-msgid "rev-list died"
-msgstr "rev-list terminou inesperadamente"
-
-#: bundle.c:428
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "a referência '%s' é excluída pelas opções de rev-list"
 
-#: bundle.c:498
+#: bundle.c:504
 #, fuzzy, c-format
 msgid "unsupported bundle version %d"
 msgstr "fora de suporte versão bundle %d"
 
-#: bundle.c:500
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr ""
 
-#: bundle.c:522 builtin/log.c:209 builtin/log.c:1927 builtin/shortlog.c:408
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento irreconhecível: %s"
 
-#: bundle.c:530
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Criação de bundle vazio recusada."
 
-#: bundle.c:540
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "incapaz criar '%s'"
 
-#: bundle.c:565
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack terminou inesperadamente"
 
+#: chunk-format.c:117
+msgid "terminating chunk id appears earlier than expected"
+msgstr ""
+
+#: chunk-format.c:126
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr ""
+
+#: chunk-format.c:133
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr ""
+
+#: chunk-format.c:147
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr ""
+
 #: color.c:329
 #, c-format
 msgid "invalid color value: %.*s"
 msgstr "valor de cor inválido: %.*s"
 
-#: commit-graph.c:188 midx.c:47
+#: commit-graph.c:204 midx.c:47
 #, fuzzy
 msgid "invalid hash version"
 msgstr "especificação de caminho inválida"
 
-#: commit-graph.c:246
+#: commit-graph.c:262
 msgid "commit-graph file is too small"
 msgstr ""
 
-#: commit-graph.c:311
+#: commit-graph.c:355
 #, fuzzy, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "assinatura commit-graph %X corresponde a assinatura %X nenhuma"
 
-#: commit-graph.c:318
+#: commit-graph.c:362
 #, fuzzy, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "commit-graph versão %X corresponde a versão %X nenhuma"
 
-#: commit-graph.c:325
+#: commit-graph.c:369
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr ""
 
-#: commit-graph.c:342
+#: commit-graph.c:386
 #, c-format
 msgid "commit-graph file is too small to hold %u chunks"
 msgstr ""
 
-#: commit-graph.c:361
-#, c-format
-msgid "commit-graph improper chunk offset %08x%08x"
-msgstr ""
-
-#: commit-graph.c:433
-#, c-format
-msgid "commit-graph chunk id %08x appears multiple times"
-msgstr ""
-
-#: commit-graph.c:499
+#: commit-graph.c:482
 msgid "commit-graph has no base graphs chunk"
 msgstr ""
 
-#: commit-graph.c:509
+#: commit-graph.c:492
 msgid "commit-graph chain does not match"
 msgstr ""
 
-#: commit-graph.c:557
+#: commit-graph.c:540
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 
-#: commit-graph.c:581
+#: commit-graph.c:564
 #, fuzzy
 msgid "unable to find all commit-graph files"
 msgstr "incapaz de encontrar todos ficheiros commit-graph"
 
-#: commit-graph.c:721 commit-graph.c:785
+#: commit-graph.c:745 commit-graph.c:782
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:742
+#: commit-graph.c:766
 #, fuzzy, c-format
 msgid "could not find commit %s"
 msgstr "incapaz encontrar commit %s"
 
-#: commit-graph.c:1042 builtin/am.c:1292
+#: commit-graph.c:799
+msgid "commit-graph requires overflow generation data but has none"
+msgstr ""
+
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "incapaz analisar commit %s"
 
-#: commit-graph.c:1265 builtin/pack-objects.c:2864
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, fuzzy, c-format
 msgid "unable to get type of object %s"
 msgstr "incapaz obter tipo de objeto %s"
 
-#: commit-graph.c:1301
+#: commit-graph.c:1368
 msgid "Loading known commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1318
+#: commit-graph.c:1385
 msgid "Expanding reachable commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1338
+#: commit-graph.c:1405
 msgid "Clearing commit marks in commit graph"
 msgstr ""
 
-#: commit-graph.c:1357
+#: commit-graph.c:1424
+msgid "Computing commit graph topological levels"
+msgstr ""
+
+#: commit-graph.c:1477
 msgid "Computing commit graph generation numbers"
 msgstr ""
 
-#: commit-graph.c:1424
+#: commit-graph.c:1558
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 
-#: commit-graph.c:1501
+#: commit-graph.c:1635
 #, fuzzy
 msgid "Collecting referenced commits"
 msgstr "Recolhendo commits referênciados"
 
-#: commit-graph.c:1526
+#: commit-graph.c:1660
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] ""
 msgstr[1] ""
 
-#: commit-graph.c:1539
+#: commit-graph.c:1673
 #, fuzzy, c-format
 msgid "error adding pack %s"
-msgstr "Erro ao rematar %s."
+msgstr "error adicionando pacote %s"
 
-#: commit-graph.c:1543
+#: commit-graph.c:1677
 #, c-format
 msgid "error opening index for %s"
 msgstr ""
 
-#: commit-graph.c:1582
+#: commit-graph.c:1714
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 
-#: commit-graph.c:1597
-msgid "Counting distinct commits in commit graph"
-msgstr ""
-
-#: commit-graph.c:1629
+#: commit-graph.c:1732
 msgid "Finding extra edges in commit graph"
 msgstr ""
 
-#: commit-graph.c:1678
+#: commit-graph.c:1781
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1720 midx.c:819
+#: commit-graph.c:1812 midx.c:911
 #, fuzzy, c-format
 msgid "unable to create leading directories of %s"
 msgstr "incapaz criar as pastas superiores a %s"
 
-#: commit-graph.c:1733
+#: commit-graph.c:1825
 #, fuzzy
 msgid "unable to create temporary graph layer"
 msgstr "incapaz criar camada de grafo temporária"
 
-#: commit-graph.c:1738
+#: commit-graph.c:1830
 #, fuzzy, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "incapaz de ajustar permissão partilhada para '%s'"
 
-#: commit-graph.c:1808
+#: commit-graph.c:1887
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: commit-graph.c:1853
+#: commit-graph.c:1923
 #, fuzzy
 msgid "unable to open commit-graph chain file"
 msgstr "incapaz abrir ficheiro commit-graph chain"
 
-#: commit-graph.c:1869
-#, fuzzy
+#: commit-graph.c:1939
 msgid "failed to rename base commit-graph file"
-msgstr "Falha ao criar os ficheiros de saída"
+msgstr ""
 
-#: commit-graph.c:1889
+#: commit-graph.c:1959
 #, fuzzy
 msgid "failed to rename temporary commit-graph file"
 msgstr "falha a renomear ficheiro commit-graph temporário"
 
-#: commit-graph.c:2015
+#: commit-graph.c:2092
 #, fuzzy
 msgid "Scanning merged commits"
 msgstr "A adicionar %s integrado"
 
-#: commit-graph.c:2059
+#: commit-graph.c:2136
 msgid "Merging commit-graph"
 msgstr ""
 
-#: commit-graph.c:2165
+#: commit-graph.c:2244
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
 msgstr ""
 
-#: commit-graph.c:2274
-#, c-format
-msgid "the commit graph format cannot write %d commits"
-msgstr ""
-
-#: commit-graph.c:2285
+#: commit-graph.c:2351
 #, fuzzy
 msgid "too many commits to write graph"
 msgstr "demasiados commits para escrever grafo"
 
-#: commit-graph.c:2378
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2388
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2398 commit-graph.c:2413
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2405
+#: commit-graph.c:2476
 #, fuzzy, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "incapaz analisar commit %s de commit-graph"
 
-#: commit-graph.c:2423
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2438
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2445
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2455
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2464
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2478
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2483
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2487
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2503
+#: commit-graph.c:2575
 #, c-format
-msgid "commit-graph generation for commit %s is %u != %u"
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 
-#: commit-graph.c:2509
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 
-#: commit.c:52 sequencer.c:2879 builtin/am.c:359 builtin/am.c:403
-#: builtin/am.c:1371 builtin/am.c:2018 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "incapaz analisar %s"
@@ -2542,27 +2650,27 @@
 "\"git config advice.graftFileDeprecated false\""
 msgstr ""
 
-#: commit.c:1172
+#: commit.c:1237
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "Commit %s tem assinatura GPG desconfiada, alegadamente por %s."
 
-#: commit.c:1176
+#: commit.c:1241
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s tem assinatura GPG incorreta, alegadamente por %s."
 
-#: commit.c:1179
+#: commit.c:1244
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s tem assinatura GPG nenhuma."
 
-#: commit.c:1182
+#: commit.c:1247
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Commit %s tem assinatura correta, por %s\n"
 
-#: commit.c:1436
+#: commit.c:1501
 msgid ""
 "Warning: commit message did not conform to UTF-8.\n"
 "You may want to amend it after fixing the message, or set the config\n"
@@ -2577,7 +2685,7 @@
 msgid "memory exhausted"
 msgstr "memória esgotada"
 
-#: config.c:125
+#: config.c:126
 #, c-format
 msgid ""
 "exceeded maximum include depth (%d) while including\n"
@@ -2587,300 +2695,344 @@
 "This might be due to circular includes."
 msgstr ""
 
-#: config.c:141
+#: config.c:142
 #, fuzzy, c-format
 msgid "could not expand include path '%s'"
 msgstr "incapaz de expandir include path '%s'"
 
-#: config.c:152
+#: config.c:153
 #, fuzzy
 msgid "relative config includes must come from files"
 msgstr ""
 "configuração relativa com inclusão condicional deve provir de ficheiros"
 
-#: config.c:198
+#: config.c:199
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "configuração relativa com inclusão condicional deve provir de ficheiros"
 
-#: config.c:378
+#: config.c:396
+#, fuzzy, c-format
+msgid "invalid config format: %s"
+msgstr "formato de ref inválido: %s"
+
+#: config.c:400
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr ""
+
+#: config.c:405
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr ""
+
+#: config.c:442
 #, fuzzy, c-format
 msgid "key does not contain a section: %s"
 msgstr "chave contém secção nenhuma: %s"
 
-#: config.c:384
+#: config.c:448
 #, c-format
 msgid "key does not contain variable name: %s"
 msgstr ""
 
-#: config.c:408 sequencer.c:2580
+#: config.c:472 sequencer.c:2785
 #, c-format
 msgid "invalid key: %s"
 msgstr "chave inválida: %s"
 
-#: config.c:414
-#, fuzzy, c-format
+#: config.c:478
+#, c-format
 msgid "invalid key (newline): %s"
-msgstr "linha de identidade inválida: %s"
+msgstr ""
 
-#: config.c:450 config.c:462
+#: config.c:511
+msgid "empty config key"
+msgstr ""
+
+#: config.c:529 config.c:541
 #, fuzzy, c-format
 msgid "bogus config parameter: %s"
 msgstr "parâmetros insuficientes"
 
-#: config.c:497
+#: config.c:555 config.c:572 config.c:579 config.c:588
 #, fuzzy, c-format
 msgid "bogus format in %s"
-msgstr "cadeia malformada %s"
+msgstr "formato falso em %s"
 
-#: config.c:836
+#: config.c:622
+#, fuzzy, c-format
+msgid "bogus count in %s"
+msgstr "contagem falsa em %s"
+
+#: config.c:626
+#, c-format
+msgid "too many entries in %s"
+msgstr ""
+
+#: config.c:636
+#, fuzzy, c-format
+msgid "missing config key %s"
+msgstr "ficheiro config inválido %s"
+
+#: config.c:644
+#, c-format
+msgid "missing config value %s"
+msgstr ""
+
+#: config.c:995
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "linha de configuração %d incorreta no blob %s"
 
-#: config.c:840
+#: config.c:999
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "linha de configuração %d incorreta no ficheiro %s"
 
-#: config.c:844
+#: config.c:1003
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "linha de configuração %d incorreta na entrada padrão"
 
-#: config.c:848
+#: config.c:1007
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "linha de configuração %d incorreta no submódulo-blob %s"
 
-#: config.c:852
+#: config.c:1011
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "linha de configuração %d incorreta na linha de comandos %s"
 
-#: config.c:856
+#: config.c:1015
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "linha de configuração %d incorreta em %s"
 
-#: config.c:993
+#: config.c:1152
 msgid "out of range"
 msgstr "fora de intervalo"
 
-#: config.c:993
+#: config.c:1152
 msgid "invalid unit"
 msgstr "unidade inválida"
 
-#: config.c:994
+#: config.c:1153
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "valor numérico '%s' da configuração '%s' incorreto: %s"
 
-#: config.c:1013
+#: config.c:1163
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "valor numérico '%s' da configuração '%s' incorreto no blob %s: %s"
 
-#: config.c:1016
+#: config.c:1166
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: %s"
 
-#: config.c:1019
+#: config.c:1169
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "valor numérico '%s' da configuração '%s' incorreto na entrada padrão: %s"
 
-#: config.c:1022
+#: config.c:1172
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: %s"
 
-#: config.c:1025
+#: config.c:1175
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: "
 "%s"
 
-#: config.c:1028
+#: config.c:1178
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "valor numérico '%s' da configuração '%s' incorreto em %s: %s"
 
-#: config.c:1123
+#: config.c:1257
+#, fuzzy, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "valor numérico '%s' da configuração '%s' incorreto: %s"
+
+#: config.c:1275
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "falha ao expandir diretório de utilizador em: '%s'"
 
-#: config.c:1132
+#: config.c:1284
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' em '%s' é carimbo de data/hora inválido"
 
-#: config.c:1223
+#: config.c:1377
 #, c-format
 msgid "abbrev length out of range: %d"
 msgstr ""
 
-#: config.c:1237 config.c:1248
+#: config.c:1391 config.c:1402
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "nível de compressão zlib %d incorreto"
 
-#: config.c:1340
+#: config.c:1494
 msgid "core.commentChar should only be one character"
 msgstr ""
 
-#: config.c:1373
+#: config.c:1527
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "modo inválido para criação de objeto: %s"
 
-#: config.c:1445
+#: config.c:1599
 #, fuzzy, c-format
 msgid "malformed value for %s"
 msgstr "valor desformado para %s"
 
-#: config.c:1471
+#: config.c:1625
 #, fuzzy, c-format
 msgid "malformed value for %s: %s"
-msgstr "valor inválido de %s: %s"
+msgstr ": %s"
 
-#: config.c:1472
+#: config.c:1626
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 
-#: config.c:1533 builtin/pack-objects.c:3649
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "nível de compactação do pacote %d incorreto"
 
-#: config.c:1655
+#: config.c:1809
 #, fuzzy, c-format
 msgid "unable to load config blob object '%s'"
 msgstr "incapaz carregar objeto blob config '%s'"
 
-#: config.c:1658
+#: config.c:1812
 #, fuzzy, c-format
 msgid "reference '%s' does not point to a blob"
 msgstr "referência '%s' aponta para blob nenhum"
 
-#: config.c:1675
+#: config.c:1829
 #, fuzzy, c-format
 msgid "unable to resolve config blob '%s'"
 msgstr "incapaz resolver blog config '%s'"
 
-#: config.c:1705
+#: config.c:1874
 #, fuzzy, c-format
 msgid "failed to parse %s"
 msgstr "falha a analisar %s"
 
-#: config.c:1759
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "incapaz analisar config de linha de comandos"
 
-#: config.c:2122
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "ocorreu um erro desconhecido durante a leitura dos ficheiros de configuração"
 
-#: config.c:2296
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Inválido %s: '%s'"
 
-#: config.c:2341
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "o valor '%d' de splitIndex.maxPercentChange deve estar entre 0 e 100"
 
-#: config.c:2387
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "incapaz analisar '%s' da configuração de linha de comandos"
 
-#: config.c:2389
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "variável de configuração '%s' incorreta no ficheiro '%s' na linha %d"
 
-#: config.c:2473
+#: config.c:2645
 #, fuzzy, c-format
 msgid "invalid section name '%s'"
 msgstr "conteúdo inválido: '%s'"
 
-#: config.c:2505
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s tem múltiplos valores"
 
-#: config.c:2534
+#: config.c:2706
 #, fuzzy, c-format
 msgid "failed to write new configuration file %s"
 msgstr "falha a escrever novo ficheiro configuração %s"
 
-#: config.c:2786 config.c:3112
+#: config.c:2958 config.c:3285
 #, fuzzy, c-format
 msgid "could not lock config file %s"
 msgstr "incapaz trancar ficheiro config %s"
 
-#: config.c:2797
+#: config.c:2969
 #, fuzzy, c-format
 msgid "opening %s"
 msgstr "abrindo %s"
 
-#: config.c:2834 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, fuzzy, c-format
 msgid "invalid pattern: %s"
 msgstr "padrão inválido: %s"
 
-#: config.c:2859
+#: config.c:3031
 #, fuzzy, c-format
 msgid "invalid config file %s"
 msgstr "ficheiro config inválido %s"
 
-#: config.c:2872 config.c:3125
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
-msgstr "falha de fstat de %s"
+msgstr "fstat em %s falhou"
 
-#: config.c:2883
+#: config.c:3055
 #, fuzzy, c-format
-msgid "unable to mmap '%s'"
-msgstr "incapaz mmap '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "incapaz mmap '%s'%s"
 
-#: config.c:2892 config.c:3130
+#: config.c:3065 config.c:3303
 #, fuzzy, c-format
 msgid "chmod on %s failed"
-msgstr "falha de fstat de %s"
+msgstr "chmod em %s falhou"
 
-#: config.c:2977 config.c:3227
+#: config.c:3150 config.c:3400
 #, fuzzy, c-format
 msgid "could not write config file %s"
 msgstr "incapaz escrever ficheiro config %s"
 
-#: config.c:3011
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "incapaz definir '%s' como '%s'"
 
-#: config.c:3013 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "incapaz desdefinir '%s'"
 
-#: config.c:3103
-#, fuzzy, c-format
+#: config.c:3276
+#, c-format
 msgid "invalid section name: %s"
-msgstr "opção inválida: %s"
+msgstr ""
 
-#: config.c:3270
-#, fuzzy, c-format
+#: config.c:3443
+#, c-format
 msgid "missing value for '%s'"
-msgstr "valor inválido de %s"
+msgstr ""
 
 #: connect.c:61
 #, fuzzy
@@ -2923,70 +3075,69 @@
 msgstr ""
 
 #: connect.c:306
-#, fuzzy, c-format
+#, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
-msgstr "esperava-se raso/aprofundar, obteve-se %s"
+msgstr ""
 
 #: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr ""
 
 #: connect.c:347
-#, fuzzy
 msgid "invalid packet"
-msgstr "caminho inválido '%s'"
+msgstr ""
 
 #: connect.c:367
-#, fuzzy, c-format
+#, c-format
 msgid "protocol error: unexpected '%s'"
-msgstr "erro de protocolo: cabeçalho de pacote incorreto"
+msgstr ""
 
-#: connect.c:473
+#: connect.c:497
 #, c-format
 msgid "unknown object format '%s' specified by server"
 msgstr "objeto desconhecido '%s' pelo formato em servidor."
 
-#: connect.c:500
-#, fuzzy, c-format
+#: connect.c:526
+#, c-format
 msgid "invalid ls-refs response: %s"
-msgstr "referência inválida: %s"
+msgstr ""
 
-#: connect.c:504
+#: connect.c:530
 msgid "expected flush after ref listing"
 msgstr ""
 
-#: connect.c:507
+#: connect.c:533
 msgid "expected response end packet after ref listing"
 msgstr ""
 
-#: connect.c:640
+#: connect.c:666
 #, fuzzy, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protocolo '%s' é insustentado"
 
-#: connect.c:691
+#: connect.c:717
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr ""
 
-#: connect.c:731 connect.c:794
-#, fuzzy, c-format
+#: connect.c:757 connect.c:820
+#, c-format
 msgid "Looking up %s ... "
-msgstr "A verificar o patch %s..."
+msgstr ""
 
-#: connect.c:735
+#: connect.c:761
 #, fuzzy, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "incapaz procurar %s (porta %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:739 connect.c:810
+#: connect.c:765 connect.c:836
 #, c-format
 msgid ""
 "done.\n"
 "Connecting to %s (port %s) ... "
 msgstr ""
 
-#: connect.c:761 connect.c:838
+#: connect.c:787 connect.c:864
 #, fuzzy, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2996,64 +3147,68 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:767 connect.c:844
+#: connect.c:793 connect.c:870
 #, fuzzy
 msgid "done."
 msgstr "concluído."
 
-#: connect.c:798
+#: connect.c:824
 #, fuzzy, c-format
 msgid "unable to look up %s (%s)"
 msgstr "incapaz procurar %s (%s)"
 
-#: connect.c:804
-#, fuzzy, c-format
+#: connect.c:830
+#, c-format
 msgid "unknown port %s"
-msgstr "opção desconhecido %s"
+msgstr ""
 
-#: connect.c:941 connect.c:1271
+#: connect.c:967 connect.c:1299
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr ""
 
-#: connect.c:943
+#: connect.c:969
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr ""
 
-#: connect.c:953
+#: connect.c:979
 #, fuzzy, c-format
 msgid "cannot start proxy %s"
 msgstr "incapaz começar proxy %s"
 
-#: connect.c:1024
+#: connect.c:1050
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 
-#: connect.c:1219
+#: connect.c:1190
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr ""
+
+#: connect.c:1247
 msgid "ssh variant 'simple' does not support -4"
 msgstr ""
 
-#: connect.c:1231
+#: connect.c:1259
 msgid "ssh variant 'simple' does not support -6"
 msgstr ""
 
-#: connect.c:1248
+#: connect.c:1276
 #, fuzzy
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh variant 'simple' insustenta definir porta"
 
-#: connect.c:1360
+#: connect.c:1388
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr ""
 
-#: connect.c:1408
+#: connect.c:1436
 #, fuzzy
 msgid "unable to fork"
 msgstr "incapaz de aforquilhar"
 
-#: connected.c:108 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "A verificar conectividade"
 
@@ -3063,23 +3218,23 @@
 
 #: connected.c:144
 msgid "failed write to rev-list"
-msgstr "falha ao escrever para rev-list"
+msgstr "falhou escrever para rev-list"
 
 #: connected.c:149
 msgid "failed to close rev-list's stdin"
 msgstr "falha ao fechar entrada padrão de rev-list"
 
-#: convert.c:194
+#: convert.c:183
 #, c-format
 msgid "illegal crlf_action %d"
 msgstr ""
 
-#: convert.c:207
+#: convert.c:196
 #, fuzzy, c-format
 msgid "CRLF would be replaced by LF in %s"
 msgstr "CRLF será substituído por LF em %s."
 
-#: convert.c:209
+#: convert.c:198
 #, fuzzy, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -3088,12 +3243,12 @@
 "CRLF será substituído por LF em %s.\n"
 "O final de linha original será mantido no ficheiro da sua árvore de trabalho."
 
-#: convert.c:217
+#: convert.c:206
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "LF será substituído por CRLF em %s."
 
-#: convert.c:219
+#: convert.c:208
 #, fuzzy, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -3102,91 +3257,90 @@
 "LF será substituído por CRLF em %s.\n"
 "O final de linha original será mantido no ficheiro da sua árvore de trabalho."
 
-#: convert.c:284
+#: convert.c:273
 #, c-format
 msgid "BOM is prohibited in '%s' if encoded as %s"
 msgstr ""
 
-#: convert.c:291
+#: convert.c:280
 #, c-format
 msgid ""
 "The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
 "working-tree-encoding."
 msgstr ""
 
-#: convert.c:304
+#: convert.c:293
 #, c-format
 msgid "BOM is required in '%s' if encoded as %s"
 msgstr ""
 
-#: convert.c:306
+#: convert.c:295
 #, c-format
 msgid ""
 "The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
 "%sLE (depending on the byte order) as working-tree-encoding."
 msgstr ""
 
-#: convert.c:419 convert.c:490
+#: convert.c:408 convert.c:479
 #, fuzzy, c-format
 msgid "failed to encode '%s' from %s to %s"
 msgstr "falha ao copiar notas de '%s' para '%s'"
 
-#: convert.c:462
+#: convert.c:451
 #, c-format
 msgid "encoding '%s' from %s to %s and back is not the same"
 msgstr ""
 
-#: convert.c:665
+#: convert.c:654
 #, fuzzy, c-format
 msgid "cannot fork to run external filter '%s'"
 msgstr "incapaz aforquilhar para correr filtro externo '%s'"
 
-#: convert.c:685
+#: convert.c:674
 #, fuzzy, c-format
 msgid "cannot feed the input to external filter '%s'"
 msgstr "incapaz introduzir input para filtro externo '%s'"
 
-#: convert.c:692
+#: convert.c:681
 #, fuzzy, c-format
 msgid "external filter '%s' failed %d"
 msgstr "filtro externo '%s' falhou %d"
 
-#: convert.c:727 convert.c:730
+#: convert.c:716 convert.c:719
 #, c-format
 msgid "read from external filter '%s' failed"
 msgstr ""
 
-#: convert.c:733 convert.c:788
+#: convert.c:722 convert.c:777
 #, fuzzy, c-format
 msgid "external filter '%s' failed"
-msgstr "falha ao mudar o nome de '%s'"
+msgstr "filtro externo '%s' falhou"
+
+#: convert.c:826
+msgid "unexpected filter type"
+msgstr ""
 
 #: convert.c:837
-#, fuzzy
-msgid "unexpected filter type"
-msgstr "fim de ficheiro inesperado"
-
-#: convert.c:848
 msgid "path name too long for external filter"
 msgstr ""
 
-#: convert.c:940
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr ""
 
-#: convert.c:1240
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr ""
 
-#: convert.c:1428 convert.c:1462
-#, fuzzy, c-format
+#: convert.c:1416 convert.c:1449
+#, c-format
 msgid "%s: clean filter '%s' failed"
-msgstr "falha ao criar '%s'"
+msgstr ""
 
-#: convert.c:1508
+#: convert.c:1492
 #, fuzzy, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "falha ao atualizar os ficheiros"
@@ -3297,9 +3451,9 @@
 msgstr "objeto árvore"
 
 #: delta-islands.c:334
-#, fuzzy, c-format
+#, c-format
 msgid "failed to load island regex for '%s': %s"
-msgstr "falha ao abrir '%s': %s"
+msgstr ""
 
 #: delta-islands.c:390
 #, c-format
@@ -3311,33 +3465,38 @@
 msgid "Marked %d islands, done.\n"
 msgstr ""
 
-#: diff-lib.c:534
+#: diff-merges.c:70
+#, fuzzy, c-format
+msgid "unknown value for --diff-merges: %s"
+msgstr "valor desconhecido '%s' da chave '%s'"
+
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr ""
 
-#: diff-lib.c:536
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr ""
 
-#: diff-lib.c:553
+#: diff-lib.c:576
 #, fuzzy
 msgid "unable to get HEAD"
 msgstr "incapaz obter HEAD"
 
-#: diff-lib.c:560
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr ""
 
-#: diff-lib.c:562
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr ""
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 #, fuzzy
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git worktree add [<opções>] <caminho> [<ramo>]"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3386,36 +3545,46 @@
 "Erros encontrados na variável de configuração 'diff.dirstat':\n"
 "%s"
 
-#: diff.c:4276
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "o diff externo terminou inesperadamente, interrompido em %s"
 
-#: diff.c:4625
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check e -s são mutuamente exclusivos"
 
-#: diff.c:4628
-#, fuzzy
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
-msgstr "-b, -B e --detach são mutuamente exclusivos"
+msgstr ""
 
-#: diff.c:4706
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requer exatamente um único especificador de caminho"
 
-#: diff.c:4754
+#: diff.c:4770
 #, fuzzy, c-format
 msgid "invalid --stat value: %s"
 msgstr "valor de cor inválido: %.*s"
 
-#: diff.c:4759 diff.c:4764 diff.c:4769 diff.c:4774 diff.c:5302
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
-#, fuzzy, c-format
+#, c-format
 msgid "%s expects a numerical value"
-msgstr "a opção '%c' espera um valor numérico"
+msgstr ""
 
-#: diff.c:4791
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3424,539 +3593,544 @@
 "Falha ao analisar parâmetro da opção --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4876
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4900
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4914
+#: diff.c:4930
 #, fuzzy, c-format
 msgid "unable to resolve '%s'"
 msgstr "incapaz resolver '%s'"
 
-#: diff.c:4964 diff.c:4970
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4982
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:5003
+#: diff.c:5019
 #, fuzzy, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "argumento incorreto --color-moved: %s"
 
-#: diff.c:5022
+#: diff.c:5038
 #, fuzzy, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "objeto inválido '%s' fornecido."
 
-#: diff.c:5062
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 
-#: diff.c:5098 diff.c:5118
-#, fuzzy, c-format
+#: diff.c:5114 diff.c:5134
+#, c-format
 msgid "invalid argument to %s"
-msgstr "valor inválido de %s"
+msgstr ""
 
-#: diff.c:5222
-#, fuzzy, c-format
+#: diff.c:5238
+#, c-format
 msgid "invalid regex given to -I: '%s'"
-msgstr "valor inválido de %s"
+msgstr ""
 
-#: diff.c:5271
+#: diff.c:5287
 #, fuzzy, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "Falha ao analisar parâmetro da opção --submodule: '%s'"
 
-#: diff.c:5327
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5350
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5352 diff.c:5358
+#: diff.c:5381 diff.c:5387
 #, fuzzy
 msgid "generate patch"
 msgstr "incorporar o patch"
 
-#: diff.c:5355 builtin/log.c:178
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "suprimir saída do diff"
 
-#: diff.c:5360 diff.c:5474 diff.c:5481
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5361 diff.c:5364
+#: diff.c:5390 diff.c:5393
 #, fuzzy
 msgid "generate diffs with <n> lines context"
 msgstr "garantir que, pelo menos, <n> linhas de contexto coincidem"
 
-#: diff.c:5366
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5369
-#, fuzzy
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
-msgstr "(sinónimo de --stat)"
+msgstr ""
 
-#: diff.c:5373
-#, fuzzy
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
-msgstr "(sinónimo de --stat)"
+msgstr ""
 
-#: diff.c:5377
+#: diff.c:5406
 #, fuzzy
 msgid "machine friendly --stat"
 msgstr "saída inteligível por máquina"
 
-#: diff.c:5380
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5382 diff.c:5390
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5383
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5387
+#: diff.c:5416
 #, fuzzy
 msgid "synonym for --dirstat=cumulative"
-msgstr "sinónimo de --files-with-matches"
+msgstr "sinónimo de --dirstat=cumulative"
 
-#: diff.c:5391
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5395
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5398
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 
-#: diff.c:5401
-#, fuzzy
+#: diff.c:5430
 msgid "show only names of changed files"
-msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
+msgstr ""
 
-#: diff.c:5404
-#, fuzzy
+#: diff.c:5433
 msgid "show only names and status of changed files"
-msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
+msgstr ""
 
-#: diff.c:5406
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5407
+#: diff.c:5436
 #, fuzzy
 msgid "generate diffstat"
 msgstr "diff status inesperado %c"
 
-#: diff.c:5409 diff.c:5412 diff.c:5415
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5410
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5413
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5416
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5418
+#: diff.c:5447
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5419
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5422
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr ""
 
-#: diff.c:5425
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5428
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5430
+#: diff.c:5459
 #, fuzzy
 msgid "show colored diff"
 msgstr "mostrar ficheiros ignorados"
 
-#: diff.c:5431
+#: diff.c:5460
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5432
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5435
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5438 diff.c:5441 diff.c:5444 diff.c:5553
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 #, fuzzy
 msgid "<prefix>"
 msgstr "<prefixo>/"
 
-#: diff.c:5439
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5442
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5445
+#: diff.c:5474
 #, fuzzy
 msgid "prepend an additional prefix to every line of output"
 msgstr "preceder o nomebase do projeto pai na saída"
 
-#: diff.c:5448
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5451
+#: diff.c:5480
 #, fuzzy
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "criar um clone raso, truncado ao número especificado de revisões"
 
-#: diff.c:5455 diff.c:5460 diff.c:5465
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5456
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5461
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5466
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5469
-#, fuzzy
+#: diff.c:5498
 msgid "Diff rename options"
-msgstr "Opções genéricas"
+msgstr ""
 
-#: diff.c:5470
+#: diff.c:5499
 #, fuzzy
 msgid "<n>[/<m>]"
 msgstr "<n>[,<base>]"
 
-#: diff.c:5471
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5475
+#: diff.c:5504
 #, fuzzy
 msgid "detect renames"
-msgstr "nome do remoto"
+msgstr "detetar renomeações"
 
-#: diff.c:5479
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5482
+#: diff.c:5511
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5486
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5488
+#: diff.c:5517
 #, fuzzy
 msgid "disable rename detection"
 msgstr "Deteção de mudança de nome inexata em curso"
 
-#: diff.c:5491
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5493
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5496
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5498
-#, fuzzy
+#: diff.c:5527
 msgid "Diff algorithm options"
-msgstr "opção inválida: %s"
+msgstr ""
 
-#: diff.c:5500
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5503
-#, fuzzy
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
-msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+msgstr ""
 
-#: diff.c:5506
-#, fuzzy
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
-msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+msgstr ""
 
-#: diff.c:5509
-#, fuzzy
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
-msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+msgstr ""
 
-#: diff.c:5512
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5515
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5517 diff.c:5539 diff.c:5542 diff.c:5587
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr ""
 
-#: diff.c:5518
-#, fuzzy
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
-msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+msgstr ""
 
-#: diff.c:5521
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5524
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5528
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5530
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5531
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5533
+#: diff.c:5562
 #, fuzzy
 msgid "<text>"
 msgstr "texto"
 
-#: diff.c:5534
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5536 diff.c:5545 diff.c:5548
+#: diff.c:5565 diff.c:5574 diff.c:5577
 #, fuzzy
 msgid "<mode>"
 msgstr "modo"
 
-#: diff.c:5537
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5540
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5543
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5546
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5549
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5552
-#, fuzzy
+#: diff.c:5581
 msgid "Other diff options"
-msgstr "Opções genéricas"
+msgstr ""
 
-#: diff.c:5554
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5558
+#: diff.c:5587
 #, fuzzy
 msgid "treat all files as text"
 msgstr "processar ficheiros binários como texto"
 
-#: diff.c:5560
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5562
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5564
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5566
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5568
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5570
+#: diff.c:5599
 #, fuzzy
 msgid "<when>"
 msgstr "quando"
 
-#: diff.c:5571
+#: diff.c:5600
 #, fuzzy
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "ignorar alterações em submódulos, quando é opcional: all, dirty, untracked. "
 "(Predefinição: all)"
 
-#: diff.c:5574
+#: diff.c:5603
 #, fuzzy
 msgid "<format>"
 msgstr "formato"
 
-#: diff.c:5575
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5579
-#, fuzzy
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
-msgstr "usar .gitattributes apenas a partir do índice"
+msgstr ""
 
-#: diff.c:5582
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5584
+#: diff.c:5613
 #, fuzzy
 msgid "<string>"
 msgstr "cadeia"
 
-#: diff.c:5585
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5588
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5591
+#: diff.c:5620
 #, fuzzy
 msgid "show all changes in the changeset with -S or -G"
 msgstr "mostrar ficheiros com correspondências no paginador"
 
-#: diff.c:5594
+#: diff.c:5623
 #, fuzzy
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "usar expressões regulares estendidas do POSIX"
 
-#: diff.c:5597
+#: diff.c:5626
 #, fuzzy
 msgid "control the order in which files appear in the output"
 msgstr "mostrar outros ficheiros na saída"
 
-#: diff.c:5598
+#: diff.c:5627 diff.c:5630
+#, fuzzy
+msgid "<path>"
+msgstr "path"
+
+#: diff.c:5628
+#, fuzzy
+msgid "show the change in the specified path first"
+msgstr ""
+"escrever o ficheiro de índice do pacote na versão de formato especificada"
+
+#: diff.c:5631
+#, fuzzy
+msgid "skip the output to the specified path"
+msgstr "Repor a HEAD atual no estado especificado"
+
+#: diff.c:5633
 #, fuzzy
 msgid "<object-id>"
 msgstr "objeto"
 
-#: diff.c:5599
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5601
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5602
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5604
+#: diff.c:5639
 #, fuzzy
 msgid "<file>"
 msgstr "ficheiro"
 
-#: diff.c:5605
+#: diff.c:5640
 #, fuzzy
 msgid "Output to a specific file"
 msgstr "submeter somente os ficheiros especificados"
 
-#: diff.c:6262
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+#, fuzzy
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"a deteção mudança de nome inexata foi omitida devido a demasiados ficheiros."
+"detecção de renomeação exaustiva foi ignorada devido a demasiados ficheiros."
 
-#: diff.c:6265
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "só foram encontradas cópias de caminhos modificados devido a demasiados "
 "ficheiros."
 
-#: diff.c:6268
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3966,67 +4140,72 @@
 #: diffcore-order.c:24
 #, c-format
 msgid "failed to read orderfile '%s'"
-msgstr "falha ao ler o ficheiro de comando '%s'"
+msgstr "falha ao ler ficheiro de comando '%s'"
 
-#: diffcore-rename.c:592
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Deteção de mudança de nome inexata em curso"
 
-#: dir.c:578
+#: diffcore-rotate.c:29
+#, fuzzy, c-format
+msgid "No such path '%s' in the diff"
+msgstr "path %s inexistente em %s"
+
+#: dir.c:593
 #, fuzzy, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
-msgstr "especificador de path '%s' correspondeu a ficheiro nenhum "
-"conhecido pelo git"
+msgstr ""
+"especificador de path '%s' correspondeu a ficheiro nenhum conhecido pelo git"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, fuzzy, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "padrão irreconhecível: '%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, fuzzy, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "por reconhecer padrão negativo: '%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr ""
 
-#: dir.c:1198
+#: dir.c:1214
 #, fuzzy, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "incapaz usar %s como ficheiro de exclusão"
 
-#: dir.c:2305
+#: dir.c:2351
 #, fuzzy, c-format
 msgid "could not open directory '%s'"
 msgstr "incapaz abrir pasta '%s'"
 
-#: dir.c:2605
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "falha ao obter nome e informação do kernel"
 
-#: dir.c:2729
+#: dir.c:2777
 #, fuzzy
 msgid "untracked cache is disabled on this system or location"
 msgstr "cache untracked está desativada neste sistema ou localização."
 
-#: dir.c:3520
-#, fuzzy, c-format
+#: dir.c:3610
+#, c-format
 msgid "index file corrupt in repo %s"
-msgstr "ficheiro de índice corrompido"
+msgstr ""
 
-#: dir.c:3565 dir.c:3570
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "incapaz criar pasta para %s"
 
-#: dir.c:3599
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "incapaz migrar pasta git de '%s' para '%s'"
@@ -4036,318 +4215,331 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr ""
 
-#: entry.c:177
+#: entry.c:176
 #, fuzzy
 msgid "Filtering content"
 msgstr "imprimir conteúdo da tag"
 
-#: entry.c:478
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
-msgstr "incapaz obter estatutário de ficheiro '%s'"
+msgstr "incapaz de stat o ficheiro '%s'"
 
-#: environment.c:150
+#: environment.c:152
 #, c-format
 msgid "bad git namespace path \"%s\""
 msgstr ""
 
-#: environment.c:337
+#: environment.c:334
 #, fuzzy, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "incapaz definir GIT_DIR para '%s'"
 
 #: exec-cmd.c:363
-#, fuzzy, c-format
+#, c-format
 msgid "too many args to run %s"
-msgstr "Demasiados argumentos."
+msgstr ""
 
-#: fetch-pack.c:177
+#: fetch-pack.c:182
 msgid "git fetch-pack: expected shallow list"
-msgstr "git fetch-pack: esperava-se lista rasa"
+msgstr "git fetch-pack: esperado lista rasa"
 
-#: fetch-pack.c:180
+#: fetch-pack.c:185
 #, fuzzy
 msgid "git fetch-pack: expected a flush packet after shallow list"
-msgstr "git fetch-pack: esperava-se lista rasa"
+msgstr "git fetch-pack: esperado pacote flush após lista rasa"
 
-#: fetch-pack.c:191
+#: fetch-pack.c:196
 #, fuzzy
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: esperava-se ACK/NAK, obteve-se '%s'"
 
-#: fetch-pack.c:211
+#: fetch-pack.c:216
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: esperava-se ACK/NAK, obteve-se '%s'"
 
-#: fetch-pack.c:222
+#: fetch-pack.c:227
 #, fuzzy
 msgid "unable to write to remote"
 msgstr "incapaz escrever para remoto"
 
-#: fetch-pack.c:283
+#: fetch-pack.c:288
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc requer multi_ack_detailed"
 
-#: fetch-pack.c:378 fetch-pack.c:1406
+#: fetch-pack.c:383 fetch-pack.c:1423
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "linha rasa inválida: %s"
 
-#: fetch-pack.c:384 fetch-pack.c:1412
+#: fetch-pack.c:389 fetch-pack.c:1429
 #, c-format
 msgid "invalid unshallow line: %s"
-msgstr "linha para aprofundar inválida: %s"
+msgstr "linha por aprofundar inválida: %s"
 
-#: fetch-pack.c:386 fetch-pack.c:1414
+#: fetch-pack.c:391 fetch-pack.c:1431
 #, c-format
 msgid "object not found: %s"
 msgstr "objeto perdido: %s"
 
-#: fetch-pack.c:389 fetch-pack.c:1417
+#: fetch-pack.c:394 fetch-pack.c:1434
 #, c-format
 msgid "error in object: %s"
 msgstr "erro no objeto: %s"
 
-#: fetch-pack.c:391 fetch-pack.c:1419
+#: fetch-pack.c:396 fetch-pack.c:1436
 #, c-format
 msgid "no shallow found: %s"
-msgstr "shallow perdido: %s"
+msgstr "shallow por encontrar: %s"
 
-#: fetch-pack.c:394 fetch-pack.c:1423
+#: fetch-pack.c:399 fetch-pack.c:1440
 #, c-format
 msgid "expected shallow/unshallow, got %s"
-msgstr "esperava-se raso/aprofundar, obteve-se %s"
+msgstr "esperado shallow/unshallow, recebi %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:439
 #, c-format
 msgid "got %s %d %s"
 msgstr "obteve-se %s %d %s"
 
-#: fetch-pack.c:451
+#: fetch-pack.c:456
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit inválido %s"
 
-#: fetch-pack.c:482
+#: fetch-pack.c:487
 msgid "giving up"
-msgstr "desistência"
+msgstr "a desistir"
 
-#: fetch-pack.c:495 progress.c:339
+#: fetch-pack.c:500 progress.c:339
 msgid "done"
 msgstr "concluído"
 
-#: fetch-pack.c:507
+#: fetch-pack.c:512
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "obteve-se %s (%d) %s"
 
-#: fetch-pack.c:543
+#: fetch-pack.c:548
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marcado %s como completo"
 
-#: fetch-pack.c:758
+#: fetch-pack.c:763
 #, c-format
 msgid "already have %s (%s)"
 msgstr "já se tem %s (%s)"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:849
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: incapaz de aforquilhar demultiplexer sideband"
 
-#: fetch-pack.c:835
+#: fetch-pack.c:857
 msgid "protocol error: bad pack header"
-msgstr "erro de protocolo: cabeçalho de pacote incorreto"
+msgstr ""
 
-#: fetch-pack.c:919
+#: fetch-pack.c:951
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: incapaz de aforquilhar %s"
 
-#: fetch-pack.c:937
+#: fetch-pack.c:957
+msgid "fetch-pack: invalid index-pack output"
+msgstr ""
+
+#: fetch-pack.c:974
 #, c-format
 msgid "%s failed"
 msgstr "%s falhou"
 
-#: fetch-pack.c:939
+#: fetch-pack.c:976
 msgid "error in sideband demultiplexer"
 msgstr "erro em demultiplexer sideband"
 
-#: fetch-pack.c:982
+#: fetch-pack.c:1019
 #, c-format
 msgid "Server version is %.*s"
 msgstr "A versão do servidor é %.*s"
 
-#: fetch-pack.c:990 fetch-pack.c:996 fetch-pack.c:999 fetch-pack.c:1005
-#: fetch-pack.c:1009 fetch-pack.c:1013 fetch-pack.c:1017 fetch-pack.c:1021
-#: fetch-pack.c:1025 fetch-pack.c:1029 fetch-pack.c:1033 fetch-pack.c:1037
-#: fetch-pack.c:1043 fetch-pack.c:1049 fetch-pack.c:1054 fetch-pack.c:1059
+#: fetch-pack.c:1027 fetch-pack.c:1033 fetch-pack.c:1036 fetch-pack.c:1042
+#: fetch-pack.c:1046 fetch-pack.c:1050 fetch-pack.c:1054 fetch-pack.c:1058
+#: fetch-pack.c:1062 fetch-pack.c:1066 fetch-pack.c:1070 fetch-pack.c:1074
+#: fetch-pack.c:1080 fetch-pack.c:1086 fetch-pack.c:1091 fetch-pack.c:1096
 #, fuzzy, c-format
 msgid "Server supports %s"
 msgstr "O servidor suporta side-band"
 
-#: fetch-pack.c:992
+#: fetch-pack.c:1029
 msgid "Server does not support shallow clients"
 msgstr "Servidor insustenta clientes shallow"
 
-#: fetch-pack.c:1052
+#: fetch-pack.c:1089
 msgid "Server does not support --shallow-since"
 msgstr "Servidor insustenta --shallow-since"
 
-#: fetch-pack.c:1057
+#: fetch-pack.c:1094
 msgid "Server does not support --shallow-exclude"
 msgstr "Servidor insustenta --shallow-exclude"
 
-#: fetch-pack.c:1061
+#: fetch-pack.c:1098
 msgid "Server does not support --deepen"
 msgstr "Servidor insustenta --deepen"
 
-#: fetch-pack.c:1063
+#: fetch-pack.c:1100
 #, fuzzy
 msgid "Server does not support this repository's object format"
 msgstr "Servidor insustenta formato de objeto deste repositório"
 
-#: fetch-pack.c:1076
+#: fetch-pack.c:1113
 msgid "no common commits"
 msgstr "commits comuns nenhuns"
 
-#: fetch-pack.c:1088 fetch-pack.c:1628
+#: fetch-pack.c:1122 fetch-pack.c:1469 builtin/clone.c:1238
+#, fuzzy
+msgid "source repository is shallow, reject to clone."
+msgstr "o repositório de origem é raso, --local ignorado"
+
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: falha ao obter."
 
-#: fetch-pack.c:1214
+#: fetch-pack.c:1242
 #, c-format
 msgid "mismatched algorithms: client %s; server %s"
 msgstr ""
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1246
 #, fuzzy, c-format
 msgid "the server does not support algorithm '%s'"
 msgstr "o servidor insustenta algoritmo '%s'"
 
-#: fetch-pack.c:1238
+#: fetch-pack.c:1279
 #, fuzzy
 msgid "Server does not support shallow requests"
 msgstr "Servidor insustenta pedidos shallow"
 
-#: fetch-pack.c:1245
+#: fetch-pack.c:1286
 #, fuzzy
 msgid "Server supports filter"
 msgstr "Servidor sustenta filtro"
 
-#: fetch-pack.c:1284
+#: fetch-pack.c:1329 fetch-pack.c:2043
 #, fuzzy
 msgid "unable to write request to remote"
 msgstr "incapaz escrever pedidos para remoto"
 
-#: fetch-pack.c:1302
+#: fetch-pack.c:1347
 #, c-format
 msgid "error reading section header '%s'"
 msgstr ""
 
-#: fetch-pack.c:1308
-#, fuzzy, c-format
+#: fetch-pack.c:1353
+#, c-format
 msgid "expected '%s', received '%s'"
-msgstr "blob para %s '%s' esperado"
+msgstr ""
 
-#: fetch-pack.c:1369
+#: fetch-pack.c:1387
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1374
+#: fetch-pack.c:1392
 #, c-format
 msgid "error processing acks: %d"
 msgstr ""
 
-#: fetch-pack.c:1384
+#: fetch-pack.c:1402
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1404
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1428
+#: fetch-pack.c:1445
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr ""
 
-#: fetch-pack.c:1475
-#, fuzzy, c-format
+#: fetch-pack.c:1494
+#, c-format
 msgid "expected wanted-ref, got '%s'"
-msgstr "esperava-se raso/aprofundar, obteve-se %s"
+msgstr ""
 
-#: fetch-pack.c:1480
-#, fuzzy, c-format
+#: fetch-pack.c:1499
+#, c-format
 msgid "unexpected wanted-ref: '%s'"
-msgstr "fim de ficheiro inesperado"
+msgstr ""
 
-#: fetch-pack.c:1485
+#: fetch-pack.c:1504
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr ""
 
-#: fetch-pack.c:1515
+#: fetch-pack.c:1534
 #, fuzzy
 msgid "git fetch-pack: expected response end packet"
-msgstr "git fetch-pack: esperava-se lista rasa"
+msgstr "git fetch-pack: esperado pacote fim de resposta"
 
-#: fetch-pack.c:1897
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "corresponde a remote head nenhuma"
 
-#: fetch-pack.c:1920 builtin/clone.c:693
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "remoto faltou enviar todos objetos necessários"
 
-#: fetch-pack.c:1947
+#: fetch-pack.c:2065
+msgid "unexpected 'ready' from remote"
+msgstr ""
+
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "referência remota %s inexistente"
 
-#: fetch-pack.c:1950
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Servidor proíbe pedido de objeto por anunciar %s"
 
-#: gpg-interface.c:272
+#: gpg-interface.c:273
 msgid "could not create temporary file"
 msgstr "incapaz criar ficheiro temporário"
 
-#: gpg-interface.c:275
+#: gpg-interface.c:276
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "falha ao escrever assinatura destacada em '%s'"
 
-#: gpg-interface.c:457
+#: gpg-interface.c:470
 msgid "gpg failed to sign the data"
 msgstr "gpg falhou assinar os dados"
 
 #: graph.c:98
-#, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+#, fuzzy, c-format
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr "ignorar cor inválida '%.*s' em log.graphColors"
 
-#: grep.c:640
+#: grep.c:531
 msgid ""
 "given pattern contains NULL byte (via -f <file>). This is only supported "
 "with -P under PCRE v2"
 msgstr ""
 
-#: grep.c:2100
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': incapaz ler %s"
 
-#: grep.c:2117 setup.c:176 builtin/clone.c:412 builtin/diff.c:89
-#: builtin/rm.c:135
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
-msgstr "falha ao invocar stat de '%s'"
+msgstr ""
 
-#: grep.c:2128
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': leitura truncada"
@@ -4417,7 +4609,7 @@
 msgid "These are common Git commands used in various situations:"
 msgstr "Estes são comandos do Git comuns usados em diversas situações:"
 
-#: help.c:365 git.c:99
+#: help.c:365 git.c:100
 #, fuzzy, c-format
 msgid "unsupported command listing type '%s'"
 msgstr "insustento para listagem tipo comandos '%s'"
@@ -4569,47 +4761,52 @@
 msgid "name consists only of disallowed characters: %s"
 msgstr "nome consiste apenas de caracteres proíbidos: %s"
 
-#: ident.c:454 builtin/commit.c:634
+#: ident.c:454 builtin/commit.c:647
 #, c-format
 msgid "invalid date format: %s"
 msgstr "formato de data inválido: %s"
 
-#: list-objects-filter-options.c:81
+#: list-objects-filter-options.c:83
 msgid "expected 'tree:<depth>'"
 msgstr ""
 
-#: list-objects-filter-options.c:96
+#: list-objects-filter-options.c:98
 msgid "sparse:path filters support has been dropped"
 msgstr ""
 
-#: list-objects-filter-options.c:109
+#: list-objects-filter-options.c:105
 #, fuzzy, c-format
-msgid "invalid filter-spec '%s'"
-msgstr "ficheiro inválido: '%s'"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
+msgstr "'%s' para 'object:type=<type>' é um tipo de objecto inválido"
 
-#: list-objects-filter-options.c:125
+#: list-objects-filter-options.c:124
+#, c-format
+msgid "invalid filter-spec '%s'"
+msgstr ""
+
+#: list-objects-filter-options.c:140
 #, c-format
 msgid "must escape char in sub-filter-spec: '%c'"
 msgstr ""
 
-#: list-objects-filter-options.c:167
+#: list-objects-filter-options.c:182
 msgid "expected something after combine:"
 msgstr ""
 
-#: list-objects-filter-options.c:249
+#: list-objects-filter-options.c:264
 msgid "multiple filter-specs cannot be combined"
 msgstr ""
 
-#: list-objects-filter-options.c:361
+#: list-objects-filter-options.c:376
 msgid "unable to upgrade repository format to support partial clone"
 msgstr ""
 
-#: list-objects-filter.c:492
+#: list-objects-filter.c:532
 #, fuzzy, c-format
 msgid "unable to access sparse blob in '%s'"
 msgstr "incapaz acessar blob sparse em '%s'"
 
-#: list-objects-filter.c:495
+#: list-objects-filter.c:535
 #, fuzzy, c-format
 msgid "unable to parse sparse filter data in %s"
 msgstr "incapaz analisar dados de filtro sparse em %s"
@@ -4624,7 +4821,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr ""
 
-#: list-objects.c:375
+#: list-objects.c:398
 #, fuzzy, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "incapaz carregar raiz de árvore para commit %s"
@@ -4653,123 +4850,57 @@
 msgid "Unable to create '%s.lock': %s"
 msgstr "Incapaz de criar '%s.lock': %s"
 
-#: ls-refs.c:109
+#: ls-refs.c:37
+#, c-format
+msgid "invalid value '%s' for lsrefs.unborn"
+msgstr ""
+
+#: ls-refs.c:167
 msgid "expected flush after ls-refs arguments"
 msgstr ""
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3672
-#, fuzzy, c-format
-msgid ""
-"Your local changes to the following files would be overwritten by merge:\n"
-"  %s"
+#: mailinfo.c:1050
+msgid "quoted CRLF detected"
 msgstr ""
-"As suas alterações locais nos seguintes ficheiros seriam substituídas ao "
-"integrar:\n"
-"%%s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3436
+#: mailinfo.c:1254 builtin/am.c:176 builtin/mailinfo.c:46
 #, fuzzy, c-format
-msgid "Already up to date!"
-msgstr "Já está atualizado!"
+msgid "bad action '%s' for '%s'"
+msgstr "ação inválida '%s' para '%s'"
 
-#: merge-recursive.c:356
-msgid "(bad commit)\n"
-msgstr "(commit incorreto)\n"
-
-#: merge-recursive.c:379
-#, fuzzy, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "addinfo_cache falhou no caminho '%s'"
-
-#: merge-recursive.c:388
-#, fuzzy, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "addinfo_cache falhou no caminho '%s'"
-
-#: merge-recursive.c:874
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
-msgid "failed to create path '%s'%s"
-msgstr "falha ao criar o caminho '%s'%s"
-
-#: merge-recursive.c:885
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "A remover %s para criar espaço para o subdiretório\n"
-
-#: merge-recursive.c:899 merge-recursive.c:918
-msgid ": perhaps a D/F conflict?"
-msgstr ": talvez um conflito D/F?"
-
-#: merge-recursive.c:908
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "recusando perder ficheiro untracked em '%s'"
-
-#: merge-recursive.c:949 builtin/cat-file.c:41
-#, c-format
-msgid "cannot read object %s '%s'"
-msgstr "incapaz ler objeto %s '%s'"
-
-#: merge-recursive.c:954
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob para %s '%s' esperado"
-
-#: merge-recursive.c:979
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "falha ao abrir '%s': %s"
-
-#: merge-recursive.c:990
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "falha ao criar a ligação simbólica '%s': %s"
-
-#: merge-recursive.c:995
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "desconheço que fazer com %06o %s '%s'"
-
-#: merge-recursive.c:1191
-#, fuzzy, c-format
 msgid "Failed to merge submodule %s (not checked out)"
-msgstr "Falha ao registar o submódulo '$sm_path'"
+msgstr ""
 
-#: merge-recursive.c:1198
-#, fuzzy, c-format
+#: merge-ort.c:1578 merge-recursive.c:1208
+#, c-format
 msgid "Failed to merge submodule %s (commits not present)"
-msgstr "Falha ao registar o submódulo '$sm_path'"
+msgstr ""
 
-#: merge-recursive.c:1205
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
+msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr ""
 
-#: merge-recursive.c:1216 merge-recursive.c:1228
+#: merge-ort.c:1625
 #, fuzzy, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Avanço-rápido para $sha1"
+msgid "Failed to merge submodule %s"
+msgstr "falha a percorrer recursivamente dentro de submódulo '%s'"
 
-#: merge-recursive.c:1251
+#: merge-ort.c:1632
 #, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists:\n"
+"%s\n"
 msgstr ""
 
-#: merge-recursive.c:1255
-#, fuzzy, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Falha ao registar o submódulo '$sm_path'"
-
-#: merge-recursive.c:1256
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr ""
-
-#: merge-recursive.c:1259
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4780,32 +4911,287 @@
 "which will accept this suggestion.\n"
 msgstr ""
 
-#: merge-recursive.c:1268
+#: merge-ort.c:1649
 #, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
 msgstr ""
 
-#: merge-recursive.c:1341
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Falha ao executar integração interna"
 
-#: merge-recursive.c:1346
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Incapaz de adicionar %s à base de dados"
 
-#: merge-recursive.c:1378
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "A integrar automaticamente %s"
 
-#: merge-recursive.c:1402
+#: merge-ort.c:2019 merge-recursive.c:2118
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+
+#: merge-ort.c:2029 merge-recursive.c:2128
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+
+#: merge-ort.c:2087
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
+msgstr ""
+
+#: merge-ort.c:2241 merge-recursive.c:2464
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+
+#: merge-ort.c:2385 merge-recursive.c:3247
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+
+#: merge-ort.c:2392 merge-recursive.c:3254
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+
+#: merge-ort.c:2405 merge-recursive.c:3250
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+
+#: merge-ort.c:2413 merge-recursive.c:3257
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+
+#: merge-ort.c:2569
+#, fuzzy, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome "
+"%s->%s em %s"
+
+#: merge-ort.c:2664
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+
+#: merge-ort.c:2683 merge-ort.c:2707
+#, fuzzy, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"CONFLITO (mudar nome/adicionar): Mudar o nome %s->%s em %s. %s adicionado em "
+"%s"
+
+#: merge-ort.c:3182 merge-recursive.c:3008
+#, c-format
+msgid "cannot read object %s"
+msgstr "incapaz ler objeto %s"
+
+#: merge-ort.c:3185 merge-recursive.c:3011
+#, c-format
+msgid "object %s is not a blob"
+msgstr "objeto %s é blob nenhum"
+
+#: merge-ort.c:3613
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+
+#: merge-ort.c:3689
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed both "
+"of them so each can be recorded somewhere."
+msgstr ""
+
+#: merge-ort.c:3696
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed one "
+"of them so each can be recorded somewhere."
+msgstr ""
+
+#: merge-ort.c:3796 merge-recursive.c:3087
+msgid "content"
+msgstr "conteúdo"
+
+#: merge-ort.c:3798 merge-recursive.c:3091
+msgid "add/add"
+msgstr "adicionar/adicionar"
+
+#: merge-ort.c:3800 merge-recursive.c:3136
+msgid "submodule"
+msgstr "submódulo"
+
+#: merge-ort.c:3802 merge-recursive.c:3137
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "CONFLITO (%s): conflito de integração em %s"
+
+#: merge-ort.c:3833
+#, fuzzy, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
+"of %s left in tree."
+msgstr ""
+"CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s "
+"deixada na árvore."
+
+#: merge-ort.c:4120
+#, c-format
+msgid ""
+"Note: %s not up to date and in way of checking out conflicted version; old "
+"copy renamed to %s"
+msgstr ""
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c:4487
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr ""
+
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
+#, fuzzy, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"  %s"
+msgstr ""
+"As suas alterações locais nos seguintes ficheiros seriam substituídas ao "
+"integrar:\n"
+"%%s"
+
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
+#, fuzzy
+msgid "Already up to date."
+msgstr "Já está atualizado."
+
+#: merge-recursive.c:352
+msgid "(bad commit)\n"
+msgstr "(commit incorreto)\n"
+
+#: merge-recursive.c:375
+#, fuzzy, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "addinfo_cache falhou no caminho '%s'"
+
+#: merge-recursive.c:384
+#, fuzzy, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "addinfo_cache falhou no caminho '%s'"
+
+#: merge-recursive.c:872
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "falha ao criar o caminho '%s'%s"
+
+#: merge-recursive.c:883
+#, c-format
+msgid "Removing %s to make room for subdirectory\n"
+msgstr "A remover %s para criar espaço para o subdiretório\n"
+
+#: merge-recursive.c:897 merge-recursive.c:916
+msgid ": perhaps a D/F conflict?"
+msgstr ": talvez um conflito D/F?"
+
+#: merge-recursive.c:906
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "recusando perder ficheiro untracked em '%s'"
+
+#: merge-recursive.c:947 builtin/cat-file.c:41
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "incapaz ler objeto %s '%s'"
+
+#: merge-recursive.c:952
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr ""
+
+#: merge-recursive.c:977
+#, c-format
+msgid "failed to open '%s': %s"
+msgstr "falhou ao abrir '%s': %s"
+
+#: merge-recursive.c:988
+#, c-format
+msgid "failed to symlink '%s': %s"
+msgstr "falha ao criar a ligação simbólica '%s': %s"
+
+#: merge-recursive.c:993
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "desconheço que fazer com %06o %s '%s'"
+
+#: merge-recursive.c:1223 merge-recursive.c:1235
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr ""
+
+#: merge-recursive.c:1226 merge-recursive.c:1238
+#, fuzzy, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Avançando submódulo %s"
+
+#: merge-recursive.c:1261
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+
+#: merge-recursive.c:1265
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr ""
+
+#: merge-recursive.c:1266
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+
+#: merge-recursive.c:1278
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+
+#: merge-recursive.c:1420
 #, fuzzy, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "Erro: Recusando perder ficheiro untracked de '%s'; escrevendo "
-"invés para %s"
+msgstr ""
+"Erro: Recusando perder ficheiro untracked de '%s'; escrevendo invés para %s"
 
-#: merge-recursive.c:1474
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -4814,7 +5200,7 @@
 "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s "
 "deixada na árvore."
 
-#: merge-recursive.c:1479
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -4823,7 +5209,7 @@
 "CONFLITO (%s/eliminar): %s eliminado em %s e %s para %s em %s. Versão de %s "
 "de %s deixada na árvore."
 
-#: merge-recursive.c:1486
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -4832,7 +5218,7 @@
 "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s "
 "deixada na árvore em %s."
 
-#: merge-recursive.c:1491
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -4841,44 +5227,43 @@
 "CONFLITO (%s/eliminar): %s eliminado em %s e %s para %s em %s. Versão de %s "
 "de %s deixada na árvore em %s."
 
-#: merge-recursive.c:1526
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "mudar nome"
 
-#: merge-recursive.c:1526
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "nome mudado"
 
-#: merge-recursive.c:1577 merge-recursive.c:2484 merge-recursive.c:3129
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, fuzzy, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Recusando perder ficheiro sujo de %s"
 
-#: merge-recursive.c:1587
+#: merge-recursive.c:1605
 #, fuzzy, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr "Recusando perder ficheiro untracked de %s, apesar de este estar "
-"no caminho."
+msgstr ""
+"Recusando perder ficheiro untracked de %s, apesar de este estar no caminho."
 
-#: merge-recursive.c:1645
+#: merge-recursive.c:1663
 #, fuzzy, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "CONFLITO (mudar nome/adicionar): Mudar o nome %s->%s em %s. %s adicionado em "
 "%s"
 
-#: merge-recursive.c:1676
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s é um diretório em %s adicionando %s no seu lugar"
 
-#: merge-recursive.c:1681
+#: merge-recursive.c:1699
 #, fuzzy, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr "Recusando perder ficheiro untracked de %s; adicionado-o como %s "
-"invés"
+msgstr "Recusando perder ficheiro untracked de %s; adicionado-o como %s invés"
 
-#: merge-recursive.c:1708
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -4887,18 +5272,18 @@
 "CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" "
 "mudar o nome \"%s\"->\"%s\" em \"%s\"%s"
 
-#: merge-recursive.c:1713
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (por resolver)"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome "
 "%s->%s em %s"
 
-#: merge-recursive.c:2068
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -4906,21 +5291,7 @@
 "getting a majority of the files."
 msgstr ""
 
-#: merge-recursive.c:2100
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
-"implicit directory rename(s) putting the following path(s) there: %s."
-msgstr ""
-
-#: merge-recursive.c:2110
-#, c-format
-msgid ""
-"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
-"implicit directory renames tried to put these paths there: %s"
-msgstr ""
-
-#: merge-recursive.c:2202
+#: merge-recursive.c:2220
 #, fuzzy, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -4929,141 +5300,80 @@
 "CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome "
 "%s->%s em %s"
 
-#: merge-recursive.c:2447
-#, c-format
-msgid ""
-"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
-"renamed."
-msgstr ""
-
-#: merge-recursive.c:2973
-#, c-format
-msgid "cannot read object %s"
-msgstr "incapaz ler objeto %s"
-
-#: merge-recursive.c:2976
-#, c-format
-msgid "object %s is not a blob"
-msgstr "objeto %s é blob nenhum"
-
-#: merge-recursive.c:3040
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "modificar"
 
-#: merge-recursive.c:3040
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "modificado"
 
-#: merge-recursive.c:3052
-msgid "content"
-msgstr "conteúdo"
-
-#: merge-recursive.c:3056
-msgid "add/add"
-msgstr "adicionar/adicionar"
-
-#: merge-recursive.c:3079
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s ignorado (integrado é igual ao existente)"
 
-#: merge-recursive.c:3101
-msgid "submodule"
-msgstr "submódulo"
-
-#: merge-recursive.c:3102
-#, c-format
-msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "CONFLITO (%s): conflito de integração em %s"
-
-#: merge-recursive.c:3132
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "A adicionar como %s, em alternativa."
 
-#: merge-recursive.c:3215
-#, c-format
-msgid ""
-"Path updated: %s added in %s inside a directory that was renamed in %s; "
-"moving it to %s."
-msgstr ""
-
-#: merge-recursive.c:3218
-#, c-format
-msgid ""
-"CONFLICT (file location): %s added in %s inside a directory that was renamed "
-"in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-
-#: merge-recursive.c:3222
-#, c-format
-msgid ""
-"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
-"%s; moving it to %s."
-msgstr ""
-
-#: merge-recursive.c:3225
-#, c-format
-msgid ""
-"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
-"was renamed in %s, suggesting it should perhaps be moved to %s."
-msgstr ""
-
-#: merge-recursive.c:3339
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "A remover %s"
 
-#: merge-recursive.c:3362
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "ficheiro/diretório"
 
-#: merge-recursive.c:3367
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "diretório/ficheiro"
 
-#: merge-recursive.c:3374
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "CONFLITO (%s): Há um diretório designado %s em %s. A adicionar %s como %s"
 
-#: merge-recursive.c:3383
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "A adicionar %s"
 
-#: merge-recursive.c:3392
+#: merge-recursive.c:3424
 #, fuzzy, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLITO (%s): conflito de integração em %s"
 
-#: merge-recursive.c:3445
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "falha ao integrar as árvores %s e %s"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "A integrar:"
 
-#: merge-recursive.c:3563
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u antecessor comum encontrado:"
 msgstr[1] "%u antecessores comuns encontrados:"
 
-#: merge-recursive.c:3613
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "junção retornou commit nenhum"
 
-#: merge-recursive.c:3769
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Incapaz de analisar objeto '%s'"
 
-#: merge-recursive.c:3787 builtin/merge.c:711 builtin/merge.c:895
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
+#: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Incapaz de escrever no index."
 
@@ -5071,190 +5381,209 @@
 msgid "failed to read the cache"
 msgstr "falha ao ler a cache"
 
-#: merge.c:109 rerere.c:720 builtin/am.c:1883 builtin/am.c:1917
-#: builtin/checkout.c:573 builtin/checkout.c:829 builtin/clone.c:817
-#: builtin/stash.c:265
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
+#: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "incapaz escrever novo ficheiro index"
 
-#: midx.c:80
+#: midx.c:74
+#, fuzzy
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "versão %d de multi-pack-index é irreconhecível"
+
+#: midx.c:105
 #, c-format
 msgid "multi-pack-index file %s is too small"
 msgstr ""
 
-#: midx.c:96
+#: midx.c:121
 #, c-format
 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
 msgstr ""
 
-#: midx.c:101
+#: midx.c:126
 #, c-format
 msgid "multi-pack-index version %d not recognized"
-msgstr ""
+msgstr "versão %d de multi-pack-index é irreconhecível"
 
-#: midx.c:106
+#: midx.c:131
 #, c-format
 msgid "multi-pack-index hash version %u does not match version %u"
 msgstr ""
 
-#: midx.c:123
-msgid "invalid chunk offset (too large)"
-msgstr ""
-
-#: midx.c:147
-msgid "terminating multi-pack-index chunk id appears earlier than expected"
-msgstr ""
-
-#: midx.c:160
+#: midx.c:148
 msgid "multi-pack-index missing required pack-name chunk"
 msgstr ""
 
-#: midx.c:162
+#: midx.c:150
 msgid "multi-pack-index missing required OID fanout chunk"
 msgstr ""
 
-#: midx.c:164
+#: midx.c:152
 msgid "multi-pack-index missing required OID lookup chunk"
 msgstr ""
 
-#: midx.c:166
+#: midx.c:154
 msgid "multi-pack-index missing required object offsets chunk"
 msgstr ""
 
-#: midx.c:180
+#: midx.c:170
 #, c-format
 msgid "multi-pack-index pack names out of order: '%s' before '%s'"
 msgstr ""
 
-#: midx.c:223
+#: midx.c:214
 #, c-format
 msgid "bad pack-int-id: %u (%u total packs)"
 msgstr ""
 
-#: midx.c:273
+#: midx.c:264
 msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
 msgstr ""
 
-#: midx.c:480
-#, fuzzy, c-format
+#: midx.c:490
+#, c-format
 msgid "failed to add packfile '%s'"
-msgstr "falha ao ler o ficheiro de comando '%s'"
+msgstr ""
 
-#: midx.c:486
-#, fuzzy, c-format
+#: midx.c:496
+#, c-format
 msgid "failed to open pack-index '%s'"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
-#: midx.c:546
-#, fuzzy, c-format
+#: midx.c:564
+#, c-format
 msgid "failed to locate object %d in packfile"
-msgstr "Falha ao criar os ficheiros de saída"
+msgstr ""
 
-#: midx.c:846
+#: midx.c:880 builtin/index-pack.c:1533
+#, fuzzy
+msgid "cannot store reverse index file"
+msgstr "incapaz guardar ficheiro index"
+
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "ignorando multi-pack-index existente; checksum diferente"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr ""
 
-#: midx.c:879
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr ""
 
-#: midx.c:931
+#: midx.c:1034
+#, c-format
+msgid "unknown preferred pack: '%s'"
+msgstr ""
+
+#: midx.c:1039
+#, fuzzy, c-format
+msgid "preferred pack '%s' is expired"
+msgstr "o repositório de referência '%s' está enxertado"
+
+#: midx.c:1055
 #, fuzzy
 msgid "no pack files to index."
 msgstr "pack files nenhuns para index."
 
-#: midx.c:982
-msgid "Writing chunks to multi-pack-index"
+#: midx.c:1135 builtin/clean.c:37
+#, c-format
+msgid "failed to remove %s"
+msgstr "falha ao remover %s"
+
+#: midx.c:1166
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
 msgstr ""
 
-#: midx.c:1060
-#, fuzzy, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "falha ao limpar o índice"
-
-#: midx.c:1116
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
 
-#: midx.c:1124
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "checksum incorreto"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr ""
 
-#: midx.c:1139
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 
-#: midx.c:1144
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr ""
 
-#: midx.c:1153
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr ""
 
-#: midx.c:1162
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr ""
 
-#: midx.c:1182
-#, fuzzy
+#: midx.c:1294
 msgid "Sorting objects by packfile"
-msgstr "A escrever objetos"
+msgstr ""
 
-#: midx.c:1189
-#, fuzzy
+#: midx.c:1301
 msgid "Verifying object offsets"
-msgstr "A escrever objetos"
+msgstr ""
 
-#: midx.c:1205
+#: midx.c:1317
 #, fuzzy, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "falhou carregar entrada pack para oid[%d] = %s"
 
-#: midx.c:1211
-#, fuzzy, c-format
+#: midx.c:1323
+#, c-format
 msgid "failed to load pack-index for packfile %s"
-msgstr "falha ao ler o ficheiro de comando '%s'"
+msgstr ""
 
-#: midx.c:1220
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 
-#: midx.c:1245
+#: midx.c:1357
 #, fuzzy
 msgid "Counting referenced objects"
 msgstr "Contando objetos referenciados"
 
-#: midx.c:1255
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr ""
 
-#: midx.c:1446
+#: midx.c:1558
 #, fuzzy
 msgid "could not start pack-objects"
 msgstr "incapaz de começar pack-objects"
 
-#: midx.c:1466
+#: midx.c:1578
 #, fuzzy
 msgid "could not finish pack-objects"
 msgstr "incapaz de terminar pack-objects"
 
-#: name-hash.c:537
+#: name-hash.c:542
 #, fuzzy, c-format
 msgid "unable to create lazy_dir thread: %s"
 msgstr "incapaz criar thread lazy_dir: %s"
 
-#: name-hash.c:559
+#: name-hash.c:564
 #, fuzzy, c-format
 msgid "unable to create lazy_name thread: %s"
 msgstr "incapaz criar thread lazy_name: %s"
 
-#: name-hash.c:565
+#: name-hash.c:570
 #, fuzzy, c-format
 msgid "unable to join lazy_name thread: %s"
 msgstr "incapaz juntar a thread lazy_name: %s"
@@ -5268,7 +5597,8 @@
 msgstr ""
 "Ficou por concluír a anterior junção de notas (%s existe).\n"
 "Por favor, usa 'git notes merge --commit' ou 'git notes merge --abort' para "
-"commitar/abortar a junção anterior antes de começares uma nova junção de notas."
+"commitar/abortar a junção anterior antes de começares uma nova junção de "
+"notas."
 
 #: notes-merge.c:284
 #, c-format
@@ -5277,7 +5607,8 @@
 
 #: notes-utils.c:46
 msgid "Cannot commit uninitialized/unreferenced notes tree"
-msgstr "Impossível commit notas de árvore que estejam por iniciar/por referênciar"
+msgstr ""
+"Impossível commit notas de árvore que estejam por iniciar/por referênciar"
 
 #: notes-utils.c:105
 #, c-format
@@ -5298,6 +5629,365 @@
 msgid "Bad %s value: '%s'"
 msgstr "Valor incorreto de %s: '%s'"
 
+#: object-file.c:526
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+
+#: object-file.c:584
+#, fuzzy, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "incapaz normalizar path de objeto alternativo: %s"
+
+#: object-file.c:658
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+
+#: object-file.c:665
+#, fuzzy, c-format
+msgid "unable to normalize object directory: %s"
+msgstr "incapaz normalizar pasta de objeto: %s"
+
+#: object-file.c:708
+#, fuzzy
+msgid "unable to fdopen alternates lockfile"
+msgstr "incapaz de fdopen lockfile alternativo"
+
+#: object-file.c:726
+#, fuzzy
+msgid "unable to read alternates file"
+msgstr "incapaz ler ficheiro alternativo"
+
+#: object-file.c:733
+#, fuzzy
+msgid "unable to move new alternates file into place"
+msgstr "incapaz mover novo ficheiro alternativo para o sítio"
+
+#: object-file.c:768
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "caminho '%s' é inexistente"
+
+#: object-file.c:789
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"repositório referência '%s' como uma checkout ligada ainda é insustentado."
+
+#: object-file.c:795
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "repositório referência '%s' é repositório local nenhum."
+
+#: object-file.c:801
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "o repositório de referência '%s' é raso"
+
+#: object-file.c:809
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "o repositório de referência '%s' está enxertado"
+
+#: object-file.c:869
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr ""
+
+#: object-file.c:1019
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr ""
+
+#: object-file.c:1054
+#, fuzzy, c-format
+msgid "mmap failed%s"
+msgstr "mmap falhou%s"
+
+#: object-file.c:1218
+#, c-format
+msgid "object file %s is empty"
+msgstr ""
+
+#: object-file.c:1353 object-file.c:2548
+#, fuzzy, c-format
+msgid "corrupt loose object '%s'"
+msgstr "objeto solto '%s' corrupto"
+
+#: object-file.c:1355 object-file.c:2552
+#, fuzzy, c-format
+msgid "garbage at end of loose object '%s'"
+msgstr "lixo no fim de objeto solto '%s'"
+
+#: object-file.c:1397
+#, fuzzy
+msgid "invalid object type"
+msgstr "tipo de objeto incorreto."
+
+#: object-file.c:1481
+#, c-format
+msgid "unable to unpack %s header with --allow-unknown-type"
+msgstr ""
+
+#: object-file.c:1484
+#, fuzzy, c-format
+msgid "unable to unpack %s header"
+msgstr "incapaz desempacotar cabeçalho %s"
+
+#: object-file.c:1490
+#, c-format
+msgid "unable to parse %s header with --allow-unknown-type"
+msgstr ""
+
+#: object-file.c:1493
+#, fuzzy, c-format
+msgid "unable to parse %s header"
+msgstr "incapaz processar cabeçalho %s"
+
+#: object-file.c:1717
+#, fuzzy, c-format
+msgid "failed to read object %s"
+msgstr "falha ao ler o objeto '%s'."
+
+#: object-file.c:1721
+#, fuzzy, c-format
+msgid "replacement %s not found for %s"
+msgstr "%s substituto, por encontrar para %s"
+
+#: object-file.c:1725
+#, c-format
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr ""
+
+#: object-file.c:1729
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr ""
+
+#: object-file.c:1834
+#, fuzzy, c-format
+msgid "unable to write file %s"
+msgstr "incapaz escrever ficheiro %s"
+
+#: object-file.c:1841
+#, fuzzy, c-format
+msgid "unable to set permission to '%s'"
+msgstr "incapaz definir permissão para '%s'"
+
+#: object-file.c:1848
+msgid "file write error"
+msgstr ""
+
+#: object-file.c:1868
+msgid "error when closing loose object file"
+msgstr ""
+
+#: object-file.c:1933
+#, c-format
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr ""
+
+#: object-file.c:1935
+#, fuzzy
+msgid "unable to create temporary file"
+msgstr "incapaz criar ficheiro temporário"
+
+#: object-file.c:1959
+#, fuzzy
+msgid "unable to write loose object file"
+msgstr "incapaz escrever ficheiro objeto solto"
+
+#: object-file.c:1965
+#, fuzzy, c-format
+msgid "unable to deflate new object %s (%d)"
+msgstr "incapaz esvaziar objeto novo %s (%d)"
+
+#: object-file.c:1969
+#, fuzzy, c-format
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "deflateEnd em objeto %s falhou (%d)"
+
+#: object-file.c:1973
+#, c-format
+msgid "confused by unstable object source data for %s"
+msgstr ""
+
+#: object-file.c:1983 builtin/pack-objects.c:1237
+#, c-format
+msgid "failed utime() on %s"
+msgstr ""
+
+#: object-file.c:2060
+#, fuzzy, c-format
+msgid "cannot read object for %s"
+msgstr "incapaz ler objeto para %s"
+
+#: object-file.c:2111
+#, fuzzy
+msgid "corrupt commit"
+msgstr "substituir autor do commit"
+
+#: object-file.c:2119
+#, fuzzy
+msgid "corrupt tag"
+msgstr "mostrar tags"
+
+#: object-file.c:2219
+#, c-format
+msgid "read error while indexing %s"
+msgstr ""
+
+#: object-file.c:2222
+#, fuzzy, c-format
+msgid "short read while indexing %s"
+msgstr "leitura curta enquanto indexando %s"
+
+#: object-file.c:2295 object-file.c:2305
+#, fuzzy, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: falhou inserir na base de dados"
+
+#: object-file.c:2311
+#, fuzzy, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: tipo ficheiro insustentado"
+
+#: object-file.c:2335
+#, fuzzy, c-format
+msgid "%s is not a valid object"
+msgstr "%s é objeto inválido"
+
+#: object-file.c:2337
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s é um objeto inválido '%s'"
+
+#: object-file.c:2364 builtin/index-pack.c:192
+#, c-format
+msgid "unable to open %s"
+msgstr "incapaz abrir %s"
+
+#: object-file.c:2559 object-file.c:2612
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr ""
+
+#: object-file.c:2583
+#, fuzzy, c-format
+msgid "unable to mmap %s"
+msgstr "incapaz mmap %s"
+
+#: object-file.c:2588
+#, fuzzy, c-format
+msgid "unable to unpack header of %s"
+msgstr "incapaz desempacotar cabeçalho de %s"
+
+#: object-file.c:2594
+#, fuzzy, c-format
+msgid "unable to parse header of %s"
+msgstr "incapaz processar cabeçalho de %s"
+
+#: object-file.c:2605
+#, fuzzy, c-format
+msgid "unable to unpack contents of %s"
+msgstr "incapaz desempacotar conteúdo de %s"
+
+#: object-name.c:480
+#, fuzzy, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "SHA1 curto %s é ambíguo"
+
+#: object-name.c:491
+msgid "The candidates are:"
+msgstr "Os candidatos são:"
+
+#: object-name.c:790
+#, fuzzy
+msgid ""
+"Git normally never creates a ref that ends with 40 hex characters\n"
+"because it will be ignored when you just specify 40-hex. These refs\n"
+"may be created by mistake. For example,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config advice.objectNameWarning false\""
+msgstr ""
+"Normalmente o Git nunca cria refs que terminem em 40 caracteres\n"
+"hexadecimais, porque será ignorada quando apenas se indica 40-hex.\n"
+"Poderam-se criar estas refs por engano. Como no exemplo,\n"
+"\n"
+"  git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"onde \"$br\" fica vazio e uma ref de 40-hex é criada. Por favor\n"
+"examine estas refs e talvez apague-as. Desative esta mensagem\n"
+"executando \"git config advice.objectNameWarning false\""
+
+#: object-name.c:910
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr ""
+
+#: object-name.c:918
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr ""
+
+#: object-name.c:1696
+#, fuzzy, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "O caminho '%s' está dentro do submódulo '%.*s'"
+
+#: object-name.c:1702
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+
+#: object-name.c:1711
+#, fuzzy, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "caminho '%s' é inexistente em '%.*s'"
+
+#: object-name.c:1739
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+
+#: object-name.c:1755
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+
+#: object-name.c:1763
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr ""
+
+#: object-name.c:1765
+#, fuzzy, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "caminho '%s' é inexistente (quer no disco quer no index)"
+
+#: object-name.c:1778
+#, fuzzy
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+"Os caminhos relativos só podem ser usados a partir do topo da árvore de "
+"trabalho"
+
+#: object-name.c:1916
+#, fuzzy, c-format
+msgid "invalid object name '%.*s'."
+msgstr "Nome de objeto inválido: '%s'."
+
 #: object.c:53
 #, fuzzy, c-format
 msgid "invalid object type \"%s\""
@@ -5308,49 +5998,104 @@
 msgid "object %s is a %s, not a %s"
 msgstr "objeto %s é %s, é %s nenhum(a)"
 
-#: object.c:233
-#, fuzzy, c-format
+#: object.c:250
+#, c-format
 msgid "object %s has unknown type id %d"
-msgstr "objeto de tipo desconhecido"
+msgstr ""
 
-#: object.c:246
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "incapaz analisar objeto: %s"
 
-#: object.c:266 object.c:278
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr ""
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2216
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, fuzzy, c-format
 msgid "unable to get size of %s"
 msgstr "incapaz obter tamanho de %s"
 
-#: packfile.c:615
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
+#, fuzzy, c-format
+msgid "unable to get disk usage of %s"
+msgstr "incapaz obter tamanho de %s"
+
+#: pack-revindex.c:221
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr ""
+
+#: pack-revindex.c:226
+#, c-format
+msgid "reverse-index file %s is corrupt"
+msgstr ""
+
+#: pack-revindex.c:234
+#, c-format
+msgid "reverse-index file %s has unknown signature"
+msgstr ""
+
+#: pack-revindex.c:238
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr ""
+
+#: pack-revindex.c:243
+#, c-format
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr ""
+
+#: pack-write.c:250
+#, fuzzy
+msgid "cannot both write and verify reverse index"
+msgstr "incapaz ler o index"
+
+#: pack-write.c:271
+#, fuzzy, c-format
+msgid "could not stat: %s"
+msgstr "incapaz obter estatutário %s"
+
+#: pack-write.c:283
+#, fuzzy, c-format
+msgid "failed to make %s readable"
+msgstr "falha a analisar %s"
+
+#: pack-write.c:522
+#, fuzzy, c-format
+msgid "could not write '%s' promisor file"
+msgstr "incapaz escrever ficheiro promissor '%s'"
+
+#: packfile.c:625
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset antes do fim do ficheiro de pacote (.idx danificado?)"
 
-#: packfile.c:1907
+#: packfile.c:655
+#, fuzzy, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "ficheiro-pacote %s incapaz ser mapeado%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "offset antes do início do índice do pacote %s (índice corrompido?)"
 
-#: packfile.c:1911
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "offset depois do fim do índice do pacote %s (índice truncado?)"
 
 #: parse-options-cb.c:20 parse-options-cb.c:24
-#, fuzzy, c-format
+#, c-format
 msgid "option `%s' expects a numerical value"
-msgstr "a opção '%c' espera um valor numérico"
+msgstr ""
 
 #: parse-options-cb.c:41
 #, fuzzy, c-format
 msgid "malformed expiration date '%s'"
-msgstr "folha de opções malformada: '%s'"
+msgstr "data de prazo de validade malformada '%s'"
 
 #: parse-options-cb.c:54
 #, c-format
@@ -5370,12 +6115,12 @@
 #: parse-options.c:73
 #, fuzzy, c-format
 msgid "%s is incompatible with %s"
-msgstr "--long é incompatível com --abbrev=0"
+msgstr "%s é incompatível com %s"
 
 #: parse-options.c:78
-#, fuzzy, c-format
+#, c-format
 msgid "%s : incompatible with something else"
-msgstr "--dirty é incompatível com commits ou semelhantes"
+msgstr ""
 
 #: parse-options.c:92 parse-options.c:96 parse-options.c:317
 #, fuzzy, c-format
@@ -5402,31 +6147,31 @@
 msgid "did you mean `--%s` (with two dashes)?"
 msgstr ""
 
-#: parse-options.c:666 parse-options.c:971
+#: parse-options.c:668 parse-options.c:988
 #, c-format
 msgid "alias of --%s"
 msgstr ""
 
-#: parse-options.c:862
-#, fuzzy, c-format
+#: parse-options.c:879
+#, c-format
 msgid "unknown option `%s'"
-msgstr "opção desconhecido %s"
+msgstr ""
 
-#: parse-options.c:864
-#, fuzzy, c-format
+#: parse-options.c:881
+#, c-format
 msgid "unknown switch `%c'"
-msgstr "opção desconhecido %s"
+msgstr ""
 
-#: parse-options.c:866
+#: parse-options.c:883
 #, fuzzy, c-format
 msgid "unknown non-ascii option in string: `%s'"
 msgstr "Definidição --confirm desconhecida: '%s'"
 
-#: parse-options.c:890
+#: parse-options.c:907
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:909
+#: parse-options.c:926
 #, c-format
 msgid "usage: %s"
 msgstr "utilização: %s"
@@ -5434,17 +6179,17 @@
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:915
+#: parse-options.c:932
 #, c-format
 msgid "   or: %s"
 msgstr "        ou: %s"
 
-#: parse-options.c:918
+#: parse-options.c:935
 #, c-format
 msgid "    %s"
 msgstr "         %s"
 
-#: parse-options.c:957
+#: parse-options.c:974
 msgid "-NUM"
 msgstr "-NUM"
 
@@ -5453,30 +6198,30 @@
 msgid "Could not make %s writable by group"
 msgstr "Incapaz de fazer %s escrevível ao grupo"
 
-#: pathspec.c:130
+#: pathspec.c:151
 msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr "Carácter de escape '\\' é proíbido como último carácter no valor attr"
 
-#: pathspec.c:148
+#: pathspec.c:169
 msgid "Only one 'attr:' specification is allowed."
 msgstr "Só se pode especificar um 'attr:'."
 
-#: pathspec.c:151
+#: pathspec.c:172
 msgid "attr spec must not be empty"
 msgstr "attr spec tem de ter algum conteúdo"
 
-#: pathspec.c:194
+#: pathspec.c:215
 #, c-format
 msgid "invalid attribute name %s"
 msgstr "nome de atributo inválido %s"
 
-#: pathspec.c:259
+#: pathspec.c:280
 msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
 msgstr ""
 "as definições globais 'glob' e 'noglob' de especificador de caminho "
 "(pathspec) são incompatíveis"
 
-#: pathspec.c:266
+#: pathspec.c:287
 msgid ""
 "global 'literal' pathspec setting is incompatible with all other global "
 "pathspec settings"
@@ -5484,51 +6229,51 @@
 "a definição global de especificador de caminho 'literal' é incompatível com "
 "todas as outras definições globais de especificador de caminho (pathspec)"
 
-#: pathspec.c:306
+#: pathspec.c:327
 msgid "invalid parameter for pathspec magic 'prefix'"
 msgstr "parâmetro inválido na mágica 'prefix' do especificador de caminho"
 
-#: pathspec.c:327
+#: pathspec.c:348
 #, c-format
 msgid "Invalid pathspec magic '%.*s' in '%s'"
 msgstr "Mágica do especificador de caminho '%.*s' inválida em '%s'"
 
-#: pathspec.c:332
+#: pathspec.c:353
 #, c-format
 msgid "Missing ')' at the end of pathspec magic in '%s'"
 msgstr "Falta um ')' no final da mágica do especificador de caminho em '%s'"
 
-#: pathspec.c:370
+#: pathspec.c:391
 #, c-format
 msgid "Unimplemented pathspec magic '%c' in '%s'"
 msgstr "Por implementar, magic pathspec '%c' em '%s'"
 
-#: pathspec.c:429
+#: pathspec.c:450
 #, c-format
 msgid "%s: 'literal' and 'glob' are incompatible"
 msgstr "%s: 'literal' e 'glob' são incompatíveis"
 
-#: pathspec.c:445
+#: pathspec.c:466
 #, fuzzy, c-format
 msgid "%s: '%s' is outside repository at '%s'"
-msgstr "%s: '%s' está fora do repositório"
+msgstr "%s: '%s' está fora do repositório em '%s'"
 
-#: pathspec.c:521
+#: pathspec.c:542
 #, c-format
 msgid "'%s' (mnemonic: '%c')"
 msgstr "'%s' (mnemónica: '%c')"
 
-#: pathspec.c:531
+#: pathspec.c:552
 #, c-format
 msgid "%s: pathspec magic not supported by this command: %s"
 msgstr "%s: magic pathspec insustentado por este comando: %s"
 
-#: pathspec.c:598
+#: pathspec.c:619
 #, c-format
 msgid "pathspec '%s' is beyond a symbolic link"
 msgstr "o especificador de caminho '%s' é indicado por uma ligação simbólica"
 
-#: pathspec.c:643
+#: pathspec.c:664
 #, c-format
 msgid "line is badly quoted: %s"
 msgstr ""
@@ -5545,15 +6290,15 @@
 
 #: pkt-line.c:106
 #, fuzzy
-msgid "unable to write stateless separator packet"
-msgstr "incapaz escrever pacote de separador sem estado"
+msgid "unable to write response end packet"
+msgstr "incapaz escrever pacote fim de resposta"
 
 #: pkt-line.c:113
 #, fuzzy
 msgid "flush packet write failed"
 msgstr "escrita de pacote flush falhou"
 
-#: pkt-line.c:153 pkt-line.c:239
+#: pkt-line.c:153 pkt-line.c:265
 msgid "protocol error: impossibly long line"
 msgstr ""
 
@@ -5562,158 +6307,165 @@
 msgid "packet write with format failed"
 msgstr "escrita de pacote com formato falhou"
 
-#: pkt-line.c:203
+#: pkt-line.c:204
 msgid "packet write failed - data exceeds max packet size"
 msgstr ""
 
-#: pkt-line.c:210 pkt-line.c:217
-#, fuzzy
-msgid "packet write failed"
+#: pkt-line.c:222
+#, fuzzy, c-format
+msgid "packet write failed: %s"
 msgstr "escrita de pacote falhou"
 
-#: pkt-line.c:302
+#: pkt-line.c:328 pkt-line.c:329
 #, fuzzy
 msgid "read error"
 msgstr "erro do programa"
 
-#: pkt-line.c:310
+#: pkt-line.c:339 pkt-line.c:340
 #, fuzzy
 msgid "the remote end hung up unexpectedly"
 msgstr "O remoto desligou após contacto inicial"
 
-#: pkt-line.c:338
-#, fuzzy, c-format
+#: pkt-line.c:369 pkt-line.c:371
+#, c-format
 msgid "protocol error: bad line length character: %.4s"
-msgstr "erro de protocolo: cabeçalho de pacote incorreto"
+msgstr ""
 
-#: pkt-line.c:352 pkt-line.c:357
-#, fuzzy, c-format
+#: pkt-line.c:386 pkt-line.c:388 pkt-line.c:394 pkt-line.c:396
+#, c-format
 msgid "protocol error: bad line length %d"
-msgstr "erro de protocolo: cabeçalho de pacote incorreto"
+msgstr ""
 
-#: pkt-line.c:373 sideband.c:165
+#: pkt-line.c:413 sideband.c:165
 #, c-format
 msgid "remote error: %s"
 msgstr "erro remoto: %s"
 
-#: preload-index.c:119
+#: preload-index.c:125
 #, fuzzy
 msgid "Refreshing index"
 msgstr "Refrescando index"
 
-#: preload-index.c:138
+#: preload-index.c:144
 #, fuzzy, c-format
 msgid "unable to create threaded lstat: %s"
 msgstr "incapaz criar thread de lstat: %s"
 
-#: pretty.c:983
+#: pretty.c:988
 msgid "unable to parse --pretty format"
 msgstr "incapaz analisar formato de --pretty"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr ""
 
+#: protocol-caps.c:103
+#, fuzzy
+msgid "object-info: expected flush after arguments"
+msgstr "--continue supõe argumento nenhum"
+
 #: prune-packed.c:35
 msgid "Removing duplicate objects"
 msgstr "A remover objetos duplicados"
 
-#: range-diff.c:77
+#: range-diff.c:78
 #, fuzzy
 msgid "could not start `log`"
 msgstr "incapaz começar `log`"
 
-#: range-diff.c:79
+#: range-diff.c:80
 #, fuzzy
 msgid "could not read `log` output"
 msgstr "incapaz ler output de `log`"
 
-#: range-diff.c:98 sequencer.c:5310
+#: range-diff.c:101 sequencer.c:5550
 #, fuzzy, c-format
 msgid "could not parse commit '%s'"
 msgstr "incapaz analisar commit '%s'"
 
-#: range-diff.c:112
+#: range-diff.c:115
 #, c-format
 msgid ""
 "could not parse first line of `log` output: did not start with 'commit ': "
 "'%s'"
 msgstr ""
 
-#: range-diff.c:137
+#: range-diff.c:140
 #, fuzzy, c-format
 msgid "could not parse git header '%.*s'"
 msgstr "incapaz analisar cabeçalho git '%.*s'"
 
-#: range-diff.c:299
-#, fuzzy
+#: range-diff.c:307
 msgid "failed to generate diff"
-msgstr "falha ao criar o ficheiro %s"
+msgstr ""
 
-#: range-diff.c:532 range-diff.c:534
+#: range-diff.c:559
+msgid "--left-only and --right-only are mutually exclusive"
+msgstr ""
+
+#: range-diff.c:562 range-diff.c:564
 #, fuzzy, c-format
 msgid "could not parse log for '%s'"
 msgstr "incapaz analisar log para '%s'"
 
-#: read-cache.c:682
+#: read-cache.c:710
 #, fuzzy, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "%s: já existe no índice"
 
-#: read-cache.c:698
-#, fuzzy
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
-msgstr "escrever o objeto na base de dados de objetos"
+msgstr ""
 
-#: read-cache.c:720
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 
-#: read-cache.c:725
+#: read-cache.c:753
 #, fuzzy, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' tem commit checked out nenhum"
 
-#: read-cache.c:777
+#: read-cache.c:805
 #, fuzzy, c-format
 msgid "unable to index file '%s'"
 msgstr "incapaz indexar ficheiro '%s'"
 
-#: read-cache.c:796
+#: read-cache.c:824
 #, fuzzy, c-format
 msgid "unable to add '%s' to index"
 msgstr "incapaz adicionar %s a index"
 
-#: read-cache.c:807
+#: read-cache.c:835
 #, fuzzy, c-format
 msgid "unable to stat '%s'"
 msgstr "incapaz obter estatutário de '%s'"
 
-#: read-cache.c:1318
+#: read-cache.c:1358
 #, fuzzy, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' aparece ambo como ficheiro e como pasta"
 
-#: read-cache.c:1524
+#: read-cache.c:1573
 #, fuzzy
 msgid "Refresh index"
 msgstr "Refresca index"
 
-#: read-cache.c:1639
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -5722,7 +6474,7 @@
 "index.version definido, mas com valor inválido.\n"
 "A usar a versão %i"
 
-#: read-cache.c:1649
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -5731,140 +6483,143 @@
 "GIT_INDEX_VERSION definido, mas com valor inválido.\n"
 "A usar a versão %i"
 
-#: read-cache.c:1705
-#, fuzzy, c-format
+#: read-cache.c:1771
+#, c-format
 msgid "bad signature 0x%08x"
-msgstr "adicionar uma assinatura"
+msgstr ""
 
-#: read-cache.c:1708
+#: read-cache.c:1774
 #, fuzzy, c-format
 msgid "bad index version %d"
 msgstr "versão de índice '%s' incorreta"
 
-#: read-cache.c:1717
-#, fuzzy
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
-msgstr "adicionar uma assinatura"
+msgstr ""
 
-#: read-cache.c:1747
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr ""
 
-#: read-cache.c:1749
+#: read-cache.c:1819
 #, fuzzy, c-format
 msgid "ignoring %.4s extension"
 msgstr "modelo %s ignorado"
 
-#: read-cache.c:1786
+#: read-cache.c:1856
 #, fuzzy, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "formato de %.*s desconhecido %s"
 
-#: read-cache.c:1802
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr ""
 
-#: read-cache.c:1859
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr ""
 
-#: read-cache.c:1862
+#: read-cache.c:1932
 #, fuzzy, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "multíplas entradas de estágio para ficheiro juntado '%s'"
 
-#: read-cache.c:1865
+#: read-cache.c:1935
 #, fuzzy, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "entradas de estágio desordenadas para '%s'"
 
-#: read-cache.c:1971 read-cache.c:2262 rerere.c:565 rerere.c:599 rerere.c:1111
-#: submodule.c:1628 builtin/add.c:538 builtin/check-ignore.c:181
-#: builtin/checkout.c:502 builtin/checkout.c:688 builtin/clean.c:991
-#: builtin/commit.c:364 builtin/diff-tree.c:122 builtin/grep.c:507
-#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:290
-#: builtin/submodule--helper.c:332
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
+#: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
+#: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
-msgstr "ficheiro de índice corrompido"
+msgstr ""
 
-#: read-cache.c:2115
+#: read-cache.c:2185
 #, fuzzy, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "incapaz criar thread load_cache_entries: %s"
 
-#: read-cache.c:2128
+#: read-cache.c:2198
 #, fuzzy, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "incapaz juntar a thread load_cache_entries: %s"
 
-#: read-cache.c:2161
+#: read-cache.c:2231
 #, fuzzy, c-format
 msgid "%s: index file open failed"
 msgstr "falha ao adicionar ficheiros"
 
-#: read-cache.c:2165
+#: read-cache.c:2235
 #, fuzzy, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: incapaz obter estatutário de index aberto"
 
-#: read-cache.c:2169
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr ""
 
-#: read-cache.c:2173
+#: read-cache.c:2243
 #, fuzzy, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: incapaz mapear ficheiro index"
+msgid "%s: unable to map index file%s"
+msgstr "%s: incapaz mapear ficheiro index%s"
 
-#: read-cache.c:2215
+#: read-cache.c:2286
 #, fuzzy, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "incapaz criar thread load_index_extensions: %s"
 
-#: read-cache.c:2242
+#: read-cache.c:2313
 #, fuzzy, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "incapaz juntar a thread load_index_extensions: %s"
 
-#: read-cache.c:2274
+#: read-cache.c:2351
 #, fuzzy, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "incapaz refrescar index partilhado '%s'"
 
-#: read-cache.c:2321
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:3017 strbuf.c:1171 wrapper.c:633 builtin/merge.c:1140
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "incapaz fechar '%s'"
 
-#: read-cache.c:3120 sequencer.c:2479 sequencer.c:4231
+#: read-cache.c:3075
+msgid "failed to convert to a sparse-index"
+msgstr ""
+
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, fuzzy, c-format
 msgid "could not stat '%s'"
 msgstr "incapaz obter estatutário '%s'"
 
-#: read-cache.c:3133
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "incapaz abrir pasta git: %s"
 
-#: read-cache.c:3145
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "incapaz deslinkar: %s"
 
-#: read-cache.c:3170
+#: read-cache.c:3200
 #, fuzzy, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "incapaz arranjar bits de permissão em '%s'"
 
-#: read-cache.c:3319
+#: read-cache.c:3349
 #, fuzzy, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: incapaz baixar para estágio #0"
@@ -5896,7 +6651,10 @@
 "r, reword <commit> = use commit, but edit the commit message\n"
 "e, edit <commit> = use commit, but stop for amending\n"
 "s, squash <commit> = use commit, but meld into previous commit\n"
-"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"f, fixup [-C | -c] <commit> = like \"squash\" but keep only the previous\n"
+"                   commit's log message, unless -C is used, in which case\n"
+"                   keep only this commit's message; -c is same as -C but\n"
+"                   opens the editor\n"
 "x, exec <command> = run command (the rest of the line) using shell\n"
 "b, break = stop here (continue rebase later with 'git rebase --continue')\n"
 "d, drop <commit> = remove commit\n"
@@ -5905,7 +6663,7 @@
 "m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
 ".       create a merge commit using the original merge commit's\n"
 ".       message (or the oneline, if no original merge commit was\n"
-".       specified). Use -c <commit> to reword the commit message.\n"
+".       specified); use -c <commit> to reword the commit message\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
@@ -5921,14 +6679,14 @@
 "\n"
 "Estas linhas pode ser reordenadas; são executadas de cima para baixo.\n"
 
-#: rebase-interactive.c:63
+#: rebase-interactive.c:66
 #, fuzzy, c-format
 msgid "Rebase %s onto %s (%d command)"
 msgid_plural "Rebase %s onto %s (%d commands)"
 msgstr[0] "Rebase $shortrevisions sobre $shortonto ($todocount comando)"
 msgstr[1] "Rebase $shortrevisions sobre $shortonto ($todocount comandos)"
 
-#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:218
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:218
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -5936,7 +6694,7 @@
 "\n"
 "Remove linha nenhuma. Usa explicitamente 'drop' para remover um commit.\n"
 
-#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:222
+#: rebase-interactive.c:78 git-rebase--preserve-merges.sh:222
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -5944,7 +6702,7 @@
 "\n"
 "Se remover uma linha daqui AQUELE COMMIT SERÁ PERDIDO.\n"
 
-#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:861
+#: rebase-interactive.c:84 git-rebase--preserve-merges.sh:861
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -5958,7 +6716,7 @@
 "    git rebase --continue\n"
 "\n"
 
-#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:938
+#: rebase-interactive.c:89 git-rebase--preserve-merges.sh:938
 msgid ""
 "\n"
 "However, if you remove everything, the rebase will be aborted.\n"
@@ -5968,19 +6726,19 @@
 "No entanto, se remover tudo, o rebase será abortado.\n"
 "\n"
 
-#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3607
-#: sequencer.c:3633 sequencer.c:5416 builtin/fsck.c:347 builtin/rebase.c:270
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, fuzzy, c-format
 msgid "could not write '%s'"
 msgstr "incapaz escrever '%s'"
 
-#: rebase-interactive.c:116 builtin/rebase.c:202 builtin/rebase.c:228
-#: builtin/rebase.c:252
+#: rebase-interactive.c:119 builtin/rebase.c:203 builtin/rebase.c:229
+#: builtin/rebase.c:253
 #, fuzzy, c-format
 msgid "could not write '%s'."
 msgstr "incapaz escrever '%s'."
 
-#: rebase-interactive.c:193
+#: rebase-interactive.c:196
 #, fuzzy, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -5989,7 +6747,7 @@
 "Aviso: alguns commits podem ter sido descartados acidentalmente.\n"
 "Commits descartados (mais novo para o mais velho):\n"
 
-#: rebase-interactive.c:200
+#: rebase-interactive.c:203
 #, fuzzy, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -6006,14 +6764,14 @@
 "O comportamentos possíveis são: ignore, warn, error.\n"
 "\n"
 
-#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2394
-#: builtin/rebase.c:188 builtin/rebase.c:213 builtin/rebase.c:239
-#: builtin/rebase.c:264
+#: rebase-interactive.c:236 rebase-interactive.c:241 sequencer.c:2597
+#: builtin/rebase.c:189 builtin/rebase.c:214 builtin/rebase.c:240
+#: builtin/rebase.c:265
 #, c-format
 msgid "could not read '%s'."
 msgstr "incapaz ler '%s'."
 
-#: ref-filter.c:42 wt-status.c:1973
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "desapareceu"
 
@@ -6032,233 +6790,248 @@
 msgid "ahead %d, behind %d"
 msgstr "à frente %d, atrás %d"
 
-#: ref-filter.c:169
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "formato esperado: %%(color:<cor>)"
 
-#: ref-filter.c:171
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "cor desconhecida: %%(color:%s)"
 
-#: ref-filter.c:193
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "valor inteiro esperado refname:lstrip=%s"
 
-#: ref-filter.c:197
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valor inteiro esperado refname:rstrip=%s"
 
-#: ref-filter.c:199
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "argumento %%(%s) desconhecido: %s"
 
-#: ref-filter.c:254
+#: ref-filter.c:315
 #, fuzzy, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) leva argumentos nenhuns"
 
-#: ref-filter.c:276
+#: ref-filter.c:339
 #, fuzzy, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "argumento %%(objectsize) desconhecido: %s"
 
-#: ref-filter.c:284
+#: ref-filter.c:347
 #, fuzzy, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) leva argumentos nenhuns"
 
-#: ref-filter.c:296
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) leva argumentos nenhuns"
 
-#: ref-filter.c:309
+#: ref-filter.c:372
 #, fuzzy, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "argumento %%(subject) desconhecido: %s"
 
-#: ref-filter.c:330
+#: ref-filter.c:391
+#, c-format
+msgid "expected %%(trailers:key=<value>)"
+msgstr ""
+
+#: ref-filter.c:393
 #, fuzzy, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "argumento %%(trailers) desconhecido: %s"
 
-#: ref-filter.c:363
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valor positivo esperado contents:lines=%s"
 
-#: ref-filter.c:365
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "argumento %%(contents) desconhecido: %s"
 
-#: ref-filter.c:380
+#: ref-filter.c:441
 #, fuzzy, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "valor positivo esperado contents:lines=%s"
 
-#: ref-filter.c:384
+#: ref-filter.c:445
 #, fuzzy, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "argumento '%s' desconhecido em %%(%s)"
 
-#: ref-filter.c:398
+#: ref-filter.c:459
 #, fuzzy, c-format
 msgid "unrecognized email option: %s"
 msgstr "opção de email desconhecida: %s"
 
-#: ref-filter.c:428
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "formato esperado: %%(align:<largura>,<posição>)"
 
-#: ref-filter.c:440
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "posição desconhecida: %s"
 
-#: ref-filter.c:447
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "largura desconhecida: %s"
 
-#: ref-filter.c:456
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argumento %%(align) desconhecido: %s"
 
-#: ref-filter.c:464
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "largura positiva esperada com o átomo %%(algn)"
 
-#: ref-filter.c:482
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "argumento %%(if) desconhecido: %s"
 
-#: ref-filter.c:584
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nome de ficheiro malformado: %.*s"
 
-#: ref-filter.c:611
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nome do campo desconhecido: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 
-#: ref-filter.c:739
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(if) utilizado sem átomo %%(then) correspondente"
 
-#: ref-filter.c:802
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(then) utilizado sem átomo %%(if) correspondente"
 
-#: ref-filter.c:804
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "formato: átomo %%(then) utilizado mais que uma vez"
 
-#: ref-filter.c:806
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "formato: átomo %%(then) utilizado depois de %%(else)"
 
-#: ref-filter.c:834
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(else) utilizado sem átomo %%(if) correspondente"
 
-#: ref-filter.c:836
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(else) utilizado sem átomo %%(then) correspondente"
 
-#: ref-filter.c:838
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "formato: átomo %%(else) utilizado mais que uma vez"
 
-#: ref-filter.c:853
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "formato: átomo %%(end) utilizado sem átomo correspondente"
 
-#: ref-filter.c:910
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
-msgstr "cadeia malformada %s"
+msgstr "formato de string %s malformado"
 
-#: ref-filter.c:1549
+#: ref-filter.c:1621
 #, fuzzy, c-format
-msgid "no branch, rebasing %s"
+msgid "(no branch, rebasing %s)"
 msgstr "(ramo nenhum, rebaseando %s)"
 
-#: ref-filter.c:1552
+#: ref-filter.c:1624
 #, fuzzy, c-format
-msgid "no branch, rebasing detached HEAD %s"
+msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(ramo nenhum, rebaseando HEAD solta %s)"
 
-#: ref-filter.c:1555
+#: ref-filter.c:1627
 #, fuzzy, c-format
-msgid "no branch, bisect started on %s"
+msgid "(no branch, bisect started on %s)"
 msgstr "(ramo nenhum, bisseção iniciada em %s)"
 
-#: ref-filter.c:1565
+#: ref-filter.c:1631
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD destacada em %s)"
+
+#: ref-filter.c:1634
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr "(HEAD destacada de %s)"
+
+#: ref-filter.c:1637
 #, fuzzy
-msgid "no branch"
+msgid "(no branch)"
 msgstr "(ramo nenhum)"
 
-#: ref-filter.c:1599 ref-filter.c:1808
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
-msgstr "falta o objeto %s de %s"
+msgstr ""
 
-#: ref-filter.c:1609
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "falha ao invocar parse_object_buffer sobre %s de %s"
 
-#: ref-filter.c:2062
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objeto malformado em '%s'"
 
-#: ref-filter.c:2151
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
-msgstr "a referência %s com nome danificado foi ignorada"
+msgstr "ignorando ref com nome quebrado %s"
 
-#: ref-filter.c:2156 refs.c:660
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "a referência %s danificada foi ignorada"
 
-#: ref-filter.c:2472
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "formato: falta átomo %%(end)"
 
-#: ref-filter.c:2571
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "nome de objeto malformado %s"
 
-#: ref-filter.c:2576
+#: ref-filter.c:2601
 #, fuzzy, c-format
 msgid "option `%s' must point to a commit"
 msgstr "opção '%s' tem apontar para um commit"
@@ -6268,65 +7041,80 @@
 msgid "%s does not point to a valid object!"
 msgstr "'%s' aponta para objeto válido nenhum!"
 
-#: refs.c:575
+#: refs.c:566
+#, c-format
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+
+#: refs.c:588
 #, fuzzy, c-format
 msgid "could not retrieve `%s`"
 msgstr "incapaz recuperar '%s'"
 
-#: refs.c:582
+#: refs.c:598
 #, fuzzy, c-format
 msgid "invalid branch name: %s = %s"
-msgstr "Nome de ramo inválido: '%s'"
+msgstr "Nome de ramo inválido: %s = %s"
 
-#: refs.c:658
+#: refs.c:674
 #, fuzzy, c-format
 msgid "ignoring dangling symref %s"
 msgstr "a referência %s danificada foi ignorada"
 
-#: refs.c:895
+#: refs.c:922
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr ""
 
-#: refs.c:901
+#: refs.c:929
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
 
-#: refs.c:960
+#: refs.c:994
 #, c-format
 msgid "log for %s is empty"
 msgstr ""
 
-#: refs.c:1052
+#: refs.c:1086
 #, fuzzy, c-format
 msgid "refusing to update ref with bad name '%s'"
-msgstr "a referência %s com nome danificado foi ignorada"
+msgstr "recusando atualizar ref com nome inválido '%s'"
 
-#: refs.c:1123
-#, fuzzy, c-format
+#: refs.c:1157
+#, c-format
 msgid "update_ref failed for ref '%s': %s"
-msgstr "falha ao abrir '%s': %s"
+msgstr ""
 
-#: refs.c:1947
+#: refs.c:2051
 #, fuzzy, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "atualizações múltiplas para ref '%s' proíbidas"
 
-#: refs.c:2027
+#: refs.c:2131
 msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 
-#: refs.c:2038
+#: refs.c:2142
 msgid "ref updates aborted by hook"
 msgstr ""
 
-#: refs.c:2138 refs.c:2168
+#: refs.c:2242 refs.c:2272
 #, fuzzy, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' existe; incapaz criar '%s'"
 
-#: refs.c:2144 refs.c:2179
+#: refs.c:2248 refs.c:2283
 #, fuzzy, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "incapaz processar '%s' e '%s' ao mesmo tempo"
@@ -6348,9 +7136,9 @@
 msgstr "incapaz apagar referências: %s"
 
 #: refspec.c:170
-#, fuzzy, c-format
+#, c-format
 msgid "invalid refspec '%s'"
-msgstr "ficheiro inválido: '%s'"
+msgstr ""
 
 #: remote.c:351
 #, c-format
@@ -6390,12 +7178,12 @@
 msgid "value '%s' of pattern has no '*'"
 msgstr ""
 
-#: remote.c:1073
+#: remote.c:1083
 #, fuzzy, c-format
 msgid "src refspec %s does not match any"
 msgstr "src refspec %s corresponde a nenhum"
 
-#: remote.c:1078
+#: remote.c:1088
 #, c-format
 msgid "src refspec %s matches more than one"
 msgstr ""
@@ -6404,7 +7192,7 @@
 #. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
 #. the <src>.
 #.
-#: remote.c:1093
+#: remote.c:1103
 #, c-format
 msgid ""
 "The destination you provided is not a full refname (i.e.,\n"
@@ -6418,7 +7206,7 @@
 "Neither worked, so we gave up. You must fully qualify the ref."
 msgstr ""
 
-#: remote.c:1113
+#: remote.c:1123
 #, c-format
 msgid ""
 "The <src> part of the refspec is a commit object.\n"
@@ -6426,7 +7214,7 @@
 "'%s:refs/heads/%s'?"
 msgstr ""
 
-#: remote.c:1118
+#: remote.c:1128
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tag object.\n"
@@ -6434,7 +7222,7 @@
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1123
+#: remote.c:1133
 #, c-format
 msgid ""
 "The <src> part of the refspec is a tree object.\n"
@@ -6442,7 +7230,7 @@
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1128
+#: remote.c:1138
 #, c-format
 msgid ""
 "The <src> part of the refspec is a blob object.\n"
@@ -6450,114 +7238,115 @@
 "'%s:refs/tags/%s'?"
 msgstr ""
 
-#: remote.c:1164
+#: remote.c:1174
 #, fuzzy, c-format
 msgid "%s cannot be resolved to branch"
 msgstr "%s incapaz ser resolvido para ramo"
 
-#: remote.c:1175
+#: remote.c:1185
 #, fuzzy, c-format
 msgid "unable to delete '%s': remote ref does not exist"
 msgstr "incapaz apagar '%s': ref remoto é inexistente"
 
-#: remote.c:1187
+#: remote.c:1197
 #, c-format
 msgid "dst refspec %s matches more than one"
 msgstr ""
 
-#: remote.c:1194
+#: remote.c:1204
 #, c-format
 msgid "dst ref %s receives from more than one src"
 msgstr ""
 
-#: remote.c:1714 remote.c:1815
+#: remote.c:1724 remote.c:1825
 msgid "HEAD does not point to a branch"
 msgstr "HEAD aponta para ramo nenhum"
 
-#: remote.c:1723
+#: remote.c:1733
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "ramo inexistente: '%s'"
 
-#: remote.c:1726
+#: remote.c:1736
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "configurado upstream nenhum para ramo '%s'"
 
-#: remote.c:1732
+#: remote.c:1742
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "incapaz gravar ramo upstream '%s' como ramo remote-tracking"
 
-#: remote.c:1747
+#: remote.c:1757
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "destino de atirar '%s' em remoto '%s' tem ramo de tracking local nenhum"
+msgstr ""
+"destino de atirar '%s' em remoto '%s' tem ramo de tracking local nenhum"
 
-#: remote.c:1759
+#: remote.c:1769
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "ramo '%s' tem remoto para atirar nenhum"
 
-#: remote.c:1769
+#: remote.c:1779
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "refspecs de atirar para '%s'incluí '%s' nenhum"
 
-#: remote.c:1782
+#: remote.c:1792
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "publicação sem destino (push.default é 'nothing')"
 
-#: remote.c:1804
+#: remote.c:1814
 msgid "cannot resolve 'simple' push to a single destination"
-msgstr "incapaz resolver atiranço 'simple' para destino único"
+msgstr "incapaz resolver atiro 'simple' para destino único"
 
-#: remote.c:1933
+#: remote.c:1943
 #, fuzzy, c-format
 msgid "couldn't find remote ref %s"
 msgstr "incapaz encontrar ref remoto %s"
 
-#: remote.c:1946
+#: remote.c:1956
 #, c-format
 msgid "* Ignoring funny ref '%s' locally"
 msgstr ""
 
-#: remote.c:2109
+#: remote.c:2119
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "A base do seu ramo é '%s', mas o ramo a montante desapareceu.\n"
 
-#: remote.c:2113
+#: remote.c:2123
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (use \"git branch --unset-upstream\" para corrigir)\n"
 
-#: remote.c:2116
+#: remote.c:2126
 #, fuzzy, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "O seu ramo está atualizado com '%s'.\n"
 
-#: remote.c:2120
+#: remote.c:2130
 #, fuzzy, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "O seu ramo está à frente de '%s' por %d commit.\n"
 
-#: remote.c:2123
+#: remote.c:2133
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr ""
 
-#: remote.c:2127
+#: remote.c:2137
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "O seu ramo está à frente de '%s' por %d commit.\n"
 msgstr[1] "O seu ramo está à frente de '%s' por %d commits.\n"
 
-#: remote.c:2133
+#: remote.c:2143
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (use \"git push\" para publicar os commits locais)\n"
 
-#: remote.c:2136
+#: remote.c:2146
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -6569,11 +7358,11 @@
 "O seu ramo está atrás de '%s' por %d commits, podendo ser atualizado com "
 "avanço rápido.\n"
 
-#: remote.c:2144
+#: remote.c:2154
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (use \"git pull\" para atualizar o seu ramo local)\n"
 
-#: remote.c:2147
+#: remote.c:2157
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -6588,11 +7377,11 @@
 "O seu ramo e '%s' divergiram,\n"
 "tendo cada um %d e %d commits diferentes, respetivamente.\n"
 
-#: remote.c:2157
+#: remote.c:2167
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (use \"git pull\" para integrar o ramo remoto no seu ramo)\n"
 
-#: remote.c:2348
+#: remote.c:2359
 #, fuzzy, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "incapaz analisar nome de objeto esperado '%s'"
@@ -6600,109 +7389,109 @@
 #: replace-object.c:21
 #, fuzzy, c-format
 msgid "bad replace ref name: %s"
-msgstr "eliminar referências substituídas"
+msgstr "substituição de nome de ref inválida: %s"
 
 #: replace-object.c:30
 #, fuzzy, c-format
 msgid "duplicate replace ref: %s"
-msgstr "eliminar referências substituídas"
+msgstr "substituição duplicada de ref: %s"
 
 #: replace-object.c:82
 #, fuzzy, c-format
 msgid "replace depth too high for object %s"
 msgstr "substituir a tag se esta existir"
 
-#: rerere.c:217 rerere.c:226 rerere.c:229
+#: rerere.c:201 rerere.c:210 rerere.c:213
 msgid "corrupt MERGE_RR"
 msgstr ""
 
-#: rerere.c:264 rerere.c:269
+#: rerere.c:248 rerere.c:253
 #, fuzzy
 msgid "unable to write rerere record"
 msgstr "incapaz escrever registro rerere"
 
-#: rerere.c:495
+#: rerere.c:479
 #, c-format
 msgid "there were errors while writing '%s' (%s)"
 msgstr ""
 
-#: rerere.c:498
-#, fuzzy, c-format
+#: rerere.c:482
+#, c-format
 msgid "failed to flush '%s'"
-msgstr "falha ao invocar stat de '%s'"
+msgstr ""
 
-#: rerere.c:503 rerere.c:1039
+#: rerere.c:487 rerere.c:1023
 #, fuzzy, c-format
 msgid "could not parse conflict hunks in '%s'"
 msgstr "incapaz analisar pedaços conflituosos em '%s'"
 
-#: rerere.c:684
-#, fuzzy, c-format
+#: rerere.c:668
+#, c-format
 msgid "failed utime() on '%s'"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
-#: rerere.c:694
-#, fuzzy, c-format
+#: rerere.c:678
+#, c-format
 msgid "writing '%s' failed"
-msgstr "falha ao criar '%s'"
+msgstr ""
 
-#: rerere.c:714
+#: rerere.c:698
 #, c-format
 msgid "Staged '%s' using previous resolution."
 msgstr ""
 
-#: rerere.c:753
+#: rerere.c:737
 #, c-format
 msgid "Recorded resolution for '%s'."
 msgstr ""
 
-#: rerere.c:788
+#: rerere.c:772
 #, c-format
 msgid "Resolved '%s' using previous resolution."
 msgstr ""
 
-#: rerere.c:803
+#: rerere.c:787
 #, fuzzy, c-format
 msgid "cannot unlink stray '%s'"
 msgstr "incapaz deslinkar o perdido '%s'"
 
-#: rerere.c:807
+#: rerere.c:791
 #, c-format
 msgid "Recorded preimage for '%s'"
 msgstr ""
 
-#: rerere.c:881 submodule.c:2082 builtin/log.c:1992
-#: builtin/submodule--helper.c:1878 builtin/submodule--helper.c:1890
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "incapaz criar pasta '%s'"
 
-#: rerere.c:1057
+#: rerere.c:1041
 #, fuzzy, c-format
 msgid "failed to update conflicted state in '%s'"
 msgstr "falha ao criar a ligação '%s'"
 
-#: rerere.c:1068 rerere.c:1075
+#: rerere.c:1052 rerere.c:1059
 #, fuzzy, c-format
 msgid "no remembered resolution for '%s'"
 msgstr "a faltar a lembrança da solução para '%s'"
 
-#: rerere.c:1077
+#: rerere.c:1061
 #, fuzzy, c-format
 msgid "cannot unlink '%s'"
 msgstr "incapaz de deslinkar '%s'"
 
-#: rerere.c:1087
+#: rerere.c:1071
 #, c-format
 msgid "Updated preimage for '%s'"
 msgstr ""
 
-#: rerere.c:1096
+#: rerere.c:1080
 #, fuzzy, c-format
 msgid "Forgot resolution for '%s'\n"
 msgstr "Está esquecida resolução para '%s'\n"
 
-#: rerere.c:1199
+#: rerere.c:1191
 #, fuzzy
 msgid "unable to open rr-cache directory"
 msgstr "incapaz abrir pasta rr-cache"
@@ -6712,127 +7501,131 @@
 msgid "could not determine HEAD revision"
 msgstr "incapaz determinar revisão de HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3460
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, fuzzy, c-format
 msgid "failed to find tree of %s"
 msgstr "Falha ao procurar árvore de %s."
 
-#: revision.c:2336
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr ""
 
-#: revision.c:2356
-#, fuzzy, c-format
-msgid "unknown value for --diff-merges: %s"
-msgstr "valor desconhecido '%s' da chave '%s'"
-
-#: revision.c:2694
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "o ramo atual parece estar danificado"
 
-#: revision.c:2697
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "teu ramo atual '%s' ainda contém commits nenhuns"
 
-#: revision.c:2907
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
-#: run-command.c:764
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "falha ao abrir /dev/null"
 
-#: run-command.c:1271
+#: run-command.c:1274
 #, fuzzy, c-format
 msgid "cannot create async thread: %s"
-msgstr "não foi possível criar thread: %s"
+msgstr "incapaz criar thread assíncrona: %s"
 
-#: run-command.c:1335
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
 "You can disable this warning with `git config advice.ignoredHook false`."
 msgstr ""
 
-#: send-pack.c:146
+#: send-pack.c:150
 #, fuzzy
 msgid "unexpected flush packet while reading remote unpack status"
-msgstr "não é possível analisar status de descompactação remota: %s"
+msgstr "flush de pacotes inesperado enquanto lendo unpack status remoto"
 
-#: send-pack.c:148
+#: send-pack.c:152
 #, c-format
 msgid "unable to parse remote unpack status: %s"
-msgstr "não é possível analisar status de descompactação remota: %s"
+msgstr "incapaz analisar unpack status remota: %s"
 
-#: send-pack.c:150
+#: send-pack.c:154
 #, c-format
 msgid "remote unpack failed: %s"
 msgstr "descompactação remota falhou: %s"
 
-#: send-pack.c:374
+#: send-pack.c:378
 msgid "failed to sign the push certificate"
 msgstr "falha ao assinar o certificado de publicação"
 
-#: send-pack.c:467
+#: send-pack.c:433
+#, fuzzy
+msgid "send-pack: unable to fork off fetch subprocess"
+msgstr "fetch-pack: incapaz de aforquilhar %s"
+
+#: send-pack.c:455
+msgid "push negotiation failed; proceeding anyway with push"
+msgstr ""
+
+#: send-pack.c:526
 #, fuzzy
 msgid "the receiving end does not support this repository's hash algorithm"
-msgstr "o recetor não suporta opções de publicação"
+msgstr "o recetor insustenta algoritmo hash deste repositório"
 
-#: send-pack.c:476
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
-msgstr "o recetor não suporta publicação com --signed"
+msgstr "o recetor insustenta atiro --signed"
 
-#: send-pack.c:478
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr ""
-"certificado de publicação não enviado uma vez que o recetor não suporta "
-"publicação com --signed"
+"certificado de atiro por enviar uma vez que o recetor insustenta atirocom --"
+"signed"
 
-#: send-pack.c:490
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
-msgstr "o recetor não suporta publicação com --atomic"
+msgstr "o recetor insustenta atiro com --atomic"
 
-#: send-pack.c:495
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
-msgstr "o recetor não suporta opções de publicação"
+msgstr "o recetor insustenta opções de atiro"
 
-#: sequencer.c:195
+#: sequencer.c:196
 #, fuzzy, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "Modo de limpeza inválido %s"
 
-#: sequencer.c:323
+#: sequencer.c:324
 #, fuzzy, c-format
 msgid "could not delete '%s'"
 msgstr "incapaz de apagar '%s'"
 
-#: sequencer.c:343 builtin/rebase.c:755 builtin/rebase.c:1596 builtin/rm.c:385
+#: sequencer.c:344 builtin/rebase.c:757 builtin/rebase.c:1592 builtin/rm.c:402
 #, c-format
 msgid "could not remove '%s'"
-msgstr "não foi possível remover '%s'"
+msgstr "incapaz remover '%s'"
 
-#: sequencer.c:353
+#: sequencer.c:354
 msgid "revert"
 msgstr "reverter"
 
-#: sequencer.c:355
+#: sequencer.c:356
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:357
+#: sequencer.c:358
 #, fuzzy
 msgid "rebase"
 msgstr "rebase -i"
 
-#: sequencer.c:359
+#: sequencer.c:360
 #, fuzzy, c-format
 msgid "unknown action: %d"
 msgstr "Ação desconhecida: %d"
 
-#: sequencer.c:418
+#: sequencer.c:419
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -6840,7 +7633,7 @@
 "depois de resolver os conflitos, marque os caminhos corrigidos\n"
 "com 'git add <caminhos>' ou 'git rm <caminhos>'"
 
-#: sequencer.c:421
+#: sequencer.c:422
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -6850,43 +7643,43 @@
 "com 'git add <caminhos>' ou 'git rm <caminhos>'\n"
 "e submeta o resultado com 'git commit'"
 
-#: sequencer.c:434 sequencer.c:3062
+#: sequencer.c:435 sequencer.c:3271
 #, c-format
 msgid "could not lock '%s'"
-msgstr "não foi possível bloquear '%s'"
+msgstr "incapaz bloquear '%s'"
 
-#: sequencer.c:436 sequencer.c:2861 sequencer.c:3066 sequencer.c:3080
-#: sequencer.c:3337 sequencer.c:5326 strbuf.c:1168 wrapper.c:631
+#: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
-msgstr "não foi possível escrever em '%s'"
+msgstr "incapaz escrever em '%s'"
 
-#: sequencer.c:441
+#: sequencer.c:442
 #, c-format
 msgid "could not write eol to '%s'"
-msgstr "não foi possível escrever fim de linha em '%s'"
+msgstr "incapaz escrever fim de linha em '%s'"
 
-#: sequencer.c:446 sequencer.c:2866 sequencer.c:3068 sequencer.c:3082
-#: sequencer.c:3345
+#: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
+#: sequencer.c:3555
 #, fuzzy, c-format
 msgid "failed to finalize '%s'"
 msgstr "falha ao finalizar '%s'."
 
-#: sequencer.c:485
+#: sequencer.c:486
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "as suas alterações locais serão substituídas ao %s."
 
-#: sequencer.c:489
+#: sequencer.c:490
 msgid "commit your changes or stash them to proceed."
 msgstr "submeta ou esconda as suas alterações para continuar."
 
-#: sequencer.c:521
+#: sequencer.c:522
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: avanço rápido"
 
-#: sequencer.c:560 builtin/tag.c:566
+#: sequencer.c:561 builtin/tag.c:609
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Modo de limpeza inválido %s"
@@ -6894,67 +7687,67 @@
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase".
 #.
-#: sequencer.c:670
+#: sequencer.c:671
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Incapaz de escrever novo ficheiro index"
 
-#: sequencer.c:687
+#: sequencer.c:685
 #, fuzzy
 msgid "unable to update cache tree"
-msgstr "não foi possível atualizar a árvore de cache"
+msgstr "incapaz atualizar árvore de cache"
 
-#: sequencer.c:701
+#: sequencer.c:699
 #, fuzzy
 msgid "could not resolve HEAD commit"
-msgstr "não foi possível resolver o commit HEAD"
+msgstr "incapaz resolver memória HEAD"
 
-#: sequencer.c:781
+#: sequencer.c:779
 #, c-format
 msgid "no key present in '%.*s'"
 msgstr ""
 
-#: sequencer.c:792
+#: sequencer.c:790
 #, fuzzy, c-format
 msgid "unable to dequote value of '%s'"
-msgstr "não é possível detetar automaticamente o nome (obteve-se '%s')"
+msgstr "incapaz retirar valor, da citação '%s'"
 
-#: sequencer.c:829 wrapper.c:201 wrapper.c:371 builtin/am.c:710
-#: builtin/am.c:802 builtin/merge.c:1135 builtin/rebase.c:908
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
-msgstr "não foi possível abrir '%s' para leitura"
+msgstr "incapaz abrir '%s' para leitura"
 
-#: sequencer.c:839
+#: sequencer.c:837
 msgid "'GIT_AUTHOR_NAME' already given"
 msgstr ""
 
-#: sequencer.c:844
+#: sequencer.c:842
 msgid "'GIT_AUTHOR_EMAIL' already given"
 msgstr ""
 
-#: sequencer.c:849
+#: sequencer.c:847
 msgid "'GIT_AUTHOR_DATE' already given"
 msgstr ""
 
-#: sequencer.c:853
-#, fuzzy, c-format
+#: sequencer.c:851
+#, c-format
 msgid "unknown variable '%s'"
-msgstr "Formato de arquivo desconhecido '%s'"
+msgstr ""
 
-#: sequencer.c:858
+#: sequencer.c:856
 msgid "missing 'GIT_AUTHOR_NAME'"
 msgstr ""
 
-#: sequencer.c:860
+#: sequencer.c:858
 msgid "missing 'GIT_AUTHOR_EMAIL'"
 msgstr ""
 
-#: sequencer.c:862
+#: sequencer.c:860
 msgid "missing 'GIT_AUTHOR_DATE'"
 msgstr ""
 
-#: sequencer.c:927
+#: sequencer.c:925
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -6983,11 +7776,11 @@
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:1208
+#: sequencer.c:1212
 msgid "'prepare-commit-msg' hook failed"
 msgstr ""
 
-#: sequencer.c:1214
+#: sequencer.c:1218
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -7013,7 +7806,7 @@
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1227
+#: sequencer.c:1231
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -7037,365 +7830,369 @@
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:1269
+#: sequencer.c:1273
 msgid "couldn't look up newly created commit"
-msgstr "não foi possível consultar o commit recém-criado"
+msgstr "incapaz consultar memória recém-criada"
 
-#: sequencer.c:1271
+#: sequencer.c:1275
 msgid "could not parse newly created commit"
-msgstr "não foi possível analisar o commit recém-criado"
+msgstr "incapaz analisar memória recém-criada"
 
-#: sequencer.c:1317
+#: sequencer.c:1321
 #, fuzzy
 msgid "unable to resolve HEAD after creating commit"
-msgstr "não foi possível resolver o commit HEAD"
+msgstr "incapaz resolver HEAD após criar memória"
 
-#: sequencer.c:1319
+#: sequencer.c:1323
 msgid "detached HEAD"
 msgstr "HEAD destacada"
 
-#: sequencer.c:1323
+#: sequencer.c:1327
 msgid " (root-commit)"
 msgstr " (commit-raiz)"
 
-#: sequencer.c:1344
+#: sequencer.c:1348
 #, fuzzy
 msgid "could not parse HEAD"
-msgstr "não foi possível ler HEAD"
+msgstr "incapaz processar HEAD"
 
-#: sequencer.c:1346
+#: sequencer.c:1350
 #, fuzzy, c-format
 msgid "HEAD %s is not a commit!"
-msgstr "%s %s não é um commit!"
+msgstr "HEAD %s é commit nenhum!"
 
-#: sequencer.c:1350 sequencer.c:1425 builtin/commit.c:1577
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
-msgstr "não foi possível analisar o commit HEAD"
+msgstr "incapaz analisar commit HEAD"
 
-#: sequencer.c:1403 sequencer.c:2100
+#: sequencer.c:1410 sequencer.c:2295
 #, fuzzy
 msgid "unable to parse commit author"
-msgstr "não foi possível analisar o commit %s"
+msgstr "incapaz processar autor de commit"
 
-#: sequencer.c:1414 builtin/am.c:1566 builtin/merge.c:701
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
-msgstr "git write-tree falhou ao escrever uma árvore"
+msgstr ""
 
-#: sequencer.c:1447 sequencer.c:1565
+#: sequencer.c:1454 sequencer.c:1574
 #, fuzzy, c-format
 msgid "unable to read commit message from '%s'"
-msgstr "não foi possível ler a mensagem de commit de %s"
+msgstr "incapaz ler mensagem de commit de '%s'"
 
-#: sequencer.c:1476 sequencer.c:1508
-#, fuzzy, c-format
+#: sequencer.c:1485 sequencer.c:1517
+#, c-format
 msgid "invalid author identity '%s'"
-msgstr "caminho inválido '%s'"
+msgstr ""
 
-#: sequencer.c:1482
+#: sequencer.c:1491
 msgid "corrupt author: missing date information"
 msgstr ""
 
-#: sequencer.c:1521 builtin/am.c:1593 builtin/commit.c:1678 builtin/merge.c:904
-#: builtin/merge.c:929 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
-msgstr "falha ao escrever objeto de commit"
+msgstr ""
 
-#: sequencer.c:1548 sequencer.c:4283 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
-msgstr "não foi possível atualizar %s"
+msgstr "incapaz atualizar %s"
 
-#: sequencer.c:1597
+#: sequencer.c:1606
 #, fuzzy, c-format
 msgid "could not parse commit %s"
-msgstr "não foi possível analisar o commit %s\n"
+msgstr "incapaz processar commit %s"
 
-#: sequencer.c:1602
+#: sequencer.c:1611
 #, fuzzy, c-format
 msgid "could not parse parent commit %s"
-msgstr "não foi possível analisar o commit pai %s\n"
+msgstr "incapaz processar commit parente %s"
 
-#: sequencer.c:1685 sequencer.c:1796
+#: sequencer.c:1694 sequencer.c:1975
 #, c-format
 msgid "unknown command: %d"
 msgstr "comando desconhecido: %d"
 
-#: sequencer.c:1743 sequencer.c:1768
-#, c-format
-msgid "This is a combination of %d commits."
-msgstr "Isto é a combinação de %d commits."
-
-#: sequencer.c:1753
-msgid "need a HEAD to fixup"
-msgstr "necessária uma HEAD para fixup"
-
-#: sequencer.c:1755 sequencer.c:3372
-msgid "could not read HEAD"
-msgstr "não foi possível ler HEAD"
-
-#: sequencer.c:1757
-msgid "could not read HEAD's commit message"
-msgstr "não foi possível ler a mensagem de commit de HEAD"
-
-#: sequencer.c:1763
-#, c-format
-msgid "cannot write '%s'"
-msgstr "não é possível escrever '%s'"
-
-#: sequencer.c:1770 git-rebase--preserve-merges.sh:486
+#: sequencer.c:1736 git-rebase--preserve-merges.sh:486
 msgid "This is the 1st commit message:"
 msgstr "Esta é a 1ª mensagem de commit:"
 
-#: sequencer.c:1778
-#, c-format
-msgid "could not read commit message of %s"
-msgstr "não foi possível ler a mensagem de commit de %s"
-
-#: sequencer.c:1785
+#: sequencer.c:1737
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Esta é a mensagem de commit nº%d:"
 
-#: sequencer.c:1791
+#: sequencer.c:1738
+msgid "The 1st commit message will be skipped:"
+msgstr "A 1ª mensagem de commit será ignorada:"
+
+#: sequencer.c:1739
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "A mensagem de commit #%d será ignorada:"
 
-#: sequencer.c:1879
-msgid "your index file is unmerged."
-msgstr "ficheiro de índice não integrado."
+#: sequencer.c:1740
+#, c-format
+msgid "This is a combination of %d commits."
+msgstr "Isto é a combinação de %d commits."
 
-#: sequencer.c:1886
+#: sequencer.c:1887 sequencer.c:1944
+#, c-format
+msgid "cannot write '%s'"
+msgstr "incapaz escrever '%s'"
+
+#: sequencer.c:1934
+msgid "need a HEAD to fixup"
+msgstr "necessária uma HEAD para fixup"
+
+#: sequencer.c:1936 sequencer.c:3582
+msgid "could not read HEAD"
+msgstr "incapaz ler HEAD"
+
+#: sequencer.c:1938
+msgid "could not read HEAD's commit message"
+msgstr "incapaz ler mensagem de commit de HEAD"
+
+#: sequencer.c:1962
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "incapaz ler mensagem de commit de %s"
+
+#: sequencer.c:2072
+msgid "your index file is unmerged."
+msgstr "teu ficheiro índex está por juntar."
+
+#: sequencer.c:2079
 #, fuzzy
 msgid "cannot fixup root commit"
-msgstr "não é possível encontrar o commit %s (%s)"
+msgstr "incapaz consertar commit raíz"
 
-#: sequencer.c:1905
+#: sequencer.c:2098
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
-msgstr "o commit %s é uma integração mas não foi fornecida a opção -m."
+msgstr "commit %s é uma junção mas foi fornecido opção -m nenhuma."
 
-#: sequencer.c:1913 sequencer.c:1921
+#: sequencer.c:2106 sequencer.c:2114
 #, c-format
 msgid "commit %s does not have parent %d"
-msgstr "o commit %s não tem o pai %d"
+msgstr "commit %s tem parente %d nenhum"
 
-#: sequencer.c:1927
+#: sequencer.c:2120
 #, c-format
 msgid "cannot get commit message for %s"
-msgstr "não é possível obter a mensagem de commit de %s"
+msgstr "incapaz obter mensagem de commit para %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1946
+#: sequencer.c:2139
 #, c-format
 msgid "%s: cannot parse parent commit %s"
-msgstr "%s: não foi possível analisar o commit pai %s"
+msgstr "%s: incapaz processar commit parente %s"
 
-#: sequencer.c:2011
+#: sequencer.c:2205
 #, c-format
 msgid "could not rename '%s' to '%s'"
-msgstr "não foi possível mudar o nome de '%s' para '%s'"
+msgstr "incapaz renomear '%s' para '%s'"
 
-#: sequencer.c:2071
+#: sequencer.c:2265
 #, c-format
 msgid "could not revert %s... %s"
-msgstr "não foi possível reverter %s... %s"
+msgstr "incapaz reverter %s... %s"
 
-#: sequencer.c:2072
+#: sequencer.c:2266
 #, c-format
 msgid "could not apply %s... %s"
-msgstr "não foi possível aplicar %s... %s"
+msgstr "incapaz aplicar %s... %s"
 
-#: sequencer.c:2092
+#: sequencer.c:2287
 #, c-format
 msgid "dropping %s %s -- patch contents already upstream\n"
 msgstr ""
 
-#: sequencer.c:2150
+#: sequencer.c:2345
 #, c-format
 msgid "git %s: failed to read the index"
-msgstr "git %s: falha ao ler o índice"
+msgstr "git %s: ler cenário falhou"
 
-#: sequencer.c:2157
+#: sequencer.c:2352
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: falha ao atualizar o índice"
 
-#: sequencer.c:2234
+#: sequencer.c:2425
 #, fuzzy, c-format
 msgid "%s does not accept arguments: '%s'"
-msgstr "%%(body) não leva argumentos"
+msgstr "%s rejeita argumentos: '%s'"
 
-#: sequencer.c:2243
-#, fuzzy, c-format
+#: sequencer.c:2434
+#, c-format
 msgid "missing arguments for %s"
-msgstr "falta o objeto %s de %s"
+msgstr ""
 
-#: sequencer.c:2274
+#: sequencer.c:2477
 #, fuzzy, c-format
 msgid "could not parse '%s'"
-msgstr "não foi possível analisar %s"
+msgstr "incapaz processar '%s'"
 
-#: sequencer.c:2335
+#: sequencer.c:2538
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "linha %d inválida: %.*s"
 
-#: sequencer.c:2346
+#: sequencer.c:2549
 #, c-format
 msgid "cannot '%s' without a previous commit"
-msgstr "não é possível efetuar '%s' sem um commit anterior"
+msgstr "incapaz '%s' sem um commit anterior"
 
-#: sequencer.c:2432
+#: sequencer.c:2635
 #, fuzzy
 msgid "cancelling a cherry picking in progress"
 msgstr "cancelando um cherry picking em curso"
 
-#: sequencer.c:2441
+#: sequencer.c:2644
 #, fuzzy
 msgid "cancelling a revert in progress"
 msgstr "cancelando uma reversão em curso"
 
-#: sequencer.c:2485
+#: sequencer.c:2690
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "corrija-o usando 'git rebase --edit-todo'."
 
-#: sequencer.c:2487
+#: sequencer.c:2692
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "folha de instruções inutilizável: '%s'"
 
-#: sequencer.c:2492
+#: sequencer.c:2697
 msgid "no commits parsed."
 msgstr "commits nenhuns analisados."
 
-#: sequencer.c:2503
+#: sequencer.c:2708
 msgid "cannot cherry-pick during a revert."
-msgstr "não é possível efetuar cherry-pick durante uma reversão."
+msgstr "incapaz apanhar durante uma reversão."
 
-#: sequencer.c:2505
+#: sequencer.c:2710
 msgid "cannot revert during a cherry-pick."
-msgstr "não é possível reverter durante um cherry-pick."
+msgstr "incapaz reverter durante uma apanha."
 
-#: sequencer.c:2583
+#: sequencer.c:2788
 #, c-format
 msgid "invalid value for %s: %s"
-msgstr "valor inválido de %s: %s"
+msgstr "valor inválido para %s: %s"
 
-#: sequencer.c:2690
+#: sequencer.c:2897
 msgid "unusable squash-onto"
 msgstr ""
 
-#: sequencer.c:2710
+#: sequencer.c:2917
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "folha de opções malformada: '%s'"
 
-#: sequencer.c:2803 sequencer.c:4636
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "o conjunto de commits especificado está vazio"
 
-#: sequencer.c:2820
+#: sequencer.c:3029
 #, fuzzy
 msgid "revert is already in progress"
 msgstr "cherry-pick ou revert em curso"
 
-#: sequencer.c:2822
+#: sequencer.c:3031
 #, fuzzy, c-format
 msgid "try \"git revert (--continue | %s--abort | --quit)\""
 msgstr "tente \"git cherry-pick (--continue | --quit |--abort)\""
 
-#: sequencer.c:2825
+#: sequencer.c:3034
 #, fuzzy
 msgid "cherry-pick is already in progress"
 msgstr "cherry-pick ou revert em curso"
 
-#: sequencer.c:2827
+#: sequencer.c:3036
 #, fuzzy, c-format
 msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
 msgstr "tente \"git cherry-pick (--continue | --quit |--abort)\""
 
-#: sequencer.c:2841
+#: sequencer.c:3050
 #, c-format
 msgid "could not create sequencer directory '%s'"
-msgstr "não foi possível criar o diretório do sequenciador '%s'"
+msgstr "incapaz criar pasta do sequenciador '%s'"
 
-#: sequencer.c:2856
+#: sequencer.c:3065
 msgid "could not lock HEAD"
-msgstr "não foi possível bloquear HEAD"
+msgstr "incapaz bloquear HEAD"
 
-#: sequencer.c:2916 sequencer.c:4371
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "sem cherry-pick ou revert em curso"
 
-#: sequencer.c:2918 sequencer.c:2929
+#: sequencer.c:3127 sequencer.c:3138
 msgid "cannot resolve HEAD"
-msgstr "não é possível resolver HEAD"
+msgstr "incapaz resolver HEAD"
 
-#: sequencer.c:2920 sequencer.c:2964
+#: sequencer.c:3129 sequencer.c:3173
 msgid "cannot abort from a branch yet to be born"
-msgstr "não é possível abortar um ramo ainda não criado"
+msgstr "incapaz abortar de um ramo ainda por nascer"
 
-#: sequencer.c:2950 builtin/grep.c:756
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
-msgstr "não é possível abrir '%s'"
+msgstr "incapaz abrir '%s'"
 
-#: sequencer.c:2952
+#: sequencer.c:3161
 #, c-format
 msgid "cannot read '%s': %s"
-msgstr "não é possível ler '%s': %s"
+msgstr "incapaz ler '%s': %s"
 
-#: sequencer.c:2953
+#: sequencer.c:3162
 msgid "unexpected end of file"
-msgstr "fim de ficheiro inesperado"
+msgstr ""
 
-#: sequencer.c:2959
+#: sequencer.c:3168
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "o ficheiro HEAD de pre-cherry-pick '%s' está corrompido"
 
-#: sequencer.c:2970
+#: sequencer.c:3179
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "Parece que moveste a HEAD. Recusando rebobinar, verifique a tua HEAD!"
 
-#: sequencer.c:3011
+#: sequencer.c:3220
 #, fuzzy
 msgid "no revert in progress"
-msgstr "Rebase não está em curso?"
+msgstr "em curso reversão nenhuma"
 
-#: sequencer.c:3020
+#: sequencer.c:3229
 #, fuzzy
 msgid "no cherry-pick in progress"
 msgstr "cherry-pick nenhum em curso"
 
-#: sequencer.c:3030
-#, fuzzy
+#: sequencer.c:3239
 msgid "failed to skip the commit"
-msgstr "falha ao escrever objeto de commit"
+msgstr ""
 
-#: sequencer.c:3037
+#: sequencer.c:3246
 msgid "there is nothing to skip"
 msgstr ""
 
-#: sequencer.c:3040
+#: sequencer.c:3249
 #, c-format
 msgid ""
 "have you committed already?\n"
 "try \"git %s --continue\""
 msgstr ""
 
-#: sequencer.c:3202 sequencer.c:4263
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
-msgstr "não é possível ler HEAD"
+msgstr "incapaz ler HEAD"
 
-#: sequencer.c:3219
+#: sequencer.c:3428
 #, fuzzy, c-format
 msgid "unable to copy '%s' to '%s'"
-msgstr "não foi possível copiar '%s' para '%s'"
+msgstr "incapaz copiar '%s' para '%s'"
 
-#: sequencer.c:3227
+#: sequencer.c:3436
 #, fuzzy, c-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -7414,27 +8211,27 @@
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:3237
+#: sequencer.c:3446
 #, fuzzy, c-format
 msgid "Could not apply %s... %.*s"
-msgstr "não foi possível aplicar %s... %s"
+msgstr "Incapaz aplicar %s... %.*s"
 
-#: sequencer.c:3244
+#: sequencer.c:3453
 #, fuzzy, c-format
 msgid "Could not merge %.*s"
-msgstr "Incapaz de juntar %.*s"
+msgstr "Incapaz juntar %.*s"
 
-#: sequencer.c:3258 sequencer.c:3262 builtin/difftool.c:640
+#: sequencer.c:3467 sequencer.c:3471 builtin/difftool.c:644
 #, c-format
 msgid "could not copy '%s' to '%s'"
-msgstr "não foi possível copiar '%s' para '%s'"
+msgstr "incapaz copiar '%s' para '%s'"
 
-#: sequencer.c:3274
+#: sequencer.c:3483
 #, fuzzy, c-format
 msgid "Executing: %s\n"
 msgstr "A executar: %s\n"
 
-#: sequencer.c:3289
+#: sequencer.c:3498
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -7449,11 +8246,11 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3295
+#: sequencer.c:3504
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "e fez alterações ao índice e/ou à árvore de trabalho\n"
 
-#: sequencer.c:3301
+#: sequencer.c:3510
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -7470,94 +8267,94 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3362
+#: sequencer.c:3572
 #, fuzzy, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "nome de ficheiro malformado: %.*s"
 
-#: sequencer.c:3416
+#: sequencer.c:3645
 #, fuzzy
 msgid "writing fake root commit"
 msgstr "escrevendo commit de raíz falso"
 
-#: sequencer.c:3421
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr ""
 
-#: sequencer.c:3505
+#: sequencer.c:3734
 #, fuzzy, c-format
 msgid "could not resolve '%s'"
-msgstr "não foi possível remover '%s'"
+msgstr "incapaz resolver '%s'"
 
-#: sequencer.c:3538
+#: sequencer.c:3767
 #, fuzzy
 msgid "cannot merge without a current revision"
-msgstr "não é possível efetuar '%s' sem um commit anterior"
+msgstr "incapaz juntar sem uma revisão currente"
 
-#: sequencer.c:3560
+#: sequencer.c:3789
 #, fuzzy, c-format
 msgid "unable to parse '%.*s'"
-msgstr "não foi possível criar '%s'"
+msgstr "incapaz processar '%.*s'"
 
-#: sequencer.c:3569
+#: sequencer.c:3798
 #, fuzzy, c-format
 msgid "nothing to merge: '%.*s'"
-msgstr "ignorado não integrado: '%.*s'"
+msgstr "nada a juntar: '%.*s'"
 
-#: sequencer.c:3581
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr ""
 
-#: sequencer.c:3597
+#: sequencer.c:3826
 #, fuzzy, c-format
 msgid "could not get commit message of '%s'"
-msgstr "não foi possível ler a mensagem de commit de %s"
+msgstr "incapaz obter mensagem de commit de '%s'"
 
-#: sequencer.c:3780
+#: sequencer.c:4009
 #, fuzzy, c-format
 msgid "could not even attempt to merge '%.*s'"
-msgstr "não foi possível validar a tag '%s'"
+msgstr "incapaz de tentar juntar '%.*s'"
 
-#: sequencer.c:3796
+#: sequencer.c:4025
 #, fuzzy
 msgid "merge: Unable to write new index file"
 msgstr "merge: Incapaz de escrever novo ficheiro index"
 
-#: sequencer.c:3870
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Incapaz de arrumar automaticamente (autostash)"
 
-#: sequencer.c:3873
+#: sequencer.c:4102
 #, fuzzy, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Resposta de squash inexperada: '%s'"
 
-#: sequencer.c:3879
+#: sequencer.c:4108
 #, fuzzy, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Incapaz de criar a pasta para '%s'"
 
-#: sequencer.c:3882
+#: sequencer.c:4111
 #, fuzzy, c-format
 msgid "Created autostash: %s\n"
 msgstr "Criado autostash: %s\n"
 
-#: sequencer.c:3886
+#: sequencer.c:4115
 #, fuzzy
 msgid "could not reset --hard"
-msgstr "não foi possível ler orig-head"
+msgstr "incapaz repor --hard"
 
-#: sequencer.c:3911
+#: sequencer.c:4140
 #, fuzzy, c-format
 msgid "Applied autostash.\n"
 msgstr "Autostash aplicado.\n"
 
-#: sequencer.c:3923
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
-msgstr "não é possível guardar %s"
+msgstr "incapaz guardar %s"
 
-#: sequencer.c:3926
+#: sequencer.c:4155
 #, fuzzy, c-format
 msgid ""
 "%s\n"
@@ -7568,30 +8365,30 @@
 "As suas alterações estão guardadas na pilha.\n"
 "Pode executar \"git stash pop\" ou \"git stash drop\" oportunamente.\n"
 
-#: sequencer.c:3931
+#: sequencer.c:4160
 #, fuzzy
 msgid "Applying autostash resulted in conflicts."
 msgstr "Patch aplicado a '%s' com conflitos."
 
-#: sequencer.c:3932
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr ""
 
-#: sequencer.c:4025 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
-msgstr "não foi possível destacar HEAD"
+msgstr "incapaz soltar HEAD"
 
-#: sequencer.c:4040
+#: sequencer.c:4248
 #, fuzzy, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Parou no HEAD\n"
 
-#: sequencer.c:4042
+#: sequencer.c:4250
 #, fuzzy, c-format
 msgid "Stopped at %s\n"
 msgstr "Parou a %s...  %.*s\n"
 
-#: sequencer.c:4050
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -7604,58 +8401,58 @@
 "    git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:4096
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr ""
 
-#: sequencer.c:4141
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Parou no %s...  %.*s\n"
 
-#: sequencer.c:4212
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "comando desconhecido %d"
 
-#: sequencer.c:4271
+#: sequencer.c:4480
 msgid "could not read orig-head"
-msgstr "não foi possível ler orig-head"
+msgstr "incapaz ler orig-head"
 
-#: sequencer.c:4276
+#: sequencer.c:4485
 msgid "could not read 'onto'"
-msgstr "não foi possível ler 'onto'"
+msgstr "incapaz ler 'onto'"
 
-#: sequencer.c:4290
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
-msgstr "não foi possível atualizar HEAD para %s"
+msgstr "incapaz atualizar HEAD para %s"
 
-#: sequencer.c:4350
+#: sequencer.c:4559
 #, fuzzy, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "O %s foi rebaseado e atualizado com sucesso.\n"
 
-#: sequencer.c:4383
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
-msgstr "não é possível rebasear: tem alterações não preparadas."
+msgstr "incapaz rebasear: tem alterações despreparadas."
 
-#: sequencer.c:4392
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
-msgstr "não é possível emendar commit não-existente"
+msgstr "incapaz emendar commit inexistente"
 
-#: sequencer.c:4394
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
-msgstr "ficheiro inválido: '%s'"
+msgstr ""
 
-#: sequencer.c:4396
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "conteúdo inválido: '%s'"
 
-#: sequencer.c:4399
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -7665,59 +8462,59 @@
 "Tem alterações por submeter na árvore de trabalho. Submeta-as primeiro\n"
 "e execute 'git rebase --continue' de novo."
 
-#: sequencer.c:4435 sequencer.c:4474
+#: sequencer.c:4663 sequencer.c:4702
 #, fuzzy, c-format
 msgid "could not write file: '%s'"
-msgstr "não foi possível criar o ficheiro '%s'"
+msgstr "incapaz escrever ficheiro: '%s'"
 
-#: sequencer.c:4490
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "não foi possível remover CHERRY_PICK_HEAD"
+msgstr "incapaz remover CHERRY_PICK_HEAD"
 
-#: sequencer.c:4497
+#: sequencer.c:4725
 msgid "could not commit staged changes."
-msgstr "não foi possível submeter as alterações preparadas."
+msgstr "incapaz commit alterações preparadas."
 
-#: sequencer.c:4613
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
-msgstr "%s: não é possível efetuar cherry-pick de %s"
+msgstr "%s: incapaz apanhar um %s"
 
-#: sequencer.c:4617
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: revisão incorreta"
 
-#: sequencer.c:4652
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
-msgstr "não é possível reverter como commit inicial"
+msgstr "incapaz reverter como commit inicial"
 
-#: sequencer.c:5129
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr ""
 
-#: sequencer.c:5132
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sequencer.c:5374 sequencer.c:5391
+#: sequencer.c:5614 sequencer.c:5631
 #, fuzzy
 msgid "nothing to do"
 msgstr "nada a fazer"
 
-#: sequencer.c:5410
+#: sequencer.c:5650
 #, fuzzy
 msgid "could not skip unnecessary pick commands"
 msgstr "incapaz de saltar comandos pick desnecessários"
 
-#: sequencer.c:5504
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr ""
 
 #: setup.c:133
 #, fuzzy, c-format
 msgid "'%s' is outside repository at '%s'"
-msgstr "%s: '%s' está fora do repositório"
+msgstr "%s está fora do repositório em '%s'"
 
 #: setup.c:185
 #, c-format
@@ -7736,15 +8533,14 @@
 "Use '--' to separate paths from revisions, like this:\n"
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
-"argumento ambíguo '%s': revisão ou caminho desconhecidos não encontrado na "
-"árvore de trabalho.\n"
-"Use '--' para separar caminhos de revisões, assim:\n"
+"argumento ambíguo '%s': revisão desconhecida ou path fora da working tree.\n"
+"Usa '--' para separar paths de revisões, assim:\n"
 "'git <comando> [<revisão>...] -- [<ficheiro>...]'"
 
 #: setup.c:264
 #, fuzzy, c-format
 msgid "option '%s' must come before non-option arguments"
-msgstr "parar de analisar depois do primeiro argumento que não seja uma opção"
+msgstr "opção '%s' tem de vir antes argumentos diferentes de opção"
 
 #: setup.c:283
 #, c-format
@@ -7760,106 +8556,111 @@
 #: setup.c:419
 #, fuzzy
 msgid "unable to set up work tree using invalid config"
-msgstr "não é possível de obter o diretório de trabalho atual"
+msgstr "incapaz preparar work tree usando config inválido"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Esperava-se versão do repositório git <= %d, obteve-se %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "extensões de repositório desconhecidas encontradas:"
-
-#: setup.c:681
+#: setup.c:666
 #, fuzzy
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "extensões de repositório desconhecidas encontradas:"
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "extensão de repositório desconhecida encontrada:"
+msgstr[1] "extensões de repositório desconhecidas encontradas:"
 
-#: setup.c:700
-#, fuzzy, c-format
+#: setup.c:680
+#, fuzzy
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "versão de repo é 0, mas encontrou-se extensão vi-only:"
+msgstr[1] "versão de repo é 0, mas encontrou-se extensões vi-only:"
+
+#: setup.c:701
+#, c-format
 msgid "error opening '%s'"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
-#: setup.c:702
+#: setup.c:703
 #, fuzzy, c-format
 msgid "too large to be a .git file: '%s'"
-msgstr "não foi possível ler o ficheiro de entrada '%s'"
+msgstr "demasiado grande para ser um ficheiro .git: '%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, fuzzy, c-format
 msgid "error reading %s"
-msgstr "Erro ao rematar %s."
+msgstr "erro lendo %s"
 
-#: setup.c:706
+#: setup.c:707
 #, fuzzy, c-format
 msgid "invalid gitfile format: %s"
 msgstr "formato de data inválido: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, fuzzy, c-format
 msgid "no path in gitfile: %s"
 msgstr "gitfile sem path: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, fuzzy, c-format
 msgid "not a git repository: %s"
 msgstr "é repositório git nenhum: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr ""
 
-#: setup.c:826
+#: setup.c:827
 #, fuzzy, c-format
 msgid "not a git repository: '%s'"
 msgstr "é repositório git nenhum: '%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, fuzzy, c-format
 msgid "cannot chdir to '%s'"
-msgstr "não é possível mudar para o diretório %s"
+msgstr "incapaz chdir para '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 #, fuzzy
 msgid "cannot come back to cwd"
 msgstr "incapaz de voltar para cwd"
 
-#: setup.c:987
-#, fuzzy, c-format
+#: setup.c:988
+#, c-format
 msgid "failed to stat '%*s%s%s'"
-msgstr "falha ao invocar stat de '%s'"
+msgstr ""
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Incapaz de ler pasta atual de trabalho"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, fuzzy, c-format
 msgid "cannot change to '%s'"
-msgstr "não é possível mudar para '%s'"
+msgstr "incapaz mudar para '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, fuzzy, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "é repositório git nenhum (ou em pastas parente nenhuma): %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, fuzzy, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
 "é repositório git nenhum (ou em pai nenhum até ao ponto de montagem %s)\n"
-"Parando na fronteira do sistema de ficheiros (GIT_DISCOVERY_ACROSS_FILESYSTEM "
-"indefinido)."
+"Parando na fronteira do sistema de ficheiros "
+"(GIT_DISCOVERY_ACROSS_FILESYSTEM indefinido)."
 
-#: setup.c:1362
+#: setup.c:1381
 #, fuzzy, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7868,421 +8669,72 @@
 "Problema com o valor core.sharedRepository modo de ficheiro (0%.3o).\n"
 "O dono dos ficheiros tem de ter sempre permissões de leitura e escrita."
 
-#: setup.c:1409
+#: setup.c:1430
 #, fuzzy
 msgid "open /dev/null or dup failed"
 msgstr "falha ao abrir /dev/null"
 
-#: setup.c:1424
+#: setup.c:1445
 #, fuzzy
 msgid "fork failed"
 msgstr "falha ao invocar fseek"
 
-#: setup.c:1429
-#, fuzzy
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
-msgstr "falha ao executar o comando stash"
-
-#: sha1-file.c:480
-#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr ""
 
-#: sha1-file.c:531
-#, fuzzy, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "não foi possível analisar o objeto: %s"
-
-#: sha1-file.c:603
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
+#: sparse-index.c:162
+msgid "attempting to use sparse-index without cone mode"
 msgstr ""
 
-#: sha1-file.c:610
-#, fuzzy, c-format
-msgid "unable to normalize object directory: %s"
-msgstr "não foi possível analisar o objeto: %s"
-
-#: sha1-file.c:653
+#: sparse-index.c:176
 #, fuzzy
-msgid "unable to fdopen alternates lockfile"
-msgstr "não foi possível escrever os parâmetros no ficheiro de configuração"
+msgid "unable to update cache-tree, staying full"
+msgstr "incapaz atualizar árvore de cache"
 
-#: sha1-file.c:671
-#, fuzzy
-msgid "unable to read alternates file"
-msgstr "não foi possível ler o ficheiro de índice"
-
-#: sha1-file.c:678
-#, fuzzy
-msgid "unable to move new alternates file into place"
-msgstr "não foi possível escrever novo ficheiro de índice"
-
-#: sha1-file.c:713
+#: sparse-index.c:263
 #, c-format
-msgid "path '%s' does not exist"
-msgstr "o caminho '%s' não existe"
-
-#: sha1-file.c:734
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgid "index entry is a directory, but not sparse (%08x)"
 msgstr ""
-"ainda não é suportada a funcionalidade que permite ter o repositório de "
-"referência '%s' como uma extração ligada."
-
-#: sha1-file.c:740
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "o repositório de referência '%s' não é um repositório local."
-
-#: sha1-file.c:746
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "o repositório de referência '%s' é raso"
-
-#: sha1-file.c:754
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "o repositório de referência '%s' está enxertado"
-
-#: sha1-file.c:814
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr ""
-
-#: sha1-file.c:964
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr ""
-
-#: sha1-file.c:985
-#, fuzzy
-msgid "mmap failed"
-msgstr "%s falhou"
-
-#: sha1-file.c:1149
-#, fuzzy, c-format
-msgid "object file %s is empty"
-msgstr "objeto local %s corrompido"
-
-#: sha1-file.c:1284 sha1-file.c:2477
-#, fuzzy, c-format
-msgid "corrupt loose object '%s'"
-msgstr "não foi possível analisar o objeto '%s'"
-
-#: sha1-file.c:1286 sha1-file.c:2481
-#, fuzzy, c-format
-msgid "garbage at end of loose object '%s'"
-msgstr "não foi possível analisar o objeto: %s"
-
-#: sha1-file.c:1328
-#, fuzzy
-msgid "invalid object type"
-msgstr "tipo de objeto incorreto."
-
-#: sha1-file.c:1412
-#, c-format
-msgid "unable to unpack %s header with --allow-unknown-type"
-msgstr ""
-
-#: sha1-file.c:1415
-#, fuzzy, c-format
-msgid "unable to unpack %s header"
-msgstr "não foi possível atualizar %s"
-
-#: sha1-file.c:1421
-#, c-format
-msgid "unable to parse %s header with --allow-unknown-type"
-msgstr ""
-
-#: sha1-file.c:1424
-#, fuzzy, c-format
-msgid "unable to parse %s header"
-msgstr "não foi possível atualizar %s"
-
-#: sha1-file.c:1651
-#, fuzzy, c-format
-msgid "failed to read object %s"
-msgstr "falha ao ler o objeto '%s'."
-
-#: sha1-file.c:1655
-#, fuzzy, c-format
-msgid "replacement %s not found for %s"
-msgstr "modelos não encontrados em %s"
-
-#: sha1-file.c:1659
-#, fuzzy, c-format
-msgid "loose object %s (stored in %s) is corrupt"
-msgstr "objeto local %s corrompido"
-
-#: sha1-file.c:1663
-#, fuzzy, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "objeto local %s corrompido"
-
-#: sha1-file.c:1768
-#, fuzzy, c-format
-msgid "unable to write file %s"
-msgstr "não foi possível escrever %s"
-
-#: sha1-file.c:1775
-#, fuzzy, c-format
-msgid "unable to set permission to '%s'"
-msgstr "não foi possível resolver revisão: %s"
-
-#: sha1-file.c:1782
-#, fuzzy
-msgid "file write error"
-msgstr "falha ao escrever para rev-list"
-
-#: sha1-file.c:1802
-#, fuzzy
-msgid "error when closing loose object file"
-msgstr "erro ao fechar ficheiro de pacote"
-
-#: sha1-file.c:1867
-#, c-format
-msgid "insufficient permission for adding an object to repository database %s"
-msgstr ""
-
-#: sha1-file.c:1869
-#, fuzzy
-msgid "unable to create temporary file"
-msgstr "não foi possível criar índice temporário"
-
-#: sha1-file.c:1893
-#, fuzzy
-msgid "unable to write loose object file"
-msgstr "não é possível escrever o objeto de nota"
-
-#: sha1-file.c:1899
-#, fuzzy, c-format
-msgid "unable to deflate new object %s (%d)"
-msgstr "não é possível compactar objeto acrescentado (%d)"
-
-#: sha1-file.c:1903
-#, fuzzy, c-format
-msgid "deflateEnd on object %s failed (%d)"
-msgstr "falha de fstat de %s"
-
-#: sha1-file.c:1907
-#, c-format
-msgid "confused by unstable object source data for %s"
-msgstr ""
-
-#: sha1-file.c:1917 builtin/pack-objects.c:1086
-#, fuzzy, c-format
-msgid "failed utime() on %s"
-msgstr "falha ao abrir '%s'"
-
-#: sha1-file.c:1994
-#, fuzzy, c-format
-msgid "cannot read object for %s"
-msgstr "não foi possível ler o objeto %s"
-
-#: sha1-file.c:2045
-#, fuzzy
-msgid "corrupt commit"
-msgstr "substituir autor do commit"
-
-#: sha1-file.c:2053
-#, fuzzy
-msgid "corrupt tag"
-msgstr "mostrar tags"
-
-#: sha1-file.c:2153
-#, c-format
-msgid "read error while indexing %s"
-msgstr ""
-
-#: sha1-file.c:2156
-#, fuzzy, c-format
-msgid "short read while indexing %s"
-msgstr "não é possível ler o índice"
-
-#: sha1-file.c:2229 sha1-file.c:2239
-#, fuzzy, c-format
-msgid "%s: failed to insert into database"
-msgstr "gpg não assinou os dados"
-
-#: sha1-file.c:2245
-#, fuzzy, c-format
-msgid "%s: unsupported file type"
-msgstr "versão de índice %s não suportada"
-
-#: sha1-file.c:2269
-#, fuzzy, c-format
-msgid "%s is not a valid object"
-msgstr "%s não é um objeto '%s' válido"
-
-#: sha1-file.c:2271
-#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s não é um objeto '%s' válido"
-
-#: sha1-file.c:2298 builtin/index-pack.c:192
-#, c-format
-msgid "unable to open %s"
-msgstr "não foi possível abrir %s"
-
-#: sha1-file.c:2488 sha1-file.c:2541
-#, c-format
-msgid "hash mismatch for %s (expected %s)"
-msgstr ""
-
-#: sha1-file.c:2512
-#, fuzzy, c-format
-msgid "unable to mmap %s"
-msgstr "não foi possível abrir %s"
-
-#: sha1-file.c:2517
-#, fuzzy, c-format
-msgid "unable to unpack header of %s"
-msgstr "não foi possível atualizar %s"
-
-#: sha1-file.c:2523
-#, fuzzy, c-format
-msgid "unable to parse header of %s"
-msgstr "não foi possível ler %s"
-
-#: sha1-file.c:2534
-#, fuzzy, c-format
-msgid "unable to unpack contents of %s"
-msgstr "não é possível analisar o contacto: %s"
-
-#: sha1-name.c:486
-#, c-format
-msgid "short SHA1 %s is ambiguous"
-msgstr "SHA1 curto %s é ambíguo"
-
-#: sha1-name.c:497
-msgid "The candidates are:"
-msgstr "Os candidatos são:"
-
-#: sha1-name.c:796
-#, fuzzy
-msgid ""
-"Git normally never creates a ref that ends with 40 hex characters\n"
-"because it will be ignored when you just specify 40-hex. These refs\n"
-"may be created by mistake. For example,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
-"examine these refs and maybe delete them. Turn this message off by\n"
-"running \"git config advice.objectNameWarning false\""
-msgstr ""
-"Normalmente o Git nunca cria refs que terminem em 40 caracteres\n"
-"hexadecimais, porque será ignorada quando apenas se indica 40-hex.\n"
-"Poderam-se criar estas refs por engano. Como no exemplo,\n"
-"\n"
-"  git switch -c $br $(git rev-parse ...)\n"
-"\n"
-"onde \"$br\" fica vazio e uma ref de 40-hex é criada. Por favor\n"
-"examine estas refs e talvez apague-as. Desative esta mensagem\n"
-"executando \"git config advice.objectNameWarning false\""
-
-#: sha1-name.c:916
-#, c-format
-msgid "log for '%.*s' only goes back to %s"
-msgstr ""
-
-#: sha1-name.c:924
-#, c-format
-msgid "log for '%.*s' only has %d entries"
-msgstr ""
-
-#: sha1-name.c:1702
-#, fuzzy, c-format
-msgid "path '%s' exists on disk, but not in '%.*s'"
-msgstr "O caminho '%s' está dentro do submódulo '%.*s'"
-
-#: sha1-name.c:1708
-#, c-format
-msgid ""
-"path '%s' exists, but not '%s'\n"
-"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
-msgstr ""
-
-#: sha1-name.c:1717
-#, fuzzy, c-format
-msgid "path '%s' does not exist in '%.*s'"
-msgstr "o caminho '%s' não existe"
-
-#: sha1-name.c:1745
-#, c-format
-msgid ""
-"path '%s' is in the index, but not at stage %d\n"
-"hint: Did you mean ':%d:%s'?"
-msgstr ""
-
-#: sha1-name.c:1761
-#, c-format
-msgid ""
-"path '%s' is in the index, but not '%s'\n"
-"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
-msgstr ""
-
-#: sha1-name.c:1769
-#, c-format
-msgid "path '%s' exists on disk, but not in the index"
-msgstr ""
-
-#: sha1-name.c:1771
-#, fuzzy, c-format
-msgid "path '%s' does not exist (neither on disk nor in the index)"
-msgstr "o caminho '%s' não tem a versão deles"
-
-#: sha1-name.c:1784
-#, fuzzy
-msgid "relative path syntax can't be used outside working tree"
-msgstr ""
-"Os caminhos relativos só podem ser usados a partir do topo da árvore de "
-"trabalho"
-
-#: sha1-name.c:1922
-#, fuzzy, c-format
-msgid "invalid object name '%.*s'."
-msgstr "Nome de objeto inválido: '%s'."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:848
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:850
+#: strbuf.c:852
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:858
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:860
+#: strbuf.c:862
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:867
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:869
+#: strbuf.c:871
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:875
+#: strbuf.c:877
 #, fuzzy, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8290,33 +8742,33 @@
 msgstr[1] "bytes"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:877
+#: strbuf.c:879
 #, fuzzy, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "bytes"
 msgstr[1] "bytes"
 
-#: strbuf.c:1166 wrapper.c:199 wrapper.c:369 builtin/am.c:719
-#: builtin/rebase.c:864
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
+#: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
-msgstr "não foi possível abrir '%s' para escrita"
+msgstr "incapaz abrir '%s' para escrita"
 
-#: strbuf.c:1175
+#: strbuf.c:1177
 #, fuzzy, c-format
 msgid "could not edit '%s'"
-msgstr "não foi possível ler '%s'"
+msgstr "incapaz editar '%s'"
 
 #: submodule-config.c:237
 #, fuzzy, c-format
 msgid "ignoring suspicious submodule name: %s"
-msgstr "a referência %s com nome danificado foi ignorada"
+msgstr "ignorando nome suspeito de submódulo: %s"
 
 #: submodule-config.c:304
 #, fuzzy
 msgid "negative values not allowed for submodule.fetchjobs"
-msgstr "não é permitido valores negativos em submodule.fetchJobs"
+msgstr "é proíbido valores negativos para submodule.fetchjobs"
 
 #: submodule-config.c:402
 #, c-format
@@ -8326,7 +8778,7 @@
 #: submodule-config.c:499
 #, c-format
 msgid "invalid value for %s"
-msgstr "valor inválido de %s"
+msgstr ""
 
 #: submodule-config.c:766
 #, c-format
@@ -8335,13 +8787,14 @@
 
 #: submodule.c:114 submodule.c:143
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
-msgstr "Incapaz de alterar .gitmodules por juntar, resolve os conflitos "
-"de junção primeiro"
+msgstr ""
+"Incapaz de alterar .gitmodules por juntar, resolve os conflitos de junção "
+"primeiro"
 
 #: submodule.c:118 submodule.c:147
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
-msgstr "Secção de .gitmodules cujo path=%s não encontrada"
+msgstr "Secção de .gitmodules cujo path=%s por encontrar"
 
 #: submodule.c:154
 #, c-format
@@ -8352,70 +8805,72 @@
 msgid "staging updated .gitmodules failed"
 msgstr "falha ao preparar .gitmodules atualizado"
 
-#: submodule.c:327
+#: submodule.c:328
 #, fuzzy, c-format
 msgid "in unpopulated submodule '%s'"
-msgstr "A ignorar submódulo '%s'"
+msgstr "em submódulo despopulado '%s'"
 
-#: submodule.c:358
+#: submodule.c:359
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "O caminho '%s' está dentro do submódulo '%.*s'"
 
-#: submodule.c:434
+#: submodule.c:436
 #, fuzzy, c-format
 msgid "bad --ignore-submodules argument: %s"
 msgstr "Falha ao analisar parâmetro da opção --submodule: '%s'"
 
-#: submodule.c:816
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr ""
 
-#: submodule.c:919
+#: submodule.c:908
 #, fuzzy, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
-msgstr "%s %s não é um commit!"
+msgstr "entrada submódulo '%s' (%s) é um(a) %s, não um commit"
 
-#: submodule.c:1004
+#: submodule.c:993
 #, fuzzy, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
-msgstr "não foi possível executar 'git status' no submódulo '%s'"
+msgstr ""
+"Incapaz executar comando 'git rev-list <commits> --not --remotes -n 1' "
+"emsubmódulo %s"
 
-#: submodule.c:1127
+#: submodule.c:1116
 #, fuzzy, c-format
 msgid "process for submodule '%s' failed"
 msgstr "falha ao clonar '%s' no caminho de submódulo '%s'"
 
-#: submodule.c:1156 builtin/branch.c:678 builtin/submodule--helper.c:2469
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Falha ao resolver HEAD numa referência válida."
 
-#: submodule.c:1167
+#: submodule.c:1156
 #, fuzzy, c-format
 msgid "Pushing submodule '%s'\n"
-msgstr "A ignorar submódulo '%s'\n"
+msgstr "Atirando submódulo '%s'\n"
 
-#: submodule.c:1170
+#: submodule.c:1159
 #, fuzzy, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Impossível enviar submódulo '%s'\n"
 
-#: submodule.c:1462
+#: submodule.c:1451
 #, fuzzy, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Buscando submódulo %s%s\n"
 
-#: submodule.c:1492
+#: submodule.c:1485
 #, fuzzy, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Submódulo '%s' inacessível\n"
 
-#: submodule.c:1646
+#: submodule.c:1640
 #, fuzzy, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8424,80 +8879,79 @@
 "Erros na busca do submódulo:\n"
 "%s"
 
-#: submodule.c:1671
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
-msgstr "'%s' não é reconhecido como um repositório git"
+msgstr "'%s' é irreconhecível como um repositório git"
 
-#: submodule.c:1688
+#: submodule.c:1682
 #, fuzzy, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
-msgstr "não foi possível executar 'git status' no submódulo '%s'"
+msgstr "Incapaz executar 'git status' no submódulo '%s'"
 
-#: submodule.c:1729
+#: submodule.c:1723
 #, fuzzy, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
-msgstr "não foi possível executar 'git status' no submódulo '%s'"
+msgstr "'git status --porcelain=2' falhou no submódulo '%s'"
 
-#: submodule.c:1804
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
-msgstr "não foi possível iniciar 'git status' no submódulo '%s'"
+msgstr "incapaz iniciar 'git status' no submódulo '%s'"
 
-#: submodule.c:1817
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
-msgstr "não foi possível executar 'git status' no submódulo '%s'"
+msgstr "incapaz executar 'git status' no submódulo '%s'"
 
-#: submodule.c:1832
+#: submodule.c:1826
 #, fuzzy, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Incapaz de remover a definição core.worktree em submódulo '%s'"
 
-#: submodule.c:1859 submodule.c:2169
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
-msgstr "não foi possível percorrer recursivamente o submódulo '%s'"
+msgstr "incapaz percorrer recursivamente o submódulo '%s'"
 
-#: submodule.c:1880
+#: submodule.c:1874
 #, fuzzy
 msgid "could not reset submodule index"
-msgstr "não foi possível percorrer recursivamente o submódulo '%s'"
+msgstr "incapaz repor index de submódulo"
 
-#: submodule.c:1922
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "o submódulo '%s' tem índice sujo"
 
-#: submodule.c:1974
+#: submodule.c:1968
 #, fuzzy, c-format
 msgid "Submodule '%s' could not be updated."
-msgstr "Submódulos alterados mas não atualizados:"
+msgstr "Submódulo '%s' incapaz de ser atualizado."
 
-#: submodule.c:2042
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr ""
 
-#: submodule.c:2063
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
-"relocate_gitdir para submodule '%s' com mais do que uma árvore de trabalho "
-"não suportado"
+"relocate_gitdir para submodúlo '%s' com mais que uma worktree é insustentado"
 
-#: submodule.c:2075 submodule.c:2134
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
-msgstr "não foi possível procurar pelo submódulo '%s'"
+msgstr "incapaz procurar nome para submódulo '%s'"
 
-#: submodule.c:2079
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr ""
 
-#: submodule.c:2086
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8508,68 +8962,74 @@
 "'%s' para\n"
 "'%s'\n"
 
-#: submodule.c:2214
+#: submodule.c:2208
 msgid "could not start ls-files in .."
-msgstr "não foi possível iniciar ls-files em .."
+msgstr "incapaz iniciar ls-files em .."
 
-#: submodule.c:2254
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree retornou código de retorno inesperado %d"
 
-#: trailer.c:236
+#: symlinks.c:244
+#, c-format
+msgid "failed to lstat '%s'"
+msgstr ""
+
+#: trailer.c:244
 #, c-format
 msgid "running trailer command '%s' failed"
 msgstr "falha ao executar o comando trailer '%s'"
 
-#: trailer.c:483 trailer.c:488 trailer.c:493 trailer.c:547 trailer.c:551
-#: trailer.c:555
+#: trailer.c:493 trailer.c:498 trailer.c:503 trailer.c:562 trailer.c:566
+#: trailer.c:570
 #, c-format
 msgid "unknown value '%s' for key '%s'"
-msgstr "valor desconhecido '%s' da chave '%s'"
+msgstr "valor desconhecido '%s' para chave '%s'"
 
-#: trailer.c:537 trailer.c:542 builtin/remote.c:299 builtin/remote.c:324
+#: trailer.c:547 trailer.c:552 trailer.c:557 builtin/remote.c:299
+#: builtin/remote.c:324
 #, c-format
 msgid "more than one %s"
 msgstr "mais do que um %s"
 
-#: trailer.c:728
+#: trailer.c:743
 #, c-format
 msgid "empty trailer token in trailer '%.*s'"
 msgstr "token terminador vazio no terminador '%.*s'"
 
-#: trailer.c:748
+#: trailer.c:763
 #, c-format
 msgid "could not read input file '%s'"
-msgstr "não foi possível ler o ficheiro de entrada '%s'"
+msgstr "incapaz ler ficheiro de entrada '%s'"
 
-#: trailer.c:751
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
-msgstr "não foi possível ler da entrada padrão"
+msgstr "incapaz ler da entrada padrão"
 
-#: trailer.c:1009 wrapper.c:676
+#: trailer.c:1024 wrapper.c:676
 #, c-format
 msgid "could not stat %s"
-msgstr "não foi possível obter stat de %s"
+msgstr "incapaz obter estatutário %s"
 
-#: trailer.c:1011
+#: trailer.c:1026
 #, c-format
 msgid "file %s is not a regular file"
-msgstr "o ficheiro %s não é um ficheiro regular"
+msgstr "ficheiro %s é ficheiro regular nenhum"
 
-#: trailer.c:1013
+#: trailer.c:1028
 #, c-format
 msgid "file %s is not writable by user"
-msgstr "o ficheiro %s não pode ser escrito pelo utilizador"
+msgstr "ficheiro %s é não-escrevível para utilizador"
 
-#: trailer.c:1025
+#: trailer.c:1040
 msgid "could not open temporary file"
-msgstr "não foi possível abrir ficheiro temporário"
+msgstr "incapaz abrir ficheiro temporário"
 
-#: trailer.c:1065
+#: trailer.c:1080
 #, c-format
 msgid "could not rename temporary file to %s"
-msgstr "não foi possível mudar o nome do ficheiro temporário para %s"
+msgstr "incapaz renomear ficheiro temporário para %s"
 
 #: transport-helper.c:62 transport-helper.c:91
 #, fuzzy
@@ -8597,26 +9057,25 @@
 msgstr ""
 
 #: transport-helper.c:287 transport-helper.c:429
-#, fuzzy, c-format
+#, c-format
 msgid "%s unexpectedly said: '%s'"
-msgstr "blob para %s '%s' esperado"
+msgstr ""
 
 #: transport-helper.c:417
 #, fuzzy, c-format
 msgid "%s also locked %s"
-msgstr "'%s' não está trancada"
+msgstr "%s também trancou %s"
 
 #: transport-helper.c:497
 #, fuzzy
 msgid "couldn't run fast-import"
-msgstr "não foi possível executar o comando stash."
+msgstr "incapaz executar fast-import"
 
 #: transport-helper.c:520
-#, fuzzy
 msgid "error while running fast-import"
-msgstr "erro ao fechar ficheiro de pacote"
+msgstr ""
 
-#: transport-helper.c:549 transport-helper.c:1236
+#: transport-helper.c:549 transport-helper.c:1247
 #, fuzzy, c-format
 msgid "could not read ref %s"
 msgstr "incapaz de ler ref %s"
@@ -8631,136 +9090,138 @@
 msgstr ""
 
 #: transport-helper.c:618
-#, fuzzy
 msgid "invalid remote service path"
-msgstr "referência inválida: %s"
+msgstr ""
 
-#: transport-helper.c:661 transport.c:1446
+#: transport-helper.c:661 transport.c:1477
 #, fuzzy
 msgid "operation not supported by protocol"
-msgstr "opção não suportada com --recurse-submodules."
+msgstr "opção insustentado pelo protocolo"
 
 #: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr ""
 
-#: transport-helper.c:745
+#: transport-helper.c:693 transport.c:400
+msgid "--negotiate-only requires protocol v2"
+msgstr ""
+
+#: transport-helper.c:755
 msgid "'option' without a matching 'ok/error' directive"
 msgstr ""
 
-#: transport-helper.c:788
-#, fuzzy, c-format
+#: transport-helper.c:798
+#, c-format
 msgid "expected ok/error, helper said '%s'"
-msgstr "blob para %s '%s' esperado"
+msgstr ""
 
-#: transport-helper.c:845
+#: transport-helper.c:855
 #, fuzzy, c-format
 msgid "helper reported unexpected status of %s"
-msgstr "ls-tree retornou código de retorno inesperado %d"
+msgstr "helper reportou código de status inesperado de %s"
 
-#: transport-helper.c:928
+#: transport-helper.c:938
 #, fuzzy, c-format
 msgid "helper %s does not support dry-run"
-msgstr "O servidor não suporta --deepen"
+msgstr "helper %s insustenta dry-run"
 
-#: transport-helper.c:931
+#: transport-helper.c:941
 #, fuzzy, c-format
 msgid "helper %s does not support --signed"
-msgstr "O servidor não suporta --shallow-since"
+msgstr "helper %s insustenta --signed"
 
-#: transport-helper.c:934
+#: transport-helper.c:944
 #, fuzzy, c-format
 msgid "helper %s does not support --signed=if-asked"
-msgstr "o recetor não suporta publicação com --signed"
+msgstr "helper %s insustenta --signed=if-asked"
 
-#: transport-helper.c:939
+#: transport-helper.c:949
 #, fuzzy, c-format
 msgid "helper %s does not support --atomic"
-msgstr "O servidor não suporta --shallow-since"
+msgstr "helper %s insustenta --atomic"
 
-#: transport-helper.c:943
+#: transport-helper.c:953
 #, fuzzy, c-format
 msgid "helper %s does not support --%s"
-msgstr "O servidor não suporta --shallow-since"
+msgstr "helper %s insustenta --%s"
 
-#: transport-helper.c:950
+#: transport-helper.c:960
 #, fuzzy, c-format
 msgid "helper %s does not support 'push-option'"
-msgstr "o recetor não suporta opções de publicação"
+msgstr "helper %s insustenta 'push-option'"
 
-#: transport-helper.c:1050
+#: transport-helper.c:1060
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr ""
 
-#: transport-helper.c:1055
+#: transport-helper.c:1065
 #, fuzzy, c-format
 msgid "helper %s does not support 'force'"
-msgstr "O servidor não suporta --deepen"
+msgstr "helper %s insustenta 'force'"
 
-#: transport-helper.c:1102
+#: transport-helper.c:1112
 #, fuzzy
 msgid "couldn't run fast-export"
-msgstr "não foi possível executar o comando stash."
+msgstr "incapaz executar fast-export"
 
-#: transport-helper.c:1107
-#, fuzzy
+#: transport-helper.c:1117
 msgid "error while running fast-export"
-msgstr "erro ao fechar ficheiro de pacote"
+msgstr ""
 
-#: transport-helper.c:1132
+#: transport-helper.c:1142
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
 "Perhaps you should specify a branch.\n"
 msgstr ""
 
-#: transport-helper.c:1213
+#: transport-helper.c:1224
 #, fuzzy, c-format
 msgid "unsupported object format '%s'"
 msgstr "objeto malformado em '%s'"
 
-#: transport-helper.c:1222
+#: transport-helper.c:1233
 #, fuzzy, c-format
 msgid "malformed response in ref list: %s"
-msgstr "folha de opções malformada: '%s'"
+msgstr "resposta em lista de ref malformada: %s"
 
-#: transport-helper.c:1374
-#, fuzzy, c-format
+#: transport-helper.c:1385
+#, c-format
 msgid "read(%s) failed"
-msgstr "%s falhou"
+msgstr ""
 
-#: transport-helper.c:1401
-#, fuzzy, c-format
+#: transport-helper.c:1412
+#, c-format
 msgid "write(%s) failed"
-msgstr "%s falhou"
+msgstr ""
 
-#: transport-helper.c:1450
-#, fuzzy, c-format
+#: transport-helper.c:1461
+#, c-format
 msgid "%s thread failed"
-msgstr "%s falhou"
+msgstr ""
 
-#: transport-helper.c:1454
-#, fuzzy, c-format
+#: transport-helper.c:1465
+#, c-format
 msgid "%s thread failed to join: %s"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
-#: transport-helper.c:1473 transport-helper.c:1477
+#: transport-helper.c:1484 transport-helper.c:1488
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr ""
 
-#: transport-helper.c:1514
+#: transport-helper.c:1525
 #, c-format
 msgid "%s process failed to wait"
 msgstr ""
 
-#: transport-helper.c:1518
-#, fuzzy, c-format
+#: transport-helper.c:1529
+#, c-format
 msgid "%s process failed"
-msgstr "%s falhou"
+msgstr ""
 
-#: transport-helper.c:1536 transport-helper.c:1545
+#: transport-helper.c:1547 transport-helper.c:1556
 msgid "can't start thread for copying data"
 msgstr ""
 
@@ -8772,45 +9233,50 @@
 #: transport.c:145
 #, fuzzy, c-format
 msgid "could not read bundle '%s'"
-msgstr "não foi possível ler o ficheiro '%s'"
+msgstr "incapaz ler conjunto '%s'"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transporte: opção de profundidade '%s' inválida"
 
-#: transport.c:269
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr ""
 
-#: transport.c:270
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr ""
 
-#: transport.c:727
+#: transport.c:403
+#, fuzzy
+msgid "server does not support wait-for-done"
+msgstr "Servidor insustenta --deepen"
+
+#: transport.c:755
 #, fuzzy
 msgid "could not parse transport.color.* config"
-msgstr "não foi possível analisar o autor do script"
+msgstr "incapaz processar config transport.color.*"
 
-#: transport.c:802
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr ""
 
-#: transport.c:936
+#: transport.c:965
 #, fuzzy, c-format
 msgid "unknown value for config '%s': %s"
-msgstr "valor desconhecido '%s' da chave '%s'"
+msgstr "valor para config '%s' desconhecido: %s"
 
-#: transport.c:1002
+#: transport.c:1031
 #, fuzzy, c-format
 msgid "transport '%s' not allowed"
-msgstr "ramo '%s' não encontrado."
+msgstr "transport '%s' proibido"
 
-#: transport.c:1055
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr ""
 
-#: transport.c:1157
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8819,7 +9285,7 @@
 "Os seguintes paths de submódulo contêm alterações que\n"
 "puderam ser encontradas em remoto nenhum:\n"
 
-#: transport.c:1161
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -8846,32 +9312,32 @@
 "para publicá-las no remoto.\n"
 "\n"
 
-#: transport.c:1169
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Abortado."
 
-#: transport.c:1315
+#: transport.c:1346
 #, fuzzy
 msgid "failed to push all needed submodules"
 msgstr "Falha ao adicionar o submódulo '$sm_path'"
 
-#: tree-walk.c:32
+#: tree-walk.c:33
 msgid "too-short tree object"
 msgstr "objeto árvore demasiado curto"
 
-#: tree-walk.c:38
+#: tree-walk.c:39
 msgid "malformed mode in tree entry"
 msgstr "modo na entrada de árvore malformado"
 
-#: tree-walk.c:42
+#: tree-walk.c:43
 msgid "empty filename in tree entry"
 msgstr "nome de ficheiro vazio na entrada de árvore"
 
-#: tree-walk.c:117
+#: tree-walk.c:118
 msgid "too-short tree file"
 msgstr "ficheiro de árvore demasiado curto"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:115
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -8881,7 +9347,7 @@
 "extrair:\n"
 "%%sSubmeta as suas alterações ou esconda-as antes de trocar de ramo."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:117
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -8891,7 +9357,7 @@
 "extrair:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:120
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -8901,7 +9367,7 @@
 "integrar:\n"
 "%%sSubmeta as suas alterações ou esconda-as antes de integrar."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:122
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -8911,17 +9377,17 @@
 "integrar:\n"
 "%%s"
 
-#: unpack-trees.c:123
+#: unpack-trees.c:125
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
 "%%sPlease commit your changes or stash them before you %s."
 msgstr ""
-"As suas alterações locais nos seguintes ficheiros seriam substituídas por "
+"As tuas alterações locais aos seguintes ficheiros seriam substituídas por "
 "%s:\n"
-"%%sSubmeta as suas alterações ou esconda-as antes de efetuar %s."
+"%%sPor favor, faz commit ou stash às alterações antes de fazer %s."
 
-#: unpack-trees.c:125
+#: unpack-trees.c:127
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -8931,144 +9397,137 @@
 "%s:\n"
 "%%s"
 
-#: unpack-trees.c:130
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
 "%s"
 msgstr ""
-"Atualizar os seguintes diretórios perde os ficheiros não controlos dentro "
-"deles:\n"
+"Atualizar as seguintes pastas fará perder os seus ficheiros por seguir:\n"
 "%s"
 
-#: unpack-trees.c:134
-#, c-format
-msgid ""
-"The following untracked working tree files would be removed by checkout:\n"
-"%%sPlease move or remove them before you switch branches."
-msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos ao extrair:\n"
-"%%sMova ou remova-os antes de trocar de ramos."
-
 #: unpack-trees.c:136
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
-"%%s"
+"%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos ao extrair:\n"
-"%%s"
+"Os seguintes ficheiros por seguir da worktree seriam removidos no checkout:\n"
+"%%sPor favor, move ou remove-os antes de trocar de ramos."
 
-#: unpack-trees.c:139
+#: unpack-trees.c:138
 #, c-format
 msgid ""
-"The following untracked working tree files would be removed by merge:\n"
-"%%sPlease move or remove them before you merge."
+"The following untracked working tree files would be removed by checkout:\n"
+"%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos ao integrar:\n"
-"%%sPor favor, mova ou remova-os antes de integrar."
+"Os seguintes ficheiros por seguir da worktree seriam removidos no checkout:\n"
+"%%s"
 
 #: unpack-trees.c:141
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
-"%%s"
+"%%sPlease move or remove them before you merge."
 msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos ao integrar:\n"
-"%%s"
+"Os seguintes ficheiros por seguir da worktree seriam removidos por uma "
+"junção:\n"
+"%%sPor favor, move ou remove-os antes da junção."
 
-#: unpack-trees.c:144
+#: unpack-trees.c:143
 #, c-format
 msgid ""
-"The following untracked working tree files would be removed by %s:\n"
-"%%sPlease move or remove them before you %s."
+"The following untracked working tree files would be removed by merge:\n"
+"%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos por %s:\n"
-"%%sMova ou remova-os antes de efetuar %s."
+"Os seguintes ficheiros por seguir da worktree seriam removidos pela junção:\n"
+"%%s"
 
 #: unpack-trees.c:146
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
-"%%s"
+"%%sPlease move or remove them before you %s."
 msgstr ""
-"Os seguintes ficheiros não controlados na árvore de trabalho seriam "
-"removidos por %s:\n"
-"%%s"
+"Os seguintes ficheiros por seguir da worktree seriam removidos por %s:\n"
+"%%sPor favor, move ou remove-os antes de fazer %s."
 
-#: unpack-trees.c:152
+#: unpack-trees.c:148
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by "
-"checkout:\n"
-"%%sPlease move or remove them before you switch branches."
+"The following untracked working tree files would be removed by %s:\n"
+"%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos ao extrair:\n"
-"%%sMova ou remova-os antes de trocar de ramos."
+"Os seguintes ficheiros por seguir da árvore de trabalho seriam removidos por "
+"%s:\n"
+"%%s"
 
 #: unpack-trees.c:154
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
 "checkout:\n"
-"%%s"
+"%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos ao extrair:\n"
-"%%s"
+"Os seguintes ficheiros por seguir da árvore de trabalho seriam substituídos "
+"por um checkout:\n"
+"%%sPor favor, move ou remove-os antes de trocar de ramos."
 
-#: unpack-trees.c:157
+#: unpack-trees.c:156
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by merge:\n"
-"%%sPlease move or remove them before you merge."
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
+"%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos ao integrar:\n"
-"%%sMova ou remova-os antes de integrar."
+"Os seguintes ficheiros por seguir da worktree seriam sobrescritos por "
+"checkout:\n"
+"%%s"
 
 #: unpack-trees.c:159
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
-"%%s"
+"%%sPlease move or remove them before you merge."
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos ao integrar:\n"
-"%%s"
+"Os seguintes ficheiros por seguir da worktree seriam sobrescritos por "
+"junção:\n"
+"%%sPor favor, move ou remove-os antes de juntares."
 
-#: unpack-trees.c:162
+#: unpack-trees.c:161
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by %s:\n"
-"%%sPlease move or remove them before you %s."
+"The following untracked working tree files would be overwritten by merge:\n"
+"%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos por %s:\n"
-"%%sMova ou remova-os antes de efetuar %s."
+"Os seguintes ficheiros por seguir da worktree seriam sobrescritos por "
+"junção:\n"
+"%%s"
 
 #: unpack-trees.c:164
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
+"%%sPlease move or remove them before you %s."
+msgstr ""
+"Os seguintes ficheiros por seguir da worktree seriam sobrescritos por %s:\n"
+"%%sPor favor, move ou remove-os antes de fazer %s."
+
+#: unpack-trees.c:166
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by %s:\n"
 "%%s"
 msgstr ""
-"Os seguintes ficheiros não controlados da árvore de trabalho seriam "
-"substituídos por %s:\n"
+"Os seguintes ficheiros por seguir da worktree seriam sobrescritos por %s:\n"
 "%%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:174
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Entrada '%s' sobrepõe-se a '%s'. Impossível vincular."
 
-#: unpack-trees.c:175
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -9077,7 +9536,7 @@
 "Impossível atualizar submódulo:\n"
 "%s"
 
-#: unpack-trees.c:178
+#: unpack-trees.c:180
 #, c-format
 msgid ""
 "The following paths are not up to date and were left despite sparse "
@@ -9085,7 +9544,7 @@
 "%s"
 msgstr ""
 
-#: unpack-trees.c:180
+#: unpack-trees.c:182
 #, fuzzy, c-format
 msgid ""
 "The following paths are unmerged and were left despite sparse patterns:\n"
@@ -9095,7 +9554,7 @@
 "patterns:\n"
 "%s"
 
-#: unpack-trees.c:182
+#: unpack-trees.c:184
 #, c-format
 msgid ""
 "The following paths were already present and thus not updated despite sparse "
@@ -9103,36 +9562,41 @@
 "%s"
 msgstr ""
 
-#: unpack-trees.c:262
+#: unpack-trees.c:264
 #, c-format
 msgid "Aborting\n"
 msgstr "A abortar\n"
 
-#: unpack-trees.c:289
+#: unpack-trees.c:291
 #, c-format
 msgid ""
 "After fixing the above paths, you may want to run `git sparse-checkout "
 "reapply`.\n"
 msgstr ""
 
-#: unpack-trees.c:350
+#: unpack-trees.c:352
 #, fuzzy
 msgid "Updating files"
-msgstr "A atualizar %s"
+msgstr "Atualizando ficheiros"
 
-#: unpack-trees.c:382
+#: unpack-trees.c:384
 msgid ""
 "the following paths have collided (e.g. case-sensitive paths\n"
 "on a case-insensitive filesystem) and only one from the same\n"
 "colliding group is in the working tree:\n"
 msgstr ""
 
-#: unpack-trees.c:1498
+#: unpack-trees.c:1618
 #, fuzzy
 msgid "Updating index flags"
-msgstr "A atualizar %s"
+msgstr "Atualizando flags de cenário"
 
-#: upload-pack.c:1550
+#: unpack-trees.c:2718
+#, c-format
+msgid "worktree and untracked commit have duplicate entries: %s"
+msgstr ""
+
+#: upload-pack.c:1548
 msgid "expected flush after fetch arguments"
 msgstr ""
 
@@ -9147,11 +9611,11 @@
 
 #: urlmatch.c:215
 msgid "missing host and scheme is not 'file:'"
-msgstr "sistema anfitrião não indicado e o esquema não é do tipo 'file:'"
+msgstr "faltando host e o esquema é diferente de 'file:'"
 
 #: urlmatch.c:232
 msgid "a 'file:' URL may not have a port number"
-msgstr "um URL do tipo 'file:' não pode ter um número de porta"
+msgstr "um URL 'file:' tem de estar sem número de porta"
 
 #: urlmatch.c:247
 msgid "invalid characters in host name"
@@ -9168,97 +9632,131 @@
 #: walker.c:170
 #, fuzzy
 msgid "Fetching objects"
-msgstr "A verificar objetos"
+msgstr "Buscando objetos"
 
-#: worktree.c:236 builtin/am.c:2103
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "falha ao ler '%s'"
 
-#: worktree.c:283
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 
-#: worktree.c:294
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 
-#: worktree.c:306
+#: worktree.c:326
 #, fuzzy, c-format
 msgid "'%s' does not exist"
-msgstr "o caminho '%s' não existe"
+msgstr "'%s' é inexistente"
 
-#: worktree.c:312
+#: worktree.c:332
 #, fuzzy, c-format
 msgid "'%s' is not a .git file, error code %d"
-msgstr "'%s' não está trancada"
+msgstr "'%s' é ficheiro .git nenhum, código de erro %d"
 
-#: worktree.c:321
+#: worktree.c:341
 #, fuzzy, c-format
 msgid "'%s' does not point back to '%s'"
-msgstr "'%s' não aponta para um commit"
+msgstr "'%s' aponta para algo diferente de '%s'"
 
-#: worktree.c:587
+#: worktree.c:603
 #, fuzzy
 msgid "not a directory"
 msgstr "é pasta nenhuma"
 
-#: worktree.c:596
+#: worktree.c:612
 #, fuzzy
 msgid ".git is not a file"
 msgstr "git show %s: ficheiro incorreto"
 
-#: worktree.c:598
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ""
 
-#: worktree.c:600
-#, fuzzy
+#: worktree.c:616
 msgid ".git file incorrect"
-msgstr "ficheiro de índice corrompido"
+msgstr ""
 
-#: worktree.c:670
-#, fuzzy
+#: worktree.c:722
 msgid "not a valid path"
-msgstr "nome de objeto inválido: %s"
+msgstr ""
 
-#: worktree.c:676
+#: worktree.c:728
 #, fuzzy
 msgid "unable to locate repository; .git is not a file"
-msgstr "não é possível escrever ficheiro de índice temporário"
+msgstr "incapaz localizar repositório; .git é diferente de ficheiro"
 
-#: worktree.c:679
+#: worktree.c:732
+#, fuzzy
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "incapaz localizar repositório; .git é diferente de ficheiro"
+
+#: worktree.c:736
 #, fuzzy
 msgid "unable to locate repository; .git file broken"
-msgstr "não é possível escrever ficheiro de índice temporário"
+msgstr "incapaz localizar repositório; .git está quebrado"
 
-#: worktree.c:685
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr ""
 
-#: worktree.c:689
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr ""
 
+#: worktree.c:771
+msgid "not a valid directory"
+msgstr ""
+
+#: worktree.c:777
+#, fuzzy
+msgid "gitdir file does not exist"
+msgstr "ficheiro gitdir é inexistente"
+
+#: worktree.c:782 worktree.c:791
+#, fuzzy, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "incapaz ler ficheiro gitdir (%s)"
+
+#: worktree.c:801
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr ""
+
+#: worktree.c:809
+#, fuzzy
+msgid "invalid gitdir file"
+msgstr "linha de Data inválida"
+
+#: worktree.c:817
+#, fuzzy
+msgid "gitdir file points to non-existent location"
+msgstr ""
+"A remover worktrees/%s: o ficheiro gitdir aponta para uma localização "
+"inexistente"
+
 #: wrapper.c:197 wrapper.c:367
 #, c-format
 msgid "could not open '%s' for reading and writing"
-msgstr "não foi possível abrir '%s' para leitura e escrita"
+msgstr "incapaz abrir '%s' para leitura e escrita"
 
 #: wrapper.c:398 wrapper.c:599
 #, c-format
 msgid "unable to access '%s'"
-msgstr "não é possível aceder a '%s'"
+msgstr "incapaz aceder '%s'"
 
 #: wrapper.c:607
 msgid "unable to get current working directory"
-msgstr "não é possível de obter o diretório de trabalho atual"
+msgstr "incapaz obter pasta atual de trabalho"
 
 #: wt-status.c:158
 msgid "Unmerged paths:"
-msgstr "Caminhos não integrados:"
+msgstr "Paths por juntar:"
 
 #: wt-status.c:187 wt-status.c:219
 #, fuzzy
@@ -9288,13 +9786,13 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (use \"git rm <ficheiro>...\" para marcar como resolvido)"
 
-#: wt-status.c:211 wt-status.c:1070
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Alterações para serem submetidas:"
 
-#: wt-status.c:234 wt-status.c:1079
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
-msgstr "Alterações não preparadas para submeter:"
+msgstr "Alterações por preparar para commit:"
 
 #: wt-status.c:238
 msgid "  (use \"git add <file>...\" to update what will be committed)"
@@ -9316,8 +9814,7 @@
 #: wt-status.c:243
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
-"  (submeta ou descarte o conteúdo modificado ou não controlado nos "
-"submódulos)"
+"  (faz commit ou descarta o conteúdo por seguir ou modificado nos submódulos)"
 
 #: wt-status.c:254
 #, c-format
@@ -9382,7 +9879,7 @@
 
 #: wt-status.c:302
 msgid "unmerged:"
-msgstr "não integrado:"
+msgstr "por juntar:"
 
 #: wt-status.c:382
 msgid "new commits, "
@@ -9394,24 +9891,24 @@
 
 #: wt-status.c:386
 msgid "untracked content, "
-msgstr "conteúdo não controlado, "
+msgstr "conteúdo por seguir, "
 
-#: wt-status.c:903
+#: wt-status.c:958
 #, fuzzy, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Está a rebasear neste momento."
 msgstr[1] "Está a rebasear neste momento."
 
-#: wt-status.c:934
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
-msgstr "Submódulos alterados mas não atualizados:"
+msgstr "Submódulos alterados mas desatualizados:"
 
-#: wt-status.c:936
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Alterações em submódulos para serem submetidas:"
 
-#: wt-status.c:1018
+#: wt-status.c:1073
 #, fuzzy
 msgid ""
 "Do not modify or remove the line above.\n"
@@ -9420,7 +9917,7 @@
 "Deixe estar a linha acima.\n"
 "Tudo abaixo será ignorado."
 
-#: wt-status.c:1110
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9428,108 +9925,108 @@
 "You can use '--no-ahead-behind' to avoid this.\n"
 msgstr ""
 
-#: wt-status.c:1140
+#: wt-status.c:1195
 msgid "You have unmerged paths."
-msgstr "Há caminhos não integrados."
+msgstr "Tens paths por juntar."
 
-#: wt-status.c:1143
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (corrija os conflitos e execute \"git commit\")"
 
-#: wt-status.c:1145
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (use \"git am --abort\" para abortar a integração)"
 
-#: wt-status.c:1149
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Todos os conflitos foram corrigidos mas ainda está a integrar."
 
-#: wt-status.c:1152
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (use \"git commit\" para concluir a integração)"
 
-#: wt-status.c:1161
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Sessão am em curso."
 
-#: wt-status.c:1164
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "O patch atual está vazio."
 
-#: wt-status.c:1168
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (corrija os conflitos e execute \"git am --continue\")"
 
-#: wt-status.c:1170
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (use \"git am --skip\" para ignorar este patch)"
 
-#: wt-status.c:1172
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (use \"git am --abort\" para restaurar o ramo original)"
 
-#: wt-status.c:1305
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
-msgstr "git-rebase-todo não existe."
+msgstr "git-rebase-todo está faltando."
 
-#: wt-status.c:1307
+#: wt-status.c:1362
 msgid "No commands done."
-msgstr "Nenhum comando concluído."
+msgstr "Comando nenhum concluído."
 
-#: wt-status.c:1310
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Último comando concluído (%d comando concluído):"
 msgstr[1] "Últimos comandos concluídos (%d comandos concluídos):"
 
-#: wt-status.c:1321
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (veja mais no ficheiro %s)"
 
-#: wt-status.c:1326
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Nenhum comando por concluir."
 
-#: wt-status.c:1329
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Próximo comando a executar (%d comando restante):"
 msgstr[1] "Próximos comandos a executar (%d comandos restantes):"
 
-#: wt-status.c:1337
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (use \"git rebase --edit-todo\" para visualizar e editar)"
 
-#: wt-status.c:1349
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Está a realizar rebase do ramo '%s' sobre '%s'."
 
-#: wt-status.c:1354
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Está a rebasear neste momento."
 
-#: wt-status.c:1367
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (corrija os conflitos e execute \"git rebase --continue\")"
 
-#: wt-status.c:1369
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (use \"git rebase --skip\" para ignorar este patch)"
 
-#: wt-status.c:1371
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (use \"git rebase --abort\" para restaurar o ramo original)"
 
-#: wt-status.c:1378
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 "  (todos os conflitos foram corrigidos: execute \"git rebase --continue\")"
 
-#: wt-status.c:1382
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9537,395 +10034,432 @@
 "Está a dividir um commit ao mesmo tempo que se efetua rebase do ramo '%s' "
 "sobre '%s'."
 
-#: wt-status.c:1387
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Está a dividir um commit durante um rebase."
 
-#: wt-status.c:1390
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Assim que o diretório de trabalho estiver limpo, execute \"git rebase --"
 "continue\")"
 
-#: wt-status.c:1394
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Está a editar um commit ao mesmo tempo que efetua rebase do ramo '%s' sobre "
 "'%s'."
 
-#: wt-status.c:1399
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Está a editar um commit durante um rebase."
 
-#: wt-status.c:1402
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (use \"git commit --amend\" para emendar o commit atual)"
 
-#: wt-status.c:1404
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (use \"git rebase --continue\" assim que estiver satisfeito com as "
 "alterações)"
 
-#: wt-status.c:1415
+#: wt-status.c:1470
 #, fuzzy
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick atualmente em curso"
 
-#: wt-status.c:1418
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Está a realizar cherry-pick do commit %s."
 
-#: wt-status.c:1425
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (corrija os conflitos e execute \"git cherry-pick --continue\")"
 
-#: wt-status.c:1428
+#: wt-status.c:1483
 #, fuzzy
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (corrija os conflitos e execute \"git cherry-pick --continue\")"
 
-#: wt-status.c:1431
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (todos os conflitos foram corrigidos: execute \"git cherry-pick --continue"
 "\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1488
 #, fuzzy
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (use \"git am --skip\" para ignorar este patch)"
 
-#: wt-status.c:1435
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (use \"git cherry-pick --abort\" para cancelar a operação de cherry-pick)"
 
-#: wt-status.c:1445
+#: wt-status.c:1500
 #, fuzzy
 msgid "Revert currently in progress."
 msgstr "abortar integração em curso"
 
-#: wt-status.c:1448
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Está a reverter o commit %s neste comento."
 
-#: wt-status.c:1454
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (corrija dos conflitos e execute \"git revert --continue\")"
 
-#: wt-status.c:1457
+#: wt-status.c:1512
 #, fuzzy
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (corrija dos conflitos e execute \"git revert --continue\")"
 
-#: wt-status.c:1460
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 "  (todos os conflitos foram corrigidos: execute \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1517
 #, fuzzy
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (use \"git rebase --skip\" para ignorar este patch)"
 
-#: wt-status.c:1464
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (use \"git rever --abort\" para cancelar a operação de reversão)"
 
-#: wt-status.c:1474
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Está a bissetar, iniciado a partir do ramo '%s'."
 
-#: wt-status.c:1478
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Está a bissetar neste momento."
 
-#: wt-status.c:1481
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (use \"git bisect reset\" para voltar ao ramo original)"
 
-#: wt-status.c:1492
+#: wt-status.c:1547
+#, fuzzy
+msgid "You are in a sparse checkout."
+msgstr "Estás num checkout disperso."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 
-#: wt-status.c:1731
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "No ramo "
 
-#: wt-status.c:1738
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "rebase interativo em curso; sobre "
 
-#: wt-status.c:1740
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "rebase em curso; sobre "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
+msgid "HEAD detached at "
+msgstr "HEAD destacada em "
+
+#: wt-status.c:1810
+msgid "HEAD detached from "
+msgstr "HEAD destacada de "
+
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Atualmente em ramo nenhum."
 
-#: wt-status.c:1767
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Memória inicial"
 
-#: wt-status.c:1768
+#: wt-status.c:1831
 #, fuzzy
 msgid "No commits yet"
 msgstr "Ainda commits nenhuns"
 
-#: wt-status.c:1782
+#: wt-status.c:1845
 msgid "Untracked files"
-msgstr "Ficheiros não controlados"
+msgstr "Ficheiros por seguir"
 
-#: wt-status.c:1784
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Ficheiros ignorados"
 
-#: wt-status.c:1788
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
 "may speed it up, but you have to be careful not to forget to add\n"
 "new files yourself (see 'git help status')."
 msgstr ""
-"A enumeração dos ficheiros não controlados demorou %.2f segundos\n"
-"a concluir. 'status -uno' pode acelerar o processo, mas deve ter\n"
-"cuidado de não se esquecer de adicionar novos ficheiros\n"
-"(consulte 'git help status')."
+"A enumeração dos ficheiros por controlar  demorou %.2f segundos.\n"
+"'status -uno' pode-o acelerar, mas tens de te lembrar de adicionares\n"
+"os novos ficheiros (vê 'git help status')."
 
-#: wt-status.c:1794
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
-msgstr "Ficheiros não controlados não listados%s"
+msgstr "Ficheiros por seguir fora da listagem%s"
 
-#: wt-status.c:1796
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
-msgstr " (use a opção -u para mostrar os ficheiros não controlados)"
+msgstr " (usa opção -u para mostrar ficheiros por seguir)"
 
-#: wt-status.c:1802
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Sem alterações"
 
-#: wt-status.c:1807
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
-msgstr "foi adicionado a commit alteração nenhuma (usa \"git add\" e/ou \"git "
-"commit -a\")\n"
+msgstr ""
+"foi adicionado a commit alteração nenhuma (usa \"git add\" e/ou \"git commit "
+"-a\")\n"
 
-#: wt-status.c:1811
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "foi adicionado a commit alteração nenhuma\n"
 
-#: wt-status.c:1815
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
-"nada adicionado para commit mas há ficheiros por seguir presentes (usa"
-"(\"git add\" para seguir)\n"
+"nada adicionado para commit mas há ficheiros por seguir presentes (usa(\"git "
+"add\" para seguir)\n"
 
-#: wt-status.c:1819
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "nada adicionado para commit mas ficheiros por seguir presentes\n"
 
-#: wt-status.c:1823
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "nada a commit (cria/copia ficheiros e usa \"git add\" para seguir)\n"
 
-#: wt-status.c:1827 wt-status.c:1833
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nada a commit\n"
 
-#: wt-status.c:1830
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "nada a commit (use -u para mostrar ficheiros por seguir)\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nada a commitar, worktree limpa\n"
 
-#: wt-status.c:1940
+#: wt-status.c:2003
 #, fuzzy
 msgid "No commits yet on "
-msgstr "Nenhum comando concluído."
+msgstr "Memórias nenhumas em "
 
-#: wt-status.c:1944
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (ramo nenhum)"
 
-#: wt-status.c:1975
+#: wt-status.c:2038
 msgid "different"
 msgstr "diferente"
 
-#: wt-status.c:1977 wt-status.c:1985
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "atrás "
 
-#: wt-status.c:1980 wt-status.c:1983
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "à frente "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2505
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
-msgstr "não é possível efetuar %s: tem alterações não preparadas."
+msgstr "incapaz efetuar %s: Tens alterações despreparadas."
 
-#: wt-status.c:2511
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
-msgstr "além disso, o índice contém alterações não submetidas."
+msgstr "além disso, teu index contém alterações por memorizar."
 
-#: wt-status.c:2513
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
-msgstr "não é possível efetuar %s: o índice contém alterações não submetidas."
+msgstr "incapaz efetuar %s: teu index contém alterações por memorizar."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:457
+#: compat/simple-ipc/ipc-unix-socket.c:182
+#, fuzzy
+msgid "could not send IPC command"
+msgstr "incapaz encontrar commit %s"
+
+#: compat/simple-ipc/ipc-unix-socket.c:189
+#, fuzzy
+msgid "could not read IPC response"
+msgstr "incapaz de ler ref %s"
+
+#: compat/simple-ipc/ipc-unix-socket.c:866
+#, c-format
+msgid "could not start accept_thread '%s'"
+msgstr ""
+
+#: compat/simple-ipc/ipc-unix-socket.c:878
+#, fuzzy, c-format
+msgid "could not start worker[0] for '%s'"
+msgstr "incapaz analisar log para '%s'"
+
+#: compat/precompose_utf8.c:58 builtin/clone.c:461
 #, c-format
 msgid "failed to unlink '%s'"
-msgstr "falha ao invocar unlink de '%s'"
+msgstr "falha ao unlink '%s'"
 
 #: builtin/add.c:26
 msgid "git add [<options>] [--] <pathspec>..."
 msgstr "git add [<opções>] [--] <caminho>..."
 
-#: builtin/add.c:88
+#: builtin/add.c:61
+#, fuzzy, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "incapaz chdir para '%s'"
+
+#: builtin/add.c:99
 #, c-format
 msgid "unexpected diff status %c"
 msgstr "diff status inesperado %c"
 
-#: builtin/add.c:93 builtin/commit.c:285
+#: builtin/add.c:104 builtin/commit.c:297
 msgid "updating files failed"
 msgstr "falha ao atualizar os ficheiros"
 
-#: builtin/add.c:103
+#: builtin/add.c:114
 #, c-format
 msgid "remove '%s'\n"
 msgstr "remove '%s'\n"
 
-#: builtin/add.c:178
+#: builtin/add.c:198
 msgid "Unstaged changes after refreshing the index:"
-msgstr "Alterações não preparadas depois de atualizar o índice:"
+msgstr "Alterações despreparadas após refrescar index:"
 
-#: builtin/add.c:272 builtin/rev-parse.c:908
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Incapaz ler o index"
 
-#: builtin/add.c:283
+#: builtin/add.c:318
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Incapaz de abrir '%s' para escrita."
 
-#: builtin/add.c:287
+#: builtin/add.c:322
 msgid "Could not write patch"
 msgstr "Incapaz de escrever patch"
 
-#: builtin/add.c:290
+#: builtin/add.c:325
 msgid "editing patch failed"
 msgstr "edição de patch falhou"
 
-#: builtin/add.c:293
+#: builtin/add.c:328
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Impossível fazer stat de '%s'"
 
-#: builtin/add.c:295
+#: builtin/add.c:330
 msgid "Empty patch. Aborted."
 msgstr "Patch vazio. Abortado."
 
-#: builtin/add.c:300
+#: builtin/add.c:335
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Impossível submeter '%s'"
 
-#: builtin/add.c:308
+#: builtin/add.c:343
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Os seguintes caminhos estão ignorados por algum ficheiro .gitignore:\n"
 
-#: builtin/add.c:328 builtin/clean.c:904 builtin/fetch.c:166 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
-#: builtin/remote.c:1427 builtin/rm.c:242 builtin/send-pack.c:190
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
+#: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "simular ação"
 
-#: builtin/add.c:331
+#: builtin/add.c:366
 msgid "interactive picking"
 msgstr "seleção interativa"
 
-#: builtin/add.c:332 builtin/checkout.c:1547 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "selecionar blocos interativamente"
 
-#: builtin/add.c:333
+#: builtin/add.c:368
 msgid "edit current diff and apply"
 msgstr "editar o diff atual e aplicá-lo"
 
-#: builtin/add.c:334
+#: builtin/add.c:369
 msgid "allow adding otherwise ignored files"
 msgstr "permitir adicionar ficheiros ignorados"
 
-#: builtin/add.c:335
+#: builtin/add.c:370
 msgid "update tracked files"
 msgstr "atualizar ficheiros controlados"
 
-#: builtin/add.c:336
+#: builtin/add.c:371
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 
-#: builtin/add.c:337
+#: builtin/add.c:372
 msgid "record only the fact that the path will be added later"
 msgstr "registar apenas o facto de que o caminho será adicionado mais tarde"
 
-#: builtin/add.c:338
+#: builtin/add.c:373
 msgid "add changes from all tracked and untracked files"
 msgstr ""
-"adicionar alterações de todos os ficheiros controlados ou não controlados"
+"adicionar alterações de todos ficheiros seguidos e ficheiros por seguir"
 
-#: builtin/add.c:341
+#: builtin/add.c:376
 msgid "ignore paths removed in the working tree (same as --no-all)"
-msgstr ""
-"ignorar caminhos removidos na árvore de trabalho (o mesmo que --no-all)"
+msgstr "ignorar paths removidos na worktree (o mesmo que --no-all)"
 
-#: builtin/add.c:343
+#: builtin/add.c:378
 msgid "don't add, only refresh the index"
-msgstr "não adicionar, apenas atualizar o índice"
+msgstr "deixa de adicionar, apenas atualiza o index"
 
-#: builtin/add.c:344
+#: builtin/add.c:379
 msgid "just skip files which cannot be added because of errors"
-msgstr "ignorar ficheiros que não podem ser adicionados por causa de erros"
+msgstr "apenas ignora ficheiros que, por causa de erros, ficam por adicionar"
 
-#: builtin/add.c:345
+#: builtin/add.c:380
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "verificar quais os ficheiros ignorados na simulação"
 
-#: builtin/add.c:347 builtin/update-index.c:1004
+#: builtin/add.c:382 builtin/update-index.c:1006
 msgid "override the executable bit of the listed files"
 msgstr "substituir o bit executável dos ficheiros listados"
 
-#: builtin/add.c:349
+#: builtin/add.c:384
 #, fuzzy
 msgid "warn when adding an embedded repository"
 msgstr "criar um repositório nu"
 
-#: builtin/add.c:351
+#: builtin/add.c:386
 msgid "backend for `git stash -p`"
 msgstr ""
 
-#: builtin/add.c:369
+#: builtin/add.c:404
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -9943,172 +10477,172 @@
 "See \"git help submodule\" for more information."
 msgstr ""
 
-#: builtin/add.c:397
+#: builtin/add.c:432
 #, fuzzy, c-format
 msgid "adding embedded git repository: %s"
 msgstr "--stdin requer um repositório git"
 
-#: builtin/add.c:416
+#: builtin/add.c:451
 msgid ""
 "Use -f if you really want to add them.\n"
 "Turn this message off by running\n"
 "\"git config advice.addIgnoredFile false\""
 msgstr ""
 
-#: builtin/add.c:425
+#: builtin/add.c:460
 msgid "adding files failed"
 msgstr "falha ao adicionar ficheiros"
 
-#: builtin/add.c:453 builtin/commit.c:345
-#, fuzzy
+#: builtin/add.c:488
+msgid "--dry-run is incompatible with --interactive/--patch"
+msgstr ""
+
+#: builtin/add.c:490 builtin/commit.c:357
 msgid "--pathspec-from-file is incompatible with --interactive/--patch"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
-#: builtin/add.c:470
-#, fuzzy
+#: builtin/add.c:507
 msgid "--pathspec-from-file is incompatible with --edit"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
-#: builtin/add.c:482
+#: builtin/add.c:519
 msgid "-A and -u are mutually incompatible"
 msgstr "-A e -u são mutuamente incompatíveis"
 
-#: builtin/add.c:485
+#: builtin/add.c:522
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "A opção --ignore-missing só pode ser usada em conjunto com --dry-run"
 
-#: builtin/add.c:489
+#: builtin/add.c:526
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "o parâmetro '%s' de --chmod tem de ser -x ou +x"
 
-#: builtin/add.c:507 builtin/checkout.c:1715 builtin/commit.c:351
-#: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1502
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 #, fuzzy
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--patch é incompatível com --{hard,mixed,soft}"
 
-#: builtin/add.c:514 builtin/checkout.c:1727 builtin/commit.c:357
-#: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1508
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr ""
 
-#: builtin/add.c:518
+#: builtin/add.c:555
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr ".\n"
 
-#: builtin/add.c:520
+#: builtin/add.c:557
 msgid ""
 "Maybe you wanted to say 'git add .'?\n"
 "Turn this message off by running\n"
 "\"git config advice.addEmptyPathspec false\""
 msgstr ""
 
-#: builtin/am.c:352
+#: builtin/am.c:365
 msgid "could not parse author script"
-msgstr "não foi possível analisar o autor do script"
+msgstr "incapaz processar script de autor"
 
-#: builtin/am.c:436
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' foi eliminado pelo hook applypatch-msg"
 
-#: builtin/am.c:478
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Linha de entrada malformada: '%s'."
 
-#: builtin/am.c:516
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Falha ao copiar notas de '%s' para '%s'"
 
-#: builtin/am.c:542
+#: builtin/am.c:561
 msgid "fseek failed"
-msgstr "falha ao invocar fseek"
+msgstr "falha de fseek"
 
-#: builtin/am.c:730
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
-msgstr "não foi possível analisar o patch '%s'"
+msgstr "incapaz processar patch '%s'"
 
-#: builtin/am.c:795
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Só pode ser aplicada uma série de patches StGIT duma só vez"
 
-#: builtin/am.c:843
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "carimbo de data/hora inválido"
 
-#: builtin/am.c:848 builtin/am.c:860
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "linha de Data inválida"
 
-#: builtin/am.c:855
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "mudança de fuso horário inválida"
 
-#: builtin/am.c:948
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Falha ao detetar o formato do patch."
 
-#: builtin/am.c:953 builtin/clone.c:410
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "falha ao criar o diretório '%s'"
 
-#: builtin/am.c:958
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Falha ao dividir patches."
 
-#: builtin/am.c:1089
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Após resolver este problema, execute \"%s --continue\"."
 
-#: builtin/am.c:1090
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Se preferir ignorar este patch, execute \"%s --skip\"."
 
-#: builtin/am.c:1091
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 "Para restaurar o ramo original e interromper a aplicação dos patches, "
 "execute \"%s --abort\"."
 
-#: builtin/am.c:1174
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 
-#: builtin/am.c:1202
+#: builtin/am.c:1251
 #, fuzzy
 msgid "Patch is empty."
 msgstr "O patch atual está vazio."
 
-#: builtin/am.c:1267
+#: builtin/am.c:1316
 #, fuzzy, c-format
 msgid "missing author line in commit %s"
 msgstr "Autor em falta: %s"
 
-#: builtin/am.c:1270
+#: builtin/am.c:1319
 #, fuzzy, c-format
 msgid "invalid ident line: %.*s"
-msgstr "linha de identidade inválida: %s"
+msgstr "linha de indentação inválida: %.*s"
 
-#: builtin/am.c:1489
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
-msgstr ""
-"O repositório não tem os blobs necessários para recorrer a integração com 3 "
-"pontos."
+msgstr "Repositório falta blobs necessários para recorrer à tri-junção."
 
-#: builtin/am.c:1491
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "A usar informação do índice para reconstruir uma árvore de base..."
 
-#: builtin/am.c:1510
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10116,26 +10650,26 @@
 "Editaste o patch manualmente?\n"
 "No registo de index, aplica-se a blobs nenhuns."
 
-#: builtin/am.c:1516
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr ""
 "A recorrer a uma de base para aplicação de patches e integração com 3 "
 "pontos..."
 
-#: builtin/am.c:1542
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Falha ao integrar as alterações."
 
-#: builtin/am.c:1574
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "a aplicar a um histórico vazio"
 
-#: builtin/am.c:1626 builtin/am.c:1630
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
-msgstr "não é possível continuar: %s não existe."
+msgstr "incapaz continuar: %s é inexistente."
 
-#: builtin/am.c:1648
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Corpo do commit:"
 
@@ -10143,39 +10677,39 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1658
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Aplicar? [y]sim/[n]ão/[e]ditar/[v]er patch/[a]ceitar todos: "
 
-#: builtin/am.c:1704 builtin/commit.c:395
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
-msgstr "não é possível escrever o ficheiro de índice"
+msgstr "incapaz escrever ficheiro de index"
 
-#: builtin/am.c:1708
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
-msgstr "Índice modificado: não é possível aplicar patches (modificado: %s)"
+msgstr "Index sujo: incapaz aplicar patches (sujo: %s)"
 
-#: builtin/am.c:1748 builtin/am.c:1816
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "A aplicar: %.*s"
 
-#: builtin/am.c:1765
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Nenhuma alteração -- Já foi aplicado o patch."
 
-#: builtin/am.c:1771
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Falha ao aplicar o patch em %s %.*s"
 
-#: builtin/am.c:1775
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 
-#: builtin/am.c:1819
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10185,7 +10719,7 @@
 "Se há mais nada por preparar, provavelmente essas mesmas alterações\n"
 "já foram introduzidas; poderás querer saltar este patch."
 
-#: builtin/am.c:1826
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10193,17 +10727,17 @@
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 
-#: builtin/am.c:1933 builtin/am.c:1937 builtin/am.c:1949 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Incapaz analisar objeto '%s'."
 
-#: builtin/am.c:1985
+#: builtin/am.c:2034
 msgid "failed to clean index"
-msgstr "falha ao limpar o índice"
+msgstr ""
 
-#: builtin/am.c:2029
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10211,176 +10745,183 @@
 "Parece que moveste HEAD desde a última falha de 'am'.\n"
 "Recusando rebobinar até ORIG_HEAD"
 
-#: builtin/am.c:2136
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Valor inválido de --patch-format: %s"
 
-#: builtin/am.c:2178
+#: builtin/am.c:2227
 #, fuzzy, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Valor inválido de --patch-format: %s"
 
-#: builtin/am.c:2182
-#, fuzzy, c-format
+#: builtin/am.c:2231
+#, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
-#: builtin/am.c:2213
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<opções>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2214
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<opções>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2220
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "executar interativamente"
 
-#: builtin/am.c:2222
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "opção histórica -- sem-ação"
 
-#: builtin/am.c:2224
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "permitir recorrer a integração com 3 pontos se necessário"
 
-#: builtin/am.c:2225 builtin/init-db.c:558 builtin/prune-packed.c:16
-#: builtin/repack.c:335 builtin/stash.c:815
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "silencioso"
 
-#: builtin/am.c:2227
+#: builtin/am.c:2276
 #, fuzzy
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "adicionar uma linha com Signed-of-by no fim da mensagem de commit"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "recodificar em utf8 (predefinição)"
 
-#: builtin/am.c:2232
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "passar a opção -k ao git-mailinfo"
 
-#: builtin/am.c:2234
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "passar a opção -b ao git-mailinfo"
 
-#: builtin/am.c:2236
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "passar a opção -m ao git-mailinfo"
 
-#: builtin/am.c:2238
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
-msgstr "passar a opção --keep-cr ao gitmailsplit para formato de mbox"
+msgstr "passar flag --keep-cr para  git-mailsplit para formato mbox"
 
-#: builtin/am.c:2241
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
-"não passar a opção --keep-cr ao git-mailsplit independentemente de am.keepcr"
+"proibido passares --keep-cr para  git-mailsplit independentemente de am."
+"keepcr"
 
-#: builtin/am.c:2244
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "retirar todo o conteúdo antes da linha de tesoura"
 
-#: builtin/am.c:2246 builtin/am.c:2249 builtin/am.c:2252 builtin/am.c:2255
-#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267
-#: builtin/am.c:2273
-msgid "pass it through git-apply"
+#: builtin/am.c:2295
+#, fuzzy
+msgid "pass it through git-mailinfo"
 msgstr "transmitir ao git-apply"
 
-#: builtin/am.c:2263 builtin/commit.c:1395 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:903 builtin/merge.c:260
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
+msgid "pass it through git-apply"
+msgstr "passa-o pelo git-apply"
+
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
-#: builtin/rebase.c:1341 builtin/repack.c:346 builtin/repack.c:350
-#: builtin/repack.c:352 builtin/show-branch.c:650 builtin/show-ref.c:172
-#: builtin/tag.c:404 parse-options.h:154 parse-options.h:175
-#: parse-options.h:316
+#: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
+#: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
+#: builtin/tag.c:447 parse-options.h:155 parse-options.h:176
+#: parse-options.h:317
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2269 builtin/branch.c:659 builtin/bugreport.c:136
-#: builtin/for-each-ref.c:38 builtin/replace.c:556 builtin/tag.c:438
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "formato"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "formato de apresentação de patches"
 
-#: builtin/am.c:2276
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "substituir a mensagem de erro quando a aplicação do patch falha"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "continuar a aplicar os patches depois de resolver os conflitos"
 
-#: builtin/am.c:2281
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "sinónimo de --continue"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2336
 msgid "skip the current patch"
-msgstr "ignorar o patch atual"
+msgstr "ignorar remendo atual"
 
-#: builtin/am.c:2287
-msgid "restore the original branch and abort the patching operation."
+#: builtin/am.c:2339
+#, fuzzy
+msgid "restore the original branch and abort the patching operation"
 msgstr "restaurar o ramo original e abortar a operação de patch."
 
-#: builtin/am.c:2290
-msgid "abort the patching operation but keep HEAD where it is."
+#: builtin/am.c:2342
+msgid "abort the patching operation but keep HEAD where it is"
 msgstr ""
 
-#: builtin/am.c:2294
+#: builtin/am.c:2346
 #, fuzzy
 msgid "show the patch being applied"
-msgstr "mostrar linhas não correspondidas"
+msgstr "mostrar linhas sendo submetidas"
 
-#: builtin/am.c:2299
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "mentir sobre a data de commit"
 
-#: builtin/am.c:2301
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "usar a data e hora atual como data de autor"
 
-#: builtin/am.c:2303 builtin/commit-tree.c:120 builtin/commit.c:1515
-#: builtin/merge.c:297 builtin/pull.c:175 builtin/rebase.c:536
-#: builtin/rebase.c:1394 builtin/revert.c:117 builtin/tag.c:419
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
+#: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
+#: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "id-chave"
 
-#: builtin/am.c:2304 builtin/rebase.c:537 builtin/rebase.c:1395
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "assinar os commits com GPG"
 
-#: builtin/am.c:2307
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(uso interno de git-rebase)"
 
-#: builtin/am.c:2325
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
 msgstr ""
-"A opção -b/--binary há muito que é ignorada e será\n"
-"futuramente removida. Por favor não a use."
+"A opção -b/--binary há muito que é ignorada e será removida.\n"
+"Por favor deixa de usá-la."
 
-#: builtin/am.c:2332
+#: builtin/am.c:2384
 msgid "failed to read the index"
-msgstr "falha ao ler o índice"
+msgstr "falhou ler cenário"
 
-#: builtin/am.c:2347
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 "o diretório de rebesa anterior %s ainda existe, mas foi fornecida uma mbox."
 
-#: builtin/am.c:2371
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10389,11 +10930,11 @@
 "Diretório abandonado %s encontrado.\n"
 "Use \"git am --abort\" para o remover."
 
-#: builtin/am.c:2377
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
-msgstr "A operação de resolução não está em curso, não retomando."
+msgstr "A operação de resolução está parada, continuará parada."
 
-#: builtin/am.c:2387
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr ""
 
@@ -10404,11 +10945,11 @@
 #: builtin/archive.c:17
 #, c-format
 msgid "could not create archive file '%s'"
-msgstr "não foi possível criar o ficheiro de arquivo '%s'"
+msgstr "incapaz criar ficheiro de arquivo '%s'"
 
 #: builtin/archive.c:20
 msgid "could not redirect output"
-msgstr "não foi possível redirecionar a saída"
+msgstr "incapaz redirecionar a saída"
 
 #: builtin/archive.c:37
 msgid "git archive: Remote with no URL"
@@ -10433,27 +10974,14 @@
 msgstr "git archive: esvaziamento de cache (flush) esperado"
 
 #: builtin/bisect--helper.c:23
-#, fuzzy
 msgid "git bisect--helper --bisect-reset [<commit>]"
-msgstr "git bisect--helper --next-all [--no-checkout]"
+msgstr ""
 
 #: builtin/bisect--helper.c:24
-msgid ""
-"git bisect--helper --bisect-write [--no-log] <state> <revision> <good_term> "
-"<bad_term>"
-msgstr ""
-
-#: builtin/bisect--helper.c:25
-msgid ""
-"git bisect--helper --bisect-check-and-set-terms <command> <good_term> "
-"<bad_term>"
-msgstr ""
-
-#: builtin/bisect--helper.c:26
 msgid "git bisect--helper --bisect-next-check <good_term> <bad_term> [<term>]"
 msgstr ""
 
-#: builtin/bisect--helper.c:27
+#: builtin/bisect--helper.c:25
 #, fuzzy
 msgid ""
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
@@ -10462,101 +10990,101 @@
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
-#: builtin/bisect--helper.c:28
+#: builtin/bisect--helper.c:26
 msgid ""
 "git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}"
 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
 "[<paths>...]"
 msgstr ""
 
-#: builtin/bisect--helper.c:30
-#, fuzzy
+#: builtin/bisect--helper.c:28
 msgid "git bisect--helper --bisect-next"
-msgstr "git bisect--helper --next-all [--no-checkout]"
+msgstr ""
+
+#: builtin/bisect--helper.c:29
+msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
+msgstr ""
+
+#: builtin/bisect--helper.c:30
+msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
+msgstr ""
 
 #: builtin/bisect--helper.c:31
-#, fuzzy
-msgid "git bisect--helper --bisect-auto-next"
-msgstr "git bisect--helper --next-all [--no-checkout]"
+msgid "git bisect--helper --bisect-replay <filename>"
+msgstr ""
 
 #: builtin/bisect--helper.c:32
-#, fuzzy
-msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
-msgstr "git bisect--helper --next-all [--no-checkout]"
+msgid "git bisect--helper --bisect-skip [(<rev>|<range>)...]"
+msgstr ""
 
-#: builtin/bisect--helper.c:33
-#, fuzzy
-msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
-msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#: builtin/bisect--helper.c:108
+#: builtin/bisect--helper.c:107
 #, fuzzy, c-format
 msgid "cannot open file '%s' in mode '%s'"
-msgstr "não é possível abrir o ficheiro '%s'"
+msgstr "incapaz abrir ficheiro '%s' em modo '%s'"
 
-#: builtin/bisect--helper.c:115
+#: builtin/bisect--helper.c:114
 #, fuzzy, c-format
 msgid "could not write to file '%s'"
-msgstr "não foi possível escrever em '%s'"
+msgstr "incapaz escrever para ficheiro '%s'"
 
-#: builtin/bisect--helper.c:154
+#: builtin/bisect--helper.c:155
 #, fuzzy, c-format
 msgid "'%s' is not a valid term"
-msgstr "'%s' não é uma referência válida."
+msgstr "'%s' é um termo inválido."
 
-#: builtin/bisect--helper.c:158
+#: builtin/bisect--helper.c:159
 #, fuzzy, c-format
 msgid "can't use the builtin command '%s' as a term"
-msgstr "não é possível usar o comando '$term' como um termo"
+msgstr "incapaz usar comando embutido '%s' como um termo"
 
-#: builtin/bisect--helper.c:168
+#: builtin/bisect--helper.c:169
 #, fuzzy, c-format
 msgid "can't change the meaning of the term '%s'"
-msgstr "não é possível alterar o significado do termo '$term'"
+msgstr "incapaz alterar o significado do termo '%s'"
 
-#: builtin/bisect--helper.c:178
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "por favor, usa dois termos diferentes"
 
-#: builtin/bisect--helper.c:194
+#: builtin/bisect--helper.c:195
 #, fuzzy, c-format
 msgid "We are not bisecting.\n"
 msgstr "Estamos bissetando nada.\n"
 
-#: builtin/bisect--helper.c:202
+#: builtin/bisect--helper.c:203
 #, fuzzy, c-format
 msgid "'%s' is not a valid commit"
-msgstr "'%s' não é um commit"
+msgstr "'%s' é um commit inválido"
 
-#: builtin/bisect--helper.c:211
+#: builtin/bisect--helper.c:212
 #, fuzzy, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 "pude check out HEAD original '%s' nenhuma. Tenta 'git bisect reset <commit>'."
 
-#: builtin/bisect--helper.c:255
+#: builtin/bisect--helper.c:256
 #, fuzzy, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Argumento de bisect_write incorreto: $state"
 
-#: builtin/bisect--helper.c:260
+#: builtin/bisect--helper.c:261
 #, fuzzy, c-format
 msgid "couldn't get the oid of the rev '%s'"
-msgstr "não foi possível criar o diretório de árvore de trabalho '%s'"
+msgstr "incapaz obter oid da rev '%s'"
 
-#: builtin/bisect--helper.c:272
+#: builtin/bisect--helper.c:273
 #, fuzzy, c-format
 msgid "couldn't open the file '%s'"
 msgstr "incapaz abrir o ficheiro '%s'"
 
-#: builtin/bisect--helper.c:298
+#: builtin/bisect--helper.c:299
 #, fuzzy, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr ""
 "Comando inválido: está-se a bissetar usando os termos $TERM_BAD/$TERM_GOOD."
 
-#: builtin/bisect--helper.c:325
+#: builtin/bisect--helper.c:326
 #, fuzzy, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10565,7 +11093,7 @@
 "Deve indicar pelo menos uma revisão $bad_syn e uma revisão $good_syn.\n"
 "(Pode usar \"git bisect $bad_syn\" e \"git bisect $good_syn\" para esse fim.)"
 
-#: builtin/bisect--helper.c:329
+#: builtin/bisect--helper.c:330
 #, fuzzy, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10576,7 +11104,7 @@
 "Indique pelo menos uma revisão $good_syn e uma revisão $bad_syn.\n"
 "(Pode usar \"git bisect $bad_syn\" e \"git bisect $good_syn\" para esse fim.)"
 
-#: builtin/bisect--helper.c:349
+#: builtin/bisect--helper.c:350
 #, fuzzy, c-format
 msgid "bisecting only with a %s commit"
 msgstr "Aviso: a bissetar só com um commit $TERM_BAD."
@@ -10585,22 +11113,22 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:357
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Tem a certeza [Y/n]? "
 
-#: builtin/bisect--helper.c:418
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "termo nenhum definido"
 
-#: builtin/bisect--helper.c:421
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr ""
 
-#: builtin/bisect--helper.c:431
+#: builtin/bisect--helper.c:432
 #, fuzzy, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10609,57 +11137,57 @@
 "argumento inválido %s para 'git bisect terms'.\n"
 "Opções suportadas: --term-good|--term-old e --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:498
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 #, fuzzy
 msgid "revision walk setup failed\n"
 msgstr "falha ao configurar percurso de revisões\n"
 
-#: builtin/bisect--helper.c:520
+#: builtin/bisect--helper.c:521
 #, fuzzy, c-format
 msgid "could not open '%s' for appending"
-msgstr "não foi possível abrir '%s' para leitura"
+msgstr "incapaz abrir '%s' para acrescentar"
 
-#: builtin/bisect--helper.c:639 builtin/bisect--helper.c:652
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 #, fuzzy
 msgid "'' is not a valid term"
-msgstr "'$term' não é um termo válido"
+msgstr "'' é um termo inválido"
 
-#: builtin/bisect--helper.c:662
+#: builtin/bisect--helper.c:663
 #, fuzzy, c-format
 msgid "unrecognized option: '%s'"
-msgstr "posição não reconhecida:%s"
+msgstr "opção desconhecida: '%s'"
 
-#: builtin/bisect--helper.c:666
+#: builtin/bisect--helper.c:667
 #, fuzzy, c-format
 msgid "'%s' does not appear to be a valid revision"
-msgstr "'$arg' não parecer ser uma revisão válida"
+msgstr "'%s' parece ser uma revisão inválida"
 
-#: builtin/bisect--helper.c:697
+#: builtin/bisect--helper.c:698
 #, fuzzy
 msgid "bad HEAD - I need a HEAD"
 msgstr "HEAD incorreta - é necessário uma HEAD"
 
-#: builtin/bisect--helper.c:712
+#: builtin/bisect--helper.c:713
 #, fuzzy, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'."
 
-#: builtin/bisect--helper.c:733
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
-msgstr "não é possível bissetar numa árvore \"cg-seek'ed\""
+msgstr "incapaz bissetar numa árvore \"cg-seek'ada\""
 
-#: builtin/bisect--helper.c:736
+#: builtin/bisect--helper.c:737
 #, fuzzy
 msgid "bad HEAD - strange symbolic ref"
 msgstr "HEAD incorreta - referência simbólica desconhecida"
 
-#: builtin/bisect--helper.c:756
-#, fuzzy, c-format
+#: builtin/bisect--helper.c:757
+#, c-format
 msgid "invalid ref: '%s'"
-msgstr "ficheiro inválido: '%s'"
+msgstr ""
 
-#: builtin/bisect--helper.c:814
+#: builtin/bisect--helper.c:815
 #, fuzzy
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Deve começar por executar \"git bisect start\"\n"
@@ -10668,99 +11196,114 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:825
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Quer que o Git o faça por si [Y/n]? "
 
-#: builtin/bisect--helper.c:843
+#: builtin/bisect--helper.c:844
 #, fuzzy
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Invoque 'bisect_state' com pelo menos um argumento."
 
-#: builtin/bisect--helper.c:856
+#: builtin/bisect--helper.c:857
 #, fuzzy, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect $TERM_BAD' só leva um argumento."
 
-#: builtin/bisect--helper.c:868 builtin/bisect--helper.c:879
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, fuzzy, c-format
 msgid "Bad rev input: %s"
 msgstr "Revisão incorreta na entrada: $arg"
 
-#: builtin/bisect--helper.c:924
-#, fuzzy
+#: builtin/bisect--helper.c:889
+#, fuzzy, c-format
+msgid "Bad rev input (not a commit): %s"
+msgstr "Revisão incorreta na entrada: $arg"
+
+#: builtin/bisect--helper.c:921
+msgid "We are not bisecting."
+msgstr "Estamos bissetando nada."
+
+#: builtin/bisect--helper.c:971
+#, fuzzy, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "?? de que é que estás a falar?"
+
+#: builtin/bisect--helper.c:983
+#, fuzzy, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "incapaz ler $file para reproduzir"
+
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
-msgstr "remover uma secção: nome"
-
-#: builtin/bisect--helper.c:926
-msgid "write out the bisection state in BISECT_LOG"
 msgstr ""
 
-#: builtin/bisect--helper.c:928
-msgid "check and set terms in a bisection state"
-msgstr ""
-
-#: builtin/bisect--helper.c:930
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:932
+#: builtin/bisect--helper.c:1060
 #, fuzzy
 msgid "print out the bisect terms"
-msgstr "imprimir apenas as tags do objeto"
+msgstr "imprimir termos de bifurcação"
 
-#: builtin/bisect--helper.c:934
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:936
+#: builtin/bisect--helper.c:1064
 #, fuzzy
 msgid "find the next bisection commit"
-msgstr "não é possível emendar commit não-existente"
+msgstr "encontra próximo commit de bisecção"
 
-#: builtin/bisect--helper.c:938
-msgid "verify the next bisection state then checkout the next bisection commit"
-msgstr ""
-
-#: builtin/bisect--helper.c:940
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr ""
 
-#: builtin/bisect--helper.c:942
+#: builtin/bisect--helper.c:1068
+msgid "list the bisection steps so far"
+msgstr ""
+
+#: builtin/bisect--helper.c:1070
+msgid "replay the bisection process from the given file"
+msgstr ""
+
+#: builtin/bisect--helper.c:1072
+#, fuzzy
+msgid "skip some commits for checkout"
+msgstr "'%s' tem commit checked out nenhum"
+
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr ""
 
-#: builtin/bisect--helper.c:957
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:961
-#, fuzzy
-msgid "--bisect-write requires either 4 or 5 arguments"
-msgstr ":strip= requer um inteiro positivo como argumento"
-
-#: builtin/bisect--helper.c:967
-msgid "--check-and-set-terms requires 3 arguments"
-msgstr ""
-
-#: builtin/bisect--helper.c:973
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:979
+#: builtin/bisect--helper.c:1100
 #, fuzzy
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ":strip= requer um inteiro positivo como argumento"
 
-#: builtin/bisect--helper.c:988
+#: builtin/bisect--helper.c:1109
 #, fuzzy
 msgid "--bisect-next requires 0 arguments"
-msgstr "--continue não leva argumentos"
+msgstr "--bisect-next requer 0 argumentos"
 
-#: builtin/bisect--helper.c:994
+#: builtin/bisect--helper.c:1120
 #, fuzzy
-msgid "--bisect-auto-next requires 0 arguments"
-msgstr "--continue não leva argumentos"
+msgid "--bisect-log requires 0 arguments"
+msgstr "--bisect-next requer 0 argumentos"
+
+#: builtin/bisect--helper.c:1125
+#, fuzzy
+msgid "no logfile given"
+msgstr "Nenhum ficheiro de log fornecido"
 
 #: builtin/blame.c:32
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
@@ -10779,149 +11322,169 @@
 msgid "must end with a color"
 msgstr ""
 
-#: builtin/blame.c:730
+#: builtin/blame.c:728
 #, fuzzy, c-format
 msgid "invalid color '%s' in color.blame.repeatedLines"
 msgstr "ignorar cor inválida '%.*s' em log.graphColors"
 
-#: builtin/blame.c:748
-#, fuzzy
+#: builtin/blame.c:746
 msgid "invalid value for blame.coloring"
-msgstr "valor inválido de %s"
+msgstr ""
 
-#: builtin/blame.c:847
+#: builtin/blame.c:845
 #, c-format
 msgid "cannot find revision %s to ignore"
 msgstr ""
 
-#: builtin/blame.c:869
-msgid "Show blame entries as we find them, incrementally"
+#: builtin/blame.c:867
+#, fuzzy
+msgid "show blame entries as we find them, incrementally"
 msgstr ""
 "Mostrar entradas de culpa à medida que forem encontradas, incrementalmente"
 
-#: builtin/blame.c:870
+#: builtin/blame.c:868
 #, fuzzy
-msgid "Do not show object names of boundary commits (Default: off)"
+msgid "do not show object names of boundary commits (Default: off)"
 msgstr "Mostar SHA-1 dos commits limite em branco (Predefinição: desativado)"
 
-#: builtin/blame.c:871
-msgid "Do not treat root commits as boundaries (Default: off)"
+#: builtin/blame.c:869
+#, fuzzy
+msgid "do not treat root commits as boundaries (Default: off)"
 msgstr "Tratar commits raiz como limite nenhum (Predefinição: desativado)"
 
-#: builtin/blame.c:872
-msgid "Show work cost statistics"
+#: builtin/blame.c:870
+#, fuzzy
+msgid "show work cost statistics"
 msgstr "Mostrar estatísticas de custo de atividade"
 
-#: builtin/blame.c:873
-msgid "Force progress reporting"
-msgstr "Forçar informação de progresso"
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
+#: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
+#: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
+#: builtin/push.c:566 builtin/send-pack.c:198
+msgid "force progress reporting"
+msgstr "forçar informação de progresso"
 
-#: builtin/blame.c:874
-msgid "Show output score for blame entries"
+#: builtin/blame.c:872
+#, fuzzy
+msgid "show output score for blame entries"
 msgstr "Mostrar a pontuação das entradas de culpa"
 
-#: builtin/blame.c:875
-msgid "Show original filename (Default: auto)"
+#: builtin/blame.c:873
+#, fuzzy
+msgid "show original filename (Default: auto)"
 msgstr "Mostrar o nome do ficheiro original (Predefinição: auto)"
 
-#: builtin/blame.c:876
-msgid "Show original linenumber (Default: off)"
+#: builtin/blame.c:874
+#, fuzzy
+msgid "show original linenumber (Default: off)"
 msgstr "Mostrar números de linha originais (Predefinição: desativado)"
 
-#: builtin/blame.c:877
-msgid "Show in a format designed for machine consumption"
+#: builtin/blame.c:875
+#, fuzzy
+msgid "show in a format designed for machine consumption"
 msgstr "Mostrar em formato próprio para ser consumo por uma máquina"
 
-#: builtin/blame.c:878
-msgid "Show porcelain format with per-line commit information"
+#: builtin/blame.c:876
+#, fuzzy
+msgid "show porcelain format with per-line commit information"
 msgstr "Mostrar em formato de porcelana com informações de commit por linha"
 
-#: builtin/blame.c:879
-msgid "Use the same output mode as git-annotate (Default: off)"
+#: builtin/blame.c:877
+#, fuzzy
+msgid "use the same output mode as git-annotate (Default: off)"
 msgstr "Usar o mesmo modo de saída que git-annotate (Predefinição: desativado)"
 
-#: builtin/blame.c:880
-msgid "Show raw timestamp (Default: off)"
+#: builtin/blame.c:878
+#, fuzzy
+msgid "show raw timestamp (Default: off)"
 msgstr "Mostrar carimbo de data/hora em bruto (Predefinição: desativado)"
 
-#: builtin/blame.c:881
-msgid "Show long commit SHA1 (Default: off)"
+#: builtin/blame.c:879
+#, fuzzy
+msgid "show long commit SHA1 (Default: off)"
 msgstr "Mostrar SHA1 longo de commit (Predefinição: desativado)"
 
-#: builtin/blame.c:882
-msgid "Suppress author name and timestamp (Default: off)"
+#: builtin/blame.c:880
+#, fuzzy
+msgid "suppress author name and timestamp (Default: off)"
 msgstr ""
 "Suprimir nome de autor e carimbo de data/hora (Predefinição: desativado)"
 
-#: builtin/blame.c:883
-msgid "Show author email instead of name (Default: off)"
+#: builtin/blame.c:881
+#, fuzzy
+msgid "show author email instead of name (Default: off)"
 msgstr "Mostrar o email do autor em vez do nome (Predefinição: desativado)"
 
-#: builtin/blame.c:884
-msgid "Ignore whitespace differences"
+#: builtin/blame.c:882
+#, fuzzy
+msgid "ignore whitespace differences"
 msgstr "Ignorar as diferenças de espaço em branco"
 
-#: builtin/blame.c:885 builtin/log.c:1813
+#: builtin/blame.c:883 builtin/log.c:1823
 #, fuzzy
 msgid "rev"
 msgstr "reverter"
 
-#: builtin/blame.c:885
+#: builtin/blame.c:883
 #, fuzzy
-msgid "Ignore <rev> when blaming"
+msgid "ignore <rev> when blaming"
 msgstr "ignorar o índice ao verificar"
 
-#: builtin/blame.c:886
-#, fuzzy
-msgid "Ignore revisions from <file>"
-msgstr "ler mensagem de um ficheiro"
+#: builtin/blame.c:884
+msgid "ignore revisions from <file>"
+msgstr ""
 
-#: builtin/blame.c:887
+#: builtin/blame.c:885
 msgid "color redundant metadata from previous line differently"
 msgstr ""
 
-#: builtin/blame.c:888
+#: builtin/blame.c:886
 msgid "color lines by age"
 msgstr ""
 
-#: builtin/blame.c:889
-msgid "Spend extra cycles to find better match"
+#: builtin/blame.c:887
+#, fuzzy
+msgid "spend extra cycles to find better match"
 msgstr "Despender ciclos extra para encontrar uma melhor correspondência"
 
-#: builtin/blame.c:890
-msgid "Use revisions from <file> instead of calling git-rev-list"
+#: builtin/blame.c:888
+#, fuzzy
+msgid "use revisions from <file> instead of calling git-rev-list"
 msgstr "Usar revisões do <ficheiro> em vez de invocar git-rev-list"
 
-#: builtin/blame.c:891
-msgid "Use <file>'s contents as the final image"
+#: builtin/blame.c:889
+#, fuzzy
+msgid "use <file>'s contents as the final image"
 msgstr "Usar o conteúdo do <ficheiro> como imagem final"
 
-#: builtin/blame.c:892 builtin/blame.c:893
+#: builtin/blame.c:890 builtin/blame.c:891
 msgid "score"
 msgstr "pontuação"
 
-#: builtin/blame.c:892
-msgid "Find line copies within and across files"
+#: builtin/blame.c:890
+#, fuzzy
+msgid "find line copies within and across files"
 msgstr "Localizar linhas copiadas dentro e entre ficheiros"
 
-#: builtin/blame.c:893
-msgid "Find line movements within and across files"
+#: builtin/blame.c:891
+#, fuzzy
+msgid "find line movements within and across files"
 msgstr "Localizar linhas movidas dentro e entre ficheiros"
 
-#: builtin/blame.c:894
+#: builtin/blame.c:892
 #, fuzzy
 msgid "range"
 msgstr "intervalo"
 
-#: builtin/blame.c:895
+#: builtin/blame.c:893
 #, fuzzy
-msgid "Process only line range <start>,<end> or function :<funcname>"
+msgid "process only line range <start>,<end> or function :<funcname>"
 msgstr "Processar apenas o intervalo de linhas n,m, a cantar de 1"
 
-#: builtin/blame.c:947
+#: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
-"--progress não pode ser usado com --incremental ou formatos de porcelana"
+"estás proibido de usar --progress com --incremental ou formatos porcelain"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -10931,18 +11494,18 @@
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:998
+#: builtin/blame.c:996
 msgid "4 years, 11 months ago"
 msgstr "há 4 anos e 11 meses atrás"
 
-#: builtin/blame.c:1114
+#: builtin/blame.c:1112
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "o ficheiro %s só tem %lu linha"
 msgstr[1] "o ficheiro %s só tem %lu linhas"
 
-#: builtin/blame.c:1159
+#: builtin/blame.c:1157
 msgid "Blaming lines"
 msgstr "Linhas de culpa"
 
@@ -10982,8 +11545,8 @@
 "deleting branch '%s' that has been merged to\n"
 "         '%s', but not yet merged to HEAD."
 msgstr ""
-"a eliminar o ramo '%s' integrado em\n"
-"         '%s', mas ainda não integrado em HEAD."
+"eliminando ramo '%s' que foi juntado a\n"
+"         '%s', mas ainda está por juntar a HEAD."
 
 #: builtin/branch.c:158
 #, c-format
@@ -10991,8 +11554,8 @@
 "not deleting branch '%s' that is not yet merged to\n"
 "         '%s', even though it is merged to HEAD."
 msgstr ""
-"ramo '%s' não eliminado, visto que ainda não foi integrado em\n"
-"         '%s', apesar de já ter sido integrado em HEAD."
+"mantendo ramo '%s' que ainda está por juntar a\n"
+"         '%s', apesar de já estar junto a HEAD."
 
 #: builtin/branch.c:172
 #, c-format
@@ -11005,133 +11568,121 @@
 "The branch '%s' is not fully merged.\n"
 "If you are sure you want to delete it, run 'git branch -D %s'."
 msgstr ""
-"O ramo '%s' não foi totalmente integrado.\n"
-"Se tem a certeza que o quer eliminar, execute 'git branch -D %s'."
+"O ramo '%s' está por juntar na totalidade.\n"
+"Se tens a certeza que queres eliminá-lo, executa 'git branch -D %s'."
 
 #: builtin/branch.c:189
 msgid "Update of config-file failed"
 msgstr "Falha ao atualizar o ficheiro de configuração"
 
-#: builtin/branch.c:220
+#: builtin/branch.c:223
 msgid "cannot use -a with -d"
-msgstr "não é possível usar -a com -d"
+msgstr "incapaz usar -a com -d"
 
-#: builtin/branch.c:226
+#: builtin/branch.c:230
 msgid "Couldn't look up commit object for HEAD"
 msgstr "Incapaz de pesquisar objeto commit para HEAD"
 
-#: builtin/branch.c:240
+#: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
 msgstr "Impossível apagar ramo '%s' checked out em '%s'"
 
-#: builtin/branch.c:255
+#: builtin/branch.c:259
 #, c-format
 msgid "remote-tracking branch '%s' not found."
-msgstr "ramo de monitorização remoto '%s' não encontrado."
+msgstr "ramo de monitorização remoto '%s' por encontrar."
 
-#: builtin/branch.c:256
+#: builtin/branch.c:260
 #, c-format
 msgid "branch '%s' not found."
-msgstr "ramo '%s' não encontrado."
+msgstr "ramo '%s' por encontrar."
 
-#: builtin/branch.c:271
-#, c-format
-msgid "Error deleting remote-tracking branch '%s'"
-msgstr "Erro a eliminar o ramo de monitorização remoto '%s'"
-
-#: builtin/branch.c:272
-#, c-format
-msgid "Error deleting branch '%s'"
-msgstr "Erro a eliminar ramo '%s'"
-
-#: builtin/branch.c:279
+#: builtin/branch.c:291
 #, c-format
 msgid "Deleted remote-tracking branch %s (was %s).\n"
 msgstr "Ramo de monitorização remoto %s eliminado (era %s).\n"
 
-#: builtin/branch.c:280
+#: builtin/branch.c:292
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Ramo %s eliminado (era %s).\n"
 
-#: builtin/branch.c:429 builtin/tag.c:61
+#: builtin/branch.c:440 builtin/tag.c:63
 #, fuzzy
 msgid "unable to parse format string"
-msgstr "não foi possível analisar o formato"
+msgstr "incapaz processar o formato string"
 
-#: builtin/branch.c:460
+#: builtin/branch.c:471
 #, fuzzy
 msgid "could not resolve HEAD"
-msgstr "não foi possível resolver o commit HEAD"
+msgstr "incapaz resolver HEAD"
 
-#: builtin/branch.c:466
+#: builtin/branch.c:477
 #, fuzzy, c-format
 msgid "HEAD (%s) points outside of refs/heads/"
-msgstr "HEAD não encontrada em refs/heads!"
+msgstr "HEAD (%s) aponta para fora de refs/heads/"
 
-#: builtin/branch.c:481
+#: builtin/branch.c:492
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "O ramo %s está a ser rebaseado em %s"
 
-#: builtin/branch.c:485
+#: builtin/branch.c:496
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "O ramo %s está a ser bissetado em %s"
 
-#: builtin/branch.c:502
+#: builtin/branch.c:513
 #, fuzzy
 msgid "cannot copy the current branch while not on any."
-msgstr ""
-"não é possível mudar o nome do ramo atual vista que não se encontra num ramo."
-
-#: builtin/branch.c:504
-msgid "cannot rename the current branch while not on any."
-msgstr ""
-"não é possível mudar o nome do ramo atual vista que não se encontra num ramo."
+msgstr "apenas podes copiar o ramo corrente enquanto estás num."
 
 #: builtin/branch.c:515
+msgid "cannot rename the current branch while not on any."
+msgstr "apenas podes renomear o ramo corrente enquanto estás num."
+
+#: builtin/branch.c:526
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nome de ramo inválido: '%s'"
 
-#: builtin/branch.c:542
+#: builtin/branch.c:555
 msgid "Branch rename failed"
 msgstr "Falha ao mudar o nome do ramo"
 
-#: builtin/branch.c:544
+#: builtin/branch.c:557
 #, fuzzy
 msgid "Branch copy failed"
 msgstr "Falha ao mudar o nome do ramo"
 
-#: builtin/branch.c:548
+#: builtin/branch.c:561
 #, fuzzy, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "O ramo incorretamente denominado '%s' mudou de nome"
 
-#: builtin/branch.c:551
+#: builtin/branch.c:564
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "O ramo incorretamente denominado '%s' mudou de nome"
 
-#: builtin/branch.c:557
+#: builtin/branch.c:570
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
-msgstr "O nome do ramo mudou para %s, mas a HEAD não está atualizada!"
+msgstr "Ramo renomeado para %s, mas HEAD está desatualizada!"
 
-#: builtin/branch.c:566
+#: builtin/branch.c:579
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 "O ramo mudou de nome, mas a atualização do ficheiro de configuração falhou"
 
-#: builtin/branch.c:568
+#: builtin/branch.c:581
 #, fuzzy
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 "O ramo mudou de nome, mas a atualização do ficheiro de configuração falhou"
 
-#: builtin/branch.c:584
+#: builtin/branch.c:597
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -11142,222 +11693,221 @@
 "  %s\n"
 "Linha começadas com '%c' serão ignoradas.\n"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:631
 msgid "Generic options"
 msgstr "Opções genéricas"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:633
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "apresentar hash e assunto, duplique para ramos a montante"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:634
 msgid "suppress informational messages"
 msgstr "suprimir mensagens informativas"
 
-#: builtin/branch.c:622
+#: builtin/branch.c:635
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "configurar modo de seguimento (consulte git-pull(1))"
 
-#: builtin/branch.c:624
+#: builtin/branch.c:637
 #, fuzzy
 msgid "do not use"
 msgstr "esquema a usar"
 
-#: builtin/branch.c:626 builtin/rebase.c:532
+#: builtin/branch.c:639 builtin/rebase.c:533
 msgid "upstream"
 msgstr "a montante"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:639
 msgid "change the upstream info"
 msgstr "alterar a informação do ramo a montante"
 
-#: builtin/branch.c:627
+#: builtin/branch.c:640
 #, fuzzy
 msgid "unset the upstream info"
 msgstr "Remover a informação do ramo a montante"
 
-#: builtin/branch.c:628
+#: builtin/branch.c:641
 msgid "use colored output"
 msgstr "usar saída colorida"
 
-#: builtin/branch.c:629
+#: builtin/branch.c:642
 msgid "act on remote-tracking branches"
 msgstr "atuar sobre ramos de monitorização remotos"
 
-#: builtin/branch.c:631 builtin/branch.c:633
+#: builtin/branch.c:644 builtin/branch.c:646
 msgid "print only branches that contain the commit"
 msgstr "imprimir apenas ramos que contenham o commit"
 
-#: builtin/branch.c:632 builtin/branch.c:634
+#: builtin/branch.c:645 builtin/branch.c:647
 msgid "print only branches that don't contain the commit"
-msgstr "imprimir apenas ramos que não contenham o commit"
+msgstr "imprimir apenas ramos que contenham outro commit"
 
-#: builtin/branch.c:637
+#: builtin/branch.c:650
 msgid "Specific git-branch actions:"
 msgstr "Ações específicas do git-branch:"
 
-#: builtin/branch.c:638
+#: builtin/branch.c:651
 msgid "list both remote-tracking and local branches"
 msgstr "listar ramos de monitorização remotos e ramos locais"
 
-#: builtin/branch.c:640
+#: builtin/branch.c:653
 msgid "delete fully merged branch"
 msgstr "eliminar um ramo totalmente integrado"
 
-#: builtin/branch.c:641
+#: builtin/branch.c:654
 msgid "delete branch (even if not merged)"
-msgstr "eliminar um ramo (mesmo que não tenha sido integrado)"
+msgstr "elimina ramo (mesmo que esteja por juntar)"
 
-#: builtin/branch.c:642
+#: builtin/branch.c:655
 msgid "move/rename a branch and its reflog"
 msgstr "mover ou mudar o nome de um ramo e o seu reflog"
 
-#: builtin/branch.c:643
+#: builtin/branch.c:656
 msgid "move/rename a branch, even if target exists"
 msgstr "mover ou mudar o nome de um ramo, mesmo que o destino já exista"
 
-#: builtin/branch.c:644
+#: builtin/branch.c:657
 #, fuzzy
 msgid "copy a branch and its reflog"
 msgstr "mover ou mudar o nome de um ramo e o seu reflog"
 
-#: builtin/branch.c:645
+#: builtin/branch.c:658
 #, fuzzy
 msgid "copy a branch, even if target exists"
 msgstr "mover ou mudar o nome de um ramo, mesmo que o destino já exista"
 
-#: builtin/branch.c:646
+#: builtin/branch.c:659
 msgid "list branch names"
 msgstr "listar os nomes dos ramos"
 
-#: builtin/branch.c:647
+#: builtin/branch.c:660
 #, fuzzy
 msgid "show current branch name"
 msgstr "Nenhum ramo atual."
 
-#: builtin/branch.c:648
+#: builtin/branch.c:661
 msgid "create the branch's reflog"
 msgstr "criar reflog do ramo"
 
-#: builtin/branch.c:650
+#: builtin/branch.c:663
 msgid "edit the description for the branch"
 msgstr "editar a descrição do ramo"
 
-#: builtin/branch.c:651
+#: builtin/branch.c:664
 msgid "force creation, move/rename, deletion"
 msgstr "forçar criação, mover/mudar o nome ou exclusão"
 
-#: builtin/branch.c:652
+#: builtin/branch.c:665
 msgid "print only branches that are merged"
 msgstr "imprimir apenas os ramos que foram integrados"
 
-#: builtin/branch.c:653
+#: builtin/branch.c:666
 msgid "print only branches that are not merged"
-msgstr "imprimir apenas os ramos que não foram integrados"
+msgstr "imprimir apenas ramos que estão por juntar"
 
-#: builtin/branch.c:654
+#: builtin/branch.c:667
 msgid "list branches in columns"
 msgstr "listar os ramos em colunas"
 
-#: builtin/branch.c:656 builtin/for-each-ref.c:42 builtin/notes.c:415
+#: builtin/branch.c:669 builtin/for-each-ref.c:44 builtin/notes.c:415
 #: builtin/notes.c:418 builtin/notes.c:581 builtin/notes.c:584
-#: builtin/tag.c:434
+#: builtin/tag.c:477
 msgid "object"
 msgstr "objeto"
 
-#: builtin/branch.c:657
+#: builtin/branch.c:670
 msgid "print only branches of the object"
 msgstr "imprimir apenas os ramos do objeto"
 
-#: builtin/branch.c:658 builtin/for-each-ref.c:48 builtin/tag.c:441
+#: builtin/branch.c:671 builtin/for-each-ref.c:50 builtin/tag.c:484
 msgid "sorting and filtering are case insensitive"
 msgstr "ordenar e filtrar são insensíveis a maiúsculas"
 
-#: builtin/branch.c:659 builtin/for-each-ref.c:38 builtin/tag.c:439
+#: builtin/branch.c:672 builtin/for-each-ref.c:40 builtin/tag.c:482
 #: builtin/verify-tag.c:38
 msgid "format to use for the output"
 msgstr "formato a usar na saída"
 
-#: builtin/branch.c:682 builtin/clone.c:790
+#: builtin/branch.c:695 builtin/clone.c:794
 msgid "HEAD not found below refs/heads!"
-msgstr "HEAD não encontrada em refs/heads!"
+msgstr "HEAD por encontrar em refs/heads!"
 
-#: builtin/branch.c:706
+#: builtin/branch.c:719
 msgid "--column and --verbose are incompatible"
 msgstr "--column e --verbose são incompatíveis"
 
-#: builtin/branch.c:721 builtin/branch.c:775 builtin/branch.c:784
+#: builtin/branch.c:734 builtin/branch.c:790 builtin/branch.c:799
 msgid "branch name required"
 msgstr "nome do ramo é obrigatório"
 
-#: builtin/branch.c:751
+#: builtin/branch.c:766
 msgid "Cannot give description to detached HEAD"
 msgstr "Impossível dar descrição a HEAD solta"
 
-#: builtin/branch.c:756
+#: builtin/branch.c:771
 msgid "cannot edit description of more than one branch"
-msgstr "não é possível editar a descrição de mais do que um ramo"
+msgstr "incapaz editar descrição de mais do que um ramo"
 
-#: builtin/branch.c:763
+#: builtin/branch.c:778
 #, c-format
 msgid "No commit on branch '%s' yet."
-msgstr "Ainda não há commits no ramo '%s'."
+msgstr "Ramo '%s' ainda tem commit nenhum."
 
-#: builtin/branch.c:766
+#: builtin/branch.c:781
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Ramo nenhum denominado '%s'."
 
-#: builtin/branch.c:781
+#: builtin/branch.c:796
 #, fuzzy
 msgid "too many branches for a copy operation"
 msgstr "demasiados ramos para uma operação de mudança de nome"
 
-#: builtin/branch.c:790
+#: builtin/branch.c:805
 #, fuzzy
 msgid "too many arguments for a rename operation"
 msgstr "demasiados ramos para uma operação de mudança de nome"
 
-#: builtin/branch.c:795
+#: builtin/branch.c:810
 #, fuzzy
 msgid "too many arguments to set new upstream"
 msgstr "demasiados ramos para definir novo ramo a montante"
 
-#: builtin/branch.c:799
+#: builtin/branch.c:814
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr ""
-"não foi possível definir %s como ramo a montante de HEAD visto que esta não "
-"aponta para um ramo."
+"apenas pode definir upstream de HEAD para %s quando aponta para qualquer "
+"ramo."
 
-#: builtin/branch.c:802 builtin/branch.c:825
+#: builtin/branch.c:817 builtin/branch.c:840
 #, c-format
 msgid "no such branch '%s'"
-msgstr "o ramo '%s' não existe"
+msgstr "esse ramo '%s' é inexistente"
 
-#: builtin/branch.c:806
+#: builtin/branch.c:821
 #, c-format
 msgid "branch '%s' does not exist"
-msgstr "o ramo '%s' não existe"
+msgstr "ramo '%s' é inexistente"
 
-#: builtin/branch.c:819
+#: builtin/branch.c:834
 #, fuzzy
 msgid "too many arguments to unset upstream"
 msgstr "demasiados ramos para remover a definição de ramo a montante"
 
-#: builtin/branch.c:823
+#: builtin/branch.c:838
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
-"não foi possível remover a definição de ramo a montante de HEAD visto que "
-"esta não aponta para um ramo."
+"apenas posso desdefinir upstream de HEAD quando aponta para qualquer ramo."
 
-#: builtin/branch.c:829
+#: builtin/branch.c:844
 #, c-format
 msgid "Branch '%s' has no upstream information"
-msgstr "O ramo '%s' não tem informação sobre o ramo a montante"
+msgstr "Ramo '%s' tem informação de upstream nenhuma"
 
-#: builtin/branch.c:839
+#: builtin/branch.c:854
 #, fuzzy
 msgid ""
 "The -a, and -r, options to 'git branch' do not take a branch name.\n"
@@ -11366,7 +11916,7 @@
 "As opções -a, e -r, em 'git branch' levam nome de branch nenhum.\n"
 "Quiseste utilizar: -a|-r --list <pattern>? "
 
-#: builtin/branch.c:843
+#: builtin/branch.c:858
 #, fuzzy
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
@@ -11420,39 +11970,39 @@
 "You can delete any lines you don't wish to share.\n"
 msgstr ""
 
-#: builtin/bugreport.c:135
+#: builtin/bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr ""
 
-#: builtin/bugreport.c:137
+#: builtin/bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr ""
 
-#: builtin/bugreport.c:159
+#: builtin/bugreport.c:160
 #, fuzzy, c-format
 msgid "could not create leading directories for '%s'"
-msgstr "não foi possível criar os diretórios superiores de '%s'"
+msgstr "incapaz criar pastas superiores para '%s'"
 
-#: builtin/bugreport.c:166
+#: builtin/bugreport.c:167
 msgid "System Info"
 msgstr ""
 
-#: builtin/bugreport.c:169
+#: builtin/bugreport.c:170
 #, fuzzy
 msgid "Enabled Hooks"
-msgstr "não foi possível abrir %s"
+msgstr "Hooks Ativados"
 
-#: builtin/bugreport.c:176
+#: builtin/bugreport.c:177
 #, fuzzy, c-format
 msgid "couldn't create a new file at '%s'"
-msgstr "não foi possível criar o ficheiro '%s'"
+msgstr "incapaz criar novo ficheiro em '%s'"
 
-#: builtin/bugreport.c:179
+#: builtin/bugreport.c:180
 #, fuzzy, c-format
 msgid "unable to write to %s"
-msgstr "não foi possível escrever %s"
+msgstr "incapaz escrever para %s"
 
-#: builtin/bugreport.c:189
+#: builtin/bugreport.c:190
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr ""
@@ -11475,19 +12025,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr ""
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3480
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
-msgstr "não mostrar medidor de progresso"
+msgstr "mostrar medidor de progresso nenhum"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3482
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "mostrar medidor de progresso"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3484
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "mostrar medidor de progresso durante a fase de escrita de objetos"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3487
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "semelhante a --all-progress quando o medidor de progresso é mostrado"
 
@@ -11499,30 +12049,30 @@
 msgid "Need a repository to create a bundle."
 msgstr "É necessário um repositório para criar um bundle."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 #, fuzzy
 msgid "do not show bundle details"
-msgstr "não mostrar tags descascadas"
+msgstr "mostrar nenhuns detalhes de conjunto"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s está ok\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "É preciso um repositório para desempacotar."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ser verboso; deve ser colocado antes de um subcomando"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Subcomando desconhecido: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11530,7 +12080,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <tipo> | --textconv | --filters) [--path=<caminho>] <objeto>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 #, fuzzy
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
@@ -11539,74 +12089,74 @@
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 #, fuzzy
 msgid "only one batch option may be specified"
 msgstr "Nenhum nome de ramo especificado"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<tipo> pode ser um de: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "mostrar tipo do objeto"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "mostrar tamanho do objeto"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
-msgstr "sair com retorno zero quando não houver erros"
+msgstr "sair com retorno zero quando há erro nenhum"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "mostrar conteúdo do objeto com impressão bonita"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "executar textconv no conteúdo de objetos blob"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "para objetos blob, correr filtros sobre o conteúdo do objeto"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "usar um caminho específico para --textconv/--filters"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "permitir que -s e -t funcionem com objetos danificados/corrompidos"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "carregar a saída de --batch"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "mostrar informação e conteúdo dos objetos fornecidos na entrada padrão"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "mostrar informação sobre os objetos fornecidos na entrada padrão"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "seguir ligações simbólica no interior da árvore (usado com --batch ou --"
 "batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "mostrar todos os objetos com --batch ou --batch-check"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr ""
 
@@ -11624,7 +12174,7 @@
 
 #: builtin/check-attr.c:22
 msgid "use .gitattributes only from the index"
-msgstr "usar .gitattributes apenas a partir do índice"
+msgstr "usar .gitattributes apenas a partir de cenário"
 
 #: builtin/check-attr.c:23 builtin/check-ignore.c:25 builtin/hash-object.c:102
 msgid "read file names from stdin"
@@ -11634,8 +12184,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "terminar registos da entrada e da saída com um carácter NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1500 builtin/gc.c:541
-#: builtin/worktree.c:561
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "suprimir informação de progresso"
 
@@ -11647,27 +12197,27 @@
 msgid "ignore index when checking"
 msgstr "ignorar o índice ao verificar"
 
-#: builtin/check-ignore.c:163
+#: builtin/check-ignore.c:165
 msgid "cannot specify pathnames with --stdin"
-msgstr "não é possível especificar caminhos com --stdin"
+msgstr "incapaz especificar pathnames com --stdin"
 
-#: builtin/check-ignore.c:166
+#: builtin/check-ignore.c:168
 msgid "-z only makes sense with --stdin"
 msgstr "-z só faz sentido com --stdin"
 
-#: builtin/check-ignore.c:168
+#: builtin/check-ignore.c:170
 msgid "no path specified"
 msgstr "path nenhum especificado"
 
-#: builtin/check-ignore.c:172
+#: builtin/check-ignore.c:174
 msgid "--quiet is only valid with a single pathname"
 msgstr "--quiet só é válido com um único caminho"
 
-#: builtin/check-ignore.c:174
+#: builtin/check-ignore.c:176
 msgid "cannot have both --quiet and --verbose"
-msgstr "não é possível usar --quiet e --verbose simultaneamente"
+msgstr "incapaz usar ambos --quiet e --verbose"
 
-#: builtin/check-ignore.c:177
+#: builtin/check-ignore.c:179
 msgid "--non-matching is only valid with --verbose"
 msgstr "--non-matching só é válido com --verbose"
 
@@ -11682,225 +12232,231 @@
 #: builtin/check-mailmap.c:25
 #, c-format
 msgid "unable to parse contact: %s"
-msgstr "não é possível analisar o contacto: %s"
+msgstr "incapaz processar contato: %s"
 
 #: builtin/check-mailmap.c:48
 msgid "no contacts specified"
 msgstr "contato nenhum especificado"
 
-#: builtin/checkout-index.c:139
-msgid "git checkout-index [<options>] [--] [<file>...]"
-msgstr "git checkout-index [<opções>] [--] [<ficheiro>...]"
+#: builtin/checkout--worker.c:110
+#, fuzzy
+msgid "git checkout--worker [<options>]"
+msgstr "git checkout--worker [<opções>]"
 
-#: builtin/checkout-index.c:156
-msgid "stage should be between 1 and 3 or all"
-msgstr "stage deve ser um número entre 1 e 3 ou o parâmetro all"
-
-#: builtin/checkout-index.c:173
-msgid "check out all files in the index"
-msgstr "extrair todos os ficheiros presentes no índice"
-
-#: builtin/checkout-index.c:174
-msgid "force overwrite of existing files"
-msgstr "forçar substituição dos ficheiros existentes"
-
-#: builtin/checkout-index.c:176
-msgid "no warning for existing files and files not in index"
-msgstr ""
-"não mostrar aviso para ficheiros existentes e ficheiros não presentes no "
-"índice"
-
-#: builtin/checkout-index.c:178
-msgid "don't checkout new files"
-msgstr "não extrair novos ficheiros"
-
-#: builtin/checkout-index.c:180
-msgid "update stat information in the index file"
-msgstr "atualizar informação de stat no ficheiro de índice"
-
-#: builtin/checkout-index.c:184
-msgid "read list of paths from the standard input"
-msgstr "ler lista de caminhos da entrada padrão"
-
-#: builtin/checkout-index.c:186
-msgid "write the content to temporary files"
-msgstr "escrever o conteúdo em ficheiros temporários"
-
-#: builtin/checkout-index.c:187 builtin/column.c:31
-#: builtin/submodule--helper.c:1824 builtin/submodule--helper.c:1827
-#: builtin/submodule--helper.c:1835 builtin/submodule--helper.c:2333
-#: builtin/worktree.c:757
+#: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "cadeia"
 
-#: builtin/checkout-index.c:188
+#: builtin/checkout--worker.c:119 builtin/checkout-index.c:202
 msgid "when creating files, prepend <string>"
 msgstr "preceder <cadeia> ao criar ficheiros"
 
+#: builtin/checkout-index.c:152
+msgid "git checkout-index [<options>] [--] [<file>...]"
+msgstr "git checkout-index [<opções>] [--] [<ficheiro>...]"
+
+#: builtin/checkout-index.c:169
+msgid "stage should be between 1 and 3 or all"
+msgstr "stage deve ser um número entre 1 e 3 ou o parâmetro all"
+
+#: builtin/checkout-index.c:187
+msgid "check out all files in the index"
+msgstr "extrair todos os ficheiros presentes no índice"
+
+#: builtin/checkout-index.c:188
+msgid "force overwrite of existing files"
+msgstr "forçar substituição dos ficheiros existentes"
+
 #: builtin/checkout-index.c:190
+msgid "no warning for existing files and files not in index"
+msgstr ""
+"mostrar aviso nenhum para ficheiros existentes e ficheiros fora do index"
+
+#: builtin/checkout-index.c:192
+msgid "don't checkout new files"
+msgstr "extrair ficheiros novos nenhuns"
+
+#: builtin/checkout-index.c:194
+msgid "update stat information in the index file"
+msgstr "atualizar informação de stat de ficheiro de cenário"
+
+#: builtin/checkout-index.c:198
+msgid "read list of paths from the standard input"
+msgstr "ler lista de caminhos da entrada padrão"
+
+#: builtin/checkout-index.c:200
+msgid "write the content to temporary files"
+msgstr "escrever o conteúdo em ficheiros temporários"
+
+#: builtin/checkout-index.c:204
 msgid "copy out the files from named stage"
 msgstr "copiar os ficheiros do estágio indicado"
 
-#: builtin/checkout.c:31
+#: builtin/checkout.c:33
 msgid "git checkout [<options>] <branch>"
 msgstr "git checkout [<opções>] <ramo>"
 
-#: builtin/checkout.c:32
+#: builtin/checkout.c:34
 msgid "git checkout [<options>] [<branch>] -- <file>..."
 msgstr "git checkout [<opções>] [<ramo>] -- <ficheiro>..."
 
-#: builtin/checkout.c:37
+#: builtin/checkout.c:39
 #, fuzzy
 msgid "git switch [<options>] [<branch>]"
-msgstr "git checkout [<opções>] <ramo>"
+msgstr "git switch [<opções>] [<ramo>]"
 
-#: builtin/checkout.c:42
+#: builtin/checkout.c:44
 #, fuzzy
 msgid "git restore [<options>] [--source=<branch>] <file>..."
-msgstr "git checkout [<opções>] [<ramo>] -- <ficheiro>..."
-
-#: builtin/checkout.c:188 builtin/checkout.c:227
-#, c-format
-msgid "path '%s' does not have our version"
-msgstr "o caminho '%s' não tem a nossa versão"
+msgstr "git restore [<opções>] [--source=<ramo>] <ficheiro>..."
 
 #: builtin/checkout.c:190 builtin/checkout.c:229
 #, c-format
-msgid "path '%s' does not have their version"
-msgstr "o caminho '%s' não tem a versão deles"
+msgid "path '%s' does not have our version"
+msgstr "path '%s' é diferente da nossa versão"
 
-#: builtin/checkout.c:206
+#: builtin/checkout.c:192 builtin/checkout.c:231
+#, c-format
+msgid "path '%s' does not have their version"
+msgstr "path '%s' é diferente da versão deles"
+
+#: builtin/checkout.c:208
 #, c-format
 msgid "path '%s' does not have all necessary versions"
-msgstr "o caminho '%s' não tem todas as versões necessárias"
+msgstr "path '%s' falta todas as versões necessárias"
 
-#: builtin/checkout.c:258
+#: builtin/checkout.c:261
 #, c-format
 msgid "path '%s' does not have necessary versions"
-msgstr "o caminho '%s' não tem as versões necessárias"
+msgstr "path '%s' falta as versões necessárias"
 
-#: builtin/checkout.c:275
+#: builtin/checkout.c:278
 #, c-format
 msgid "path '%s': cannot merge"
-msgstr "caminho '%s': não é possível integrar"
+msgstr "path '%s': incapaz juntar"
 
-#: builtin/checkout.c:291
+#: builtin/checkout.c:294
 #, c-format
 msgid "Unable to add merge result for '%s'"
 msgstr "Impossível adicionar o resultado da junção para '%s'"
 
-#: builtin/checkout.c:396
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:401
+#: builtin/checkout.c:416
 #, fuzzy, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "%d caminho atualizado"
 msgstr[1] "%d caminhos atualizados"
 
-#: builtin/checkout.c:408
-#, fuzzy, c-format
+#: builtin/checkout.c:423
+#, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
-msgstr[0] "falha ao ler o índice"
-msgstr[1] "falha ao ler o índice"
+msgstr[0] ""
+msgstr[1] ""
 
-#: builtin/checkout.c:431 builtin/checkout.c:434 builtin/checkout.c:437
-#: builtin/checkout.c:441
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
-msgstr "'%s' não pode ser usado com caminhos em atualização"
+msgstr "'%s' incapaz ser usado com paths em atualização"
 
-#: builtin/checkout.c:444 builtin/checkout.c:447
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
-msgstr "'%s' não pode ser usado com %s"
+msgstr "'%s' incapaz ser usado com %s"
 
-#: builtin/checkout.c:451
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "Incapaz atualizar paths e mudar para ramo '%s' ao mesmo tempo."
 
-#: builtin/checkout.c:455
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr ""
 
-#: builtin/checkout.c:459
+#: builtin/checkout.c:474
 #, fuzzy, c-format
 msgid "'%s' must be used when '%s' is not specified"
-msgstr "'%s' não pode ser usado com '%s'"
+msgstr "'%s' tem de ser usado quando '%s' está por ser especificado"
 
-#: builtin/checkout.c:464 builtin/checkout.c:469
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, fuzzy, c-format
 msgid "'%s' or '%s' cannot be used with %s"
-msgstr "%s: %s não pode ser usado com %s"
+msgstr "'%s' ou '%s'  impossível ser usado com %s"
 
-#: builtin/checkout.c:541 builtin/checkout.c:548
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
-msgstr "o caminho '%s' não foi integrado"
+msgstr "path '%s' está por juntar"
 
-#: builtin/checkout.c:716
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "primeiro deve resolver o índice atual"
 
-#: builtin/checkout.c:770
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:866
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Incapaz fazer reflog para '%s': %s\n"
 
-#: builtin/checkout.c:908
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD está agora em"
 
-#: builtin/checkout.c:912 builtin/clone.c:721 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
-msgstr "não foi possível atualizar HEAD"
+msgstr "incapaz atualizar HEAD"
 
-#: builtin/checkout.c:916
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Repor ramo '%s'\n"
 
-#: builtin/checkout.c:919
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Já em '%s'\n"
 
-#: builtin/checkout.c:923
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Mudou para e repôs o ramo '%s'\n"
 
-#: builtin/checkout.c:925 builtin/checkout.c:1356
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Mudou para o novo ramo '%s'\n"
 
-#: builtin/checkout.c:927
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Mudou para o ramo '%s'\n"
 
-#: builtin/checkout.c:978
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... e mais %d.\n"
 
-#: builtin/checkout.c:984
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11913,17 +12469,17 @@
 "\n"
 "%s\n"
 msgstr[0] ""
-"Aviso: estás deixando %d commit para trás, desconetado a qualquer dos "
-"teus ramos:\n"
+"Aviso: estás deixando %d commit para trás, desconetado a qualquer dos teus "
+"ramos:\n"
 "\n"
 "%s\n"
 msgstr[1] ""
-"Aviso: estás deixando %d commits para trás, desconetado a qualquer "
-"dos teus ramos:\n"
+"Aviso: estás deixando %d commits para trás, desconetado a qualquer dos teus "
+"ramos:\n"
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1003
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11950,26 +12506,26 @@
 " git branch <nome-do-novo-ramo> %s\n"
 "\n"
 
-#: builtin/checkout.c:1038
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "erro interno durante o curso de revisões"
 
-#: builtin/checkout.c:1042
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "A posição anterior de HEAD era"
 
-#: builtin/checkout.c:1082 builtin/checkout.c:1351
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
-msgstr "Está num ramo ainda não criado"
+msgstr "Está num ramo ainda por nascer"
 
-#: builtin/checkout.c:1164
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
 "Please use -- (and optionally --no-guess) to disambiguate"
 msgstr ""
 
-#: builtin/checkout.c:1171
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -11981,225 +12537,214 @@
 "checkout.defaultRemote=origin in your config."
 msgstr ""
 
-#: builtin/checkout.c:1181
+#: builtin/checkout.c:1196
 #, fuzzy, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "atuar sobre ramos de monitorização remotos"
 
-#: builtin/checkout.c:1247
+#: builtin/checkout.c:1262
 #, fuzzy
 msgid "only one reference expected"
 msgstr "esperava-se apenas uma referência, %d fornecidas."
 
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "esperava-se apenas uma referência, %d fornecidas."
 
-#: builtin/checkout.c:1310 builtin/worktree.c:342 builtin/worktree.c:510
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referência inválida: %s"
 
-#: builtin/checkout.c:1323 builtin/checkout.c:1689
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
-msgstr "a referência não é uma árvore: %s"
+msgstr "referência é árvore nenhuma: %s"
 
-#: builtin/checkout.c:1370
+#: builtin/checkout.c:1385
 #, fuzzy, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "esperado um ramo, recebi tag '%s'"
 
-#: builtin/checkout.c:1372
+#: builtin/checkout.c:1387
 #, fuzzy, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "Ramo %s configurado para seguir o ramo remoto %s de %s."
 
-#: builtin/checkout.c:1373 builtin/checkout.c:1381
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, fuzzy, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "O ramo %s está a ser bissetado em %s"
 
-#: builtin/checkout.c:1376
+#: builtin/checkout.c:1391
 #, fuzzy, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "é suposto um branch, recebi um commit '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1404
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1408
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1427
 #, fuzzy
 msgid "you are switching branch while bisecting"
 msgstr "Está a bissetar neste momento."
 
-#: builtin/checkout.c:1419
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
-msgstr "não podem ser usados caminhos ao mudar de ramo"
+msgstr "incapaz mudar ramo com o uso de paths"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1426 builtin/checkout.c:1430
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
-msgstr "'%s' não pode ser usado ao mudar de ramo"
+msgstr "incapaz de mudar ramo com o uso de '%s'"
 
-#: builtin/checkout.c:1434 builtin/checkout.c:1437 builtin/checkout.c:1440
-#: builtin/checkout.c:1445 builtin/checkout.c:1450
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
-msgstr "'%s' não pode ser usado com '%s'"
+msgstr "'%s' é incapaz de ser usado com '%s'"
 
-#: builtin/checkout.c:1447
+#: builtin/checkout.c:1462
 #, fuzzy, c-format
 msgid "'%s' cannot take <start-point>"
-msgstr "'%s' não pode ser usado com caminhos em atualização"
+msgstr "'%s' incapaz receber <start-point>"
 
-#: builtin/checkout.c:1455
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Incapaz mudar ramo para '%s', pois está fora de ser um commit"
 
-#: builtin/checkout.c:1462
+#: builtin/checkout.c:1477
 #, fuzzy
 msgid "missing branch or commit argument"
 msgstr "Falta um nome dum ramo; tente -b"
 
-#: builtin/checkout.c:1504 builtin/clone.c:92 builtin/commit-graph.c:84
-#: builtin/commit-graph.c:222 builtin/fetch.c:172 builtin/merge.c:296
-#: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:575
-#: builtin/send-pack.c:198
-msgid "force progress reporting"
-msgstr "forçar informação de progresso"
-
-#: builtin/checkout.c:1505
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "realizar uma integração com 3 pontos com o novo ramo"
 
-#: builtin/checkout.c:1506 builtin/log.c:1800 parse-options.h:322
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1507
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "estilo de conflito (merge ou diff3)"
 
-#: builtin/checkout.c:1519 builtin/worktree.c:558
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "destacar HEAD no commit indicado"
 
-#: builtin/checkout.c:1520
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "definir a informação do ramo a montante do novo ramo"
 
-#: builtin/checkout.c:1522
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "forçar extração (descartar modificações locais)"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "novo-ramo"
 
-#: builtin/checkout.c:1524
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "novo ramo sem pai"
 
-#: builtin/checkout.c:1526 builtin/merge.c:300
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "atualizar ficheiros ignorados (predefinição)"
 
-#: builtin/checkout.c:1529
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
-msgstr ""
-"não verificar se outra árvore de trabalho contém a referência fornecida"
+msgstr "incapaz verificar se outra worktree contém referência dada"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
-msgstr "extrair a nossa versão dos ficheiros não integrados"
+msgstr "checkout a nossa versão dos ficheiros por juntar"
 
-#: builtin/checkout.c:1545
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
-msgstr "extrair a versão deles dos ficheiros não integrados"
+msgstr "checkout a versão deles dos ficheiros por juntar"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
-msgstr "não restringir especificadores de caminho a entradas esparsas"
+msgstr "abrange especificadores de path além de entradas dispersas"
 
-#: builtin/checkout.c:1604
-#, fuzzy, c-format
+#: builtin/checkout.c:1622
+#, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
-msgstr "-b, -B e --orphan são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/checkout.c:1608
-#, fuzzy
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
-msgstr "-b, -B e --orphan são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/checkout.c:1645
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track requer um nome dum ramo"
 
-#: builtin/checkout.c:1650
+#: builtin/checkout.c:1668
 #, fuzzy, c-format
 msgid "missing branch name; try -%c"
 msgstr "Falta um nome dum ramo; tente -b"
 
-#: builtin/checkout.c:1682
+#: builtin/checkout.c:1700
 #, fuzzy, c-format
 msgid "could not resolve %s"
-msgstr "não foi possível remover '%s'"
+msgstr "incapaz resolver %s"
 
-#: builtin/checkout.c:1698
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "especificação de caminho inválida"
 
-#: builtin/checkout.c:1705
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1709
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
-msgstr "git checkout: --detach não aceita um caminho como argumento '%s'"
+msgstr "git checkout: --detach recusa path '%s' como argumento"
 
-#: builtin/checkout.c:1718
-#, fuzzy
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
-#: builtin/checkout.c:1721 builtin/reset.c:325 builtin/stash.c:1499
-#, fuzzy
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
-#: builtin/checkout.c:1734
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12207,80 +12752,80 @@
 "git checkout: --ours/--theirs, --force e --merge são incompatíveis\n"
 "durante a extração do índice."
 
-#: builtin/checkout.c:1739
+#: builtin/checkout.c:1757
 #, fuzzy
 msgid "you must specify path(s) to restore"
 msgstr "Deve especificar um diretório."
 
-#: builtin/checkout.c:1765 builtin/checkout.c:1767 builtin/checkout.c:1816
-#: builtin/checkout.c:1818 builtin/clone.c:122 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2719 builtin/worktree.c:554
-#: builtin/worktree.c:556
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
+#: builtin/worktree.c:486
 msgid "branch"
 msgstr "ramo"
 
-#: builtin/checkout.c:1766
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "criar e extrair um novo ramo"
 
-#: builtin/checkout.c:1768
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "criar/repor e extrair um ramo"
 
-#: builtin/checkout.c:1769
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "criar reflog do novo ramo"
 
-#: builtin/checkout.c:1771
+#: builtin/checkout.c:1789
 #, fuzzy
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'"
 
-#: builtin/checkout.c:1772
-#, fuzzy
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
-msgstr "eliminar referências soltas (predefinição)"
+msgstr ""
 
-#: builtin/checkout.c:1817
+#: builtin/checkout.c:1835
 #, fuzzy
 msgid "create and switch to a new branch"
 msgstr "criar e extrair um novo ramo"
 
-#: builtin/checkout.c:1819
+#: builtin/checkout.c:1837
 #, fuzzy
 msgid "create/reset and switch to a branch"
 msgstr "criar/repor e extrair um ramo"
 
-#: builtin/checkout.c:1821
+#: builtin/checkout.c:1839
 #, fuzzy
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'"
 
-#: builtin/checkout.c:1823
+#: builtin/checkout.c:1841
 #, fuzzy
 msgid "throw away local modifications"
 msgstr "forçar extração (descartar modificações locais)"
 
-#: builtin/checkout.c:1857
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr ""
 
-#: builtin/checkout.c:1859
+#: builtin/checkout.c:1877
 #, fuzzy
 msgid "restore the index"
-msgstr "falha ao ler o índice"
+msgstr "restaurar o cenário"
 
-#: builtin/checkout.c:1861
+#: builtin/checkout.c:1879
 #, fuzzy
 msgid "restore the working tree (default)"
 msgstr "Mostrar o estado da árvores de trabalho"
 
-#: builtin/checkout.c:1863
+#: builtin/checkout.c:1881
 #, fuzzy
 msgid "ignore unmerged entries"
 msgstr "ignora unmerged entries"
 
-#: builtin/checkout.c:1864
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr ""
 
@@ -12310,17 +12855,12 @@
 msgid "Would skip repository %s\n"
 msgstr "Ignoraria o repositório %s\n"
 
-#: builtin/clean.c:37
-#, c-format
-msgid "failed to remove %s"
-msgstr "falha ao remover %s"
-
 #: builtin/clean.c:38
 #, fuzzy, c-format
 msgid "could not lstat %s\n"
-msgstr "não foi possível obter stat de %s\n"
+msgstr "incapaz lstat %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12333,7 +12873,7 @@
 "foo        - selecionar item baseado no prefixo único\n"
 "           - (vazio) seleciona nada\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12354,33 +12894,33 @@
 "*          - escolher todos os itens\n"
 "           - (vazio) concluir seleção\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "O quê (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Introduza padrões a ignorar>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
-msgstr "AVISO: não foram encontrados itens correspondentes a: %s"
+msgstr "AVISO: incapaz encontrar items correspondentes a: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Selecione itens para eliminar"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Remover %s [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12398,52 +12938,52 @@
 "help                - esta ajuda\n"
 "?                   - ajuda para seleção em linha de comandos"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Removeria o seguinte item:"
 msgstr[1] "Removeria os seguintes itens:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Mais ficheiro por limpar nenhum, saindo."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
-msgstr "não imprimir os nomes dos ficheiros removidos"
+msgstr "incapaz imprimir nomes de ficheiros removidos"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "forçar"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "limpeza interativa"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "remover diretórios inteiros"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:921 builtin/log.c:183 builtin/log.c:185
-#: builtin/ls-files.c:558 builtin/name-rev.c:526 builtin/name-rev.c:528
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
+#: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "padrão"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "adicionar <padrão> às regras ignoradas"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "também remover ficheiros ignorados"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "remover apenas ficheiros ignorados"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12451,7 +12991,7 @@
 "clean.requireForce definido como true e nenhum -i, -n, ou -f fornecido; "
 "recusando limpar"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12459,171 +12999,177 @@
 "clean.requireForce predefinido como true e nenhum -i, -n, ou -f fornecido; "
 "recusando limpar"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
-msgstr "-x e -X não pode ser usados juntos"
+msgstr "-x e -X incapazes de ser usados juntos"
 
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opções>] [--] <repo> [<dir>]"
 
-#: builtin/clone.c:94
-msgid "don't create a checkout"
-msgstr "não criar uma extração"
+#: builtin/clone.c:96
+#, fuzzy
+msgid "don't clone shallow repository"
+msgstr "para clonar de um repositório local"
 
-#: builtin/clone.c:95 builtin/clone.c:97 builtin/init-db.c:553
+#: builtin/clone.c:98
+msgid "don't create a checkout"
+msgstr "cria checkout nenhum"
+
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "criar um repositório nu"
 
-#: builtin/clone.c:99
+#: builtin/clone.c:103
 msgid "create a mirror repository (implies bare)"
 msgstr "criar um repositório espelhado (implica repositório nu)"
 
-#: builtin/clone.c:101
+#: builtin/clone.c:105
 msgid "to clone from a local repository"
 msgstr "para clonar de um repositório local"
 
-#: builtin/clone.c:103
+#: builtin/clone.c:107
 msgid "don't use local hardlinks, always copy"
-msgstr "não usar ligações fixas, copiar sempre"
+msgstr "usa hardlinks nenhuns, copia sempre"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:109
 msgid "setup as shared repository"
 msgstr "configurar como repositório partilhado"
 
-#: builtin/clone.c:107
+#: builtin/clone.c:111
 msgid "pathspec"
 msgstr "pathspec"
 
-#: builtin/clone.c:107
+#: builtin/clone.c:111
 msgid "initialize submodules in the clone"
 msgstr "inicializar submódulos no clone"
 
-#: builtin/clone.c:111
+#: builtin/clone.c:115
 msgid "number of submodules cloned in parallel"
 msgstr "número de submódulos clonados em paralelo"
 
-#: builtin/clone.c:112 builtin/init-db.c:550
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "diretório-modelo"
 
-#: builtin/clone.c:113 builtin/init-db.c:551
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "diretório que contém os modelos usados"
 
-#: builtin/clone.c:115 builtin/clone.c:117 builtin/submodule--helper.c:1831
-#: builtin/submodule--helper.c:2336
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "repositório de referência"
 
-#: builtin/clone.c:119 builtin/submodule--helper.c:1833
-#: builtin/submodule--helper.c:2338
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "usar --reference apenas para clonar"
 
-#: builtin/clone.c:120 builtin/column.c:27 builtin/init-db.c:561
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3546 builtin/repack.c:358
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
+#: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "nome"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:125
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "usar <nome> em vez de 'origin' para seguir o ramo a montante"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:127
 msgid "checkout <branch> instead of the remote's HEAD"
-msgstr "extrair <ramo> em vez da HEAD do remoto"
+msgstr "observar <ramo> em vez de HEAD de remoto"
 
-#: builtin/clone.c:125
+#: builtin/clone.c:129
 msgid "path to git-upload-pack on the remote"
 msgstr "caminho para git-upload-pack no remoto"
 
-#: builtin/clone.c:126 builtin/fetch.c:173 builtin/grep.c:860
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "profundidade"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:131
 msgid "create a shallow clone of that depth"
 msgstr "criar um clone raso com essa profundidade"
 
-#: builtin/clone.c:128 builtin/fetch.c:175 builtin/pack-objects.c:3535
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "hora"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:133
 msgid "create a shallow clone since a specific time"
 msgstr "criar um clone raso desde uma data específica"
 
-#: builtin/clone.c:130 builtin/fetch.c:177 builtin/fetch.c:200
-#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1317
+#: builtin/clone.c:134 builtin/fetch.c:184 builtin/fetch.c:207
+#: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1318
 msgid "revision"
 msgstr "revisão"
 
-#: builtin/clone.c:131 builtin/fetch.c:178 builtin/pull.c:215
+#: builtin/clone.c:135 builtin/fetch.c:185 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "aprofundar o histórico de um clone raso, excluindo a revisão"
 
-#: builtin/clone.c:133 builtin/submodule--helper.c:1843
-#: builtin/submodule--helper.c:2352
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "clonar apenas um ramo, HEAD ou --branch"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:139
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 
-#: builtin/clone.c:137
+#: builtin/clone.c:141
 msgid "any cloned submodules will be shallow"
 msgstr "qualquer submódulo clonado será raso"
 
-#: builtin/clone.c:138 builtin/init-db.c:559
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:139 builtin/init-db.c:560
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "separar o repositório git da árvore de trabalho"
 
-#: builtin/clone.c:140
+#: builtin/clone.c:144
 msgid "key=value"
 msgstr "chave=valor"
 
-#: builtin/clone.c:141
+#: builtin/clone.c:145
 msgid "set config inside the new repository"
 msgstr "definir configuração dentro do novo repositório"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "específico do servidor"
 
-#: builtin/clone.c:143 builtin/fetch.c:195 builtin/ls-remote.c:76
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "opção para transmitir"
 
-#: builtin/clone.c:144 builtin/fetch.c:196 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "usar apenas endereços IPv4"
 
-#: builtin/clone.c:146 builtin/fetch.c:198 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "usar apenas endereços IPv6"
 
-#: builtin/clone.c:150
+#: builtin/clone.c:154
 #, fuzzy
 msgid "any cloned submodules will use their remote-tracking branch"
 msgstr "qualquer submódulo clonado será raso"
 
-#: builtin/clone.c:152
+#: builtin/clone.c:156
 msgid "initialize sparse-checkout file to include only files at root"
 msgstr ""
 
-#: builtin/clone.c:288
+#: builtin/clone.c:292
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -12631,42 +13177,42 @@
 "Incapaz adivinhar nome de pasta.\n"
 "Por favor especifique uma pasta na linha de comandos"
 
-#: builtin/clone.c:341
+#: builtin/clone.c:345
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info: Incapaz adicionar sobressalente para '%s': %s\n"
 
-#: builtin/clone.c:414
+#: builtin/clone.c:418
 #, c-format
 msgid "%s exists and is not a directory"
-msgstr "%s existe e não é um diretório"
+msgstr "%s existe e é pasta nenhuma"
 
-#: builtin/clone.c:432
+#: builtin/clone.c:436
 #, fuzzy, c-format
 msgid "failed to start iterator over '%s'"
-msgstr "falha ao escrever para '%s'"
+msgstr "falhou começar iterador em '%s'"
 
-#: builtin/clone.c:463
+#: builtin/clone.c:467
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "falha ao criar a ligação '%s'"
 
-#: builtin/clone.c:467
+#: builtin/clone.c:471
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "falha ao copiar o ficheiro para '%s'"
 
-#: builtin/clone.c:472
+#: builtin/clone.c:476
 #, fuzzy, c-format
 msgid "failed to iterate over '%s'"
 msgstr "falha ao remover '%s'"
 
-#: builtin/clone.c:499
+#: builtin/clone.c:503
 #, c-format
 msgid "done.\n"
 msgstr "concluído.\n"
 
-#: builtin/clone.c:513
+#: builtin/clone.c:517
 #, fuzzy
 msgid ""
 "Clone succeeded, but checkout failed.\n"
@@ -12677,150 +13223,152 @@
 "Pode inspecionar o que foi extraído com 'git status'\n"
 "e repetir a extração com 'git checkout -f HEAD'\n"
 
-#: builtin/clone.c:590
+#: builtin/clone.c:594
 #, c-format
 msgid "Could not find remote branch %s to clone."
-msgstr "Ramo remoto %s não encontrado para clonar."
+msgstr "Incapaz encontrar ramo remoto %s para clonar."
 
-#: builtin/clone.c:709
+#: builtin/clone.c:713
 #, c-format
 msgid "unable to update %s"
-msgstr "não foi possível atualizar %s"
+msgstr "incapaz atualizar %s"
 
-#: builtin/clone.c:757
+#: builtin/clone.c:761
 #, fuzzy
 msgid "failed to initialize sparse-checkout"
 msgstr "falha ao finalizar integração de notas"
 
-#: builtin/clone.c:780
+#: builtin/clone.c:784
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "remote HEAD refere-se a referência inexistente, impossível fazer checkout.\n"
 
-#: builtin/clone.c:812
+#: builtin/clone.c:816
 msgid "unable to checkout working tree"
-msgstr "não foi possível extrair a árvore de trabalho"
+msgstr "incapaz de checkout working tree"
 
-#: builtin/clone.c:887
+#: builtin/clone.c:894
 msgid "unable to write parameters to config file"
-msgstr "não foi possível escrever os parâmetros no ficheiro de configuração"
+msgstr "incapaz escrever parâmetros para ficheiro config"
 
-#: builtin/clone.c:950
+#: builtin/clone.c:957
 msgid "cannot repack to clean up"
-msgstr "não é possível reempacotar para limpar"
+msgstr "incapaz reempacotar para limpar"
 
-#: builtin/clone.c:952
+#: builtin/clone.c:959
 msgid "cannot unlink temporary alternates file"
-msgstr ""
-"não é possível invocar unlink sobre o ficheiro sobressalente temporário"
+msgstr "incapaz unlink ficheiro sobressalente temporário"
 
-#: builtin/clone.c:992 builtin/receive-pack.c:2493
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
-msgstr "Demasiados argumentos."
+msgstr ""
 
-#: builtin/clone.c:996
+#: builtin/clone.c:1005
 msgid "You must specify a repository to clone."
 msgstr "Deve especificar um repositório para clonar."
 
-#: builtin/clone.c:1009
+#: builtin/clone.c:1018
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "as opções --bare e --origin %s são incompatíveis."
 
-#: builtin/clone.c:1012
+#: builtin/clone.c:1021
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare e --separate-git-dir são incompatíveis."
 
-#: builtin/clone.c:1025
+#: builtin/clone.c:1035
 #, c-format
 msgid "repository '%s' does not exist"
-msgstr "o repositório '%s' não existe"
+msgstr "repositório '%s' é inexistente"
 
-#: builtin/clone.c:1029 builtin/fetch.c:1841
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
-msgstr "profundidade %s não é um número positivo"
+msgstr "profundidade %s é número positivo nenhum"
 
-#: builtin/clone.c:1039
+#: builtin/clone.c:1049
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
-msgstr "o caminho de destino '%s' já existe e não é um diretório vazio."
+msgstr "path de destino '%s' já existe e é pasta vazia nenhum."
 
-#: builtin/clone.c:1045
+#: builtin/clone.c:1055
 #, fuzzy, c-format
 msgid "repository path '%s' already exists and is not an empty directory."
-msgstr "o caminho de destino '%s' já existe e não é um diretório vazio."
+msgstr "path de repositório '%s' já existe e é diretório vazio nenhum."
 
-#: builtin/clone.c:1059
+#: builtin/clone.c:1069
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "a árvore de trabalho '%s' já existe."
 
-#: builtin/clone.c:1074 builtin/clone.c:1095 builtin/difftool.c:271
-#: builtin/log.c:1987 builtin/worktree.c:354 builtin/worktree.c:386
+#: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
-msgstr "não foi possível criar os diretórios superiores de '%s'"
+msgstr "incapaz criar as pastas superiores de '%s'"
 
-#: builtin/clone.c:1079
+#: builtin/clone.c:1089
 #, c-format
 msgid "could not create work tree dir '%s'"
-msgstr "não foi possível criar o diretório de árvore de trabalho '%s'"
+msgstr "incapaz criar pasta de work tree '%s'"
 
-#: builtin/clone.c:1099
+#: builtin/clone.c:1109
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
-msgstr "A clonar no repositório nu '%s'...\n"
+msgstr "Clonando em repositório nú '%s'...\n"
 
-#: builtin/clone.c:1101
+#: builtin/clone.c:1111
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonando em '%s'...\n"
 
-#: builtin/clone.c:1125
+#: builtin/clone.c:1135
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
-"clone --recursive não é compatível com ambos --reference e --reference-if-"
-"able"
+"clone --recursive é incompatível com ambos --reference e --reference-if-able"
 
-#: builtin/clone.c:1169 builtin/remote.c:200 builtin/remote.c:705
+#: builtin/clone.c:1188 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
 msgid "'%s' is not a valid remote name"
-msgstr "'%s' não é um nome de remoto válido"
+msgstr "'%s' é nome de remoto inválido"
 
-#: builtin/clone.c:1210
+#: builtin/clone.c:1229
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1212
+#: builtin/clone.c:1231
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1214
+#: builtin/clone.c:1233
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1216
+#: builtin/clone.c:1235
 #, fuzzy
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--depth é ignorado em clones locais; use file:// ."
 
-#: builtin/clone.c:1219
+#: builtin/clone.c:1240
 msgid "source repository is shallow, ignoring --local"
 msgstr "o repositório de origem é raso, --local ignorado"
 
-#: builtin/clone.c:1224
+#: builtin/clone.c:1245
 msgid "--local is ignored"
 msgstr "--local ignorado"
 
-#: builtin/clone.c:1308 builtin/clone.c:1316
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "transporte remoto reportou erro"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
-msgstr "O ramo remoto %s não foi encontrado no repositório a montante %s"
+msgstr "Ramo remoto %s por encontrar em upstream %s"
 
-#: builtin/clone.c:1319
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Parece foi clonado um repositório vazio."
 
@@ -12837,19 +13385,23 @@
 msgstr "esquema a usar"
 
 #: builtin/column.c:30
-msgid "Maximum width"
+#, fuzzy
+msgid "maximum width"
 msgstr "Largura máxima"
 
 #: builtin/column.c:31
-msgid "Padding space on left border"
+#, fuzzy
+msgid "padding space on left border"
 msgstr "Espaço de preenchimento na borda esquerda"
 
 #: builtin/column.c:32
-msgid "Padding space on right border"
+#, fuzzy
+msgid "padding space on right border"
 msgstr "Espaço de preenchimento na borda direita"
 
 #: builtin/column.c:33
-msgid "Padding space between columns"
+#, fuzzy
+msgid "padding space between columns"
 msgstr "Espaço de preenchimento entre colunas"
 
 #: builtin/column.c:51
@@ -12871,16 +13423,16 @@
 #: builtin/commit-graph.c:64
 #, fuzzy, c-format
 msgid "could not find object directory matching %s"
-msgstr "não foi possível ler o objeto %s da ligação simbólica %s"
+msgstr "incapaz encontrar pasta objeto correspondendo %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:184 builtin/log.c:1769
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "dir"
 
 #: builtin/commit-graph.c:81 builtin/commit-graph.c:211
 #: builtin/commit-graph.c:317
-msgid "The object directory to store the graph"
+msgid "the object directory to store the graph"
 msgstr ""
 
 #: builtin/commit-graph.c:83
@@ -12895,7 +13447,7 @@
 #: builtin/commit-graph.c:142
 #, fuzzy, c-format
 msgid "unrecognized --split argument, %s"
-msgstr "argumento não reconhecido: %s"
+msgstr "argumento --split desconhecido, %s"
 
 #: builtin/commit-graph.c:155
 #, fuzzy, c-format
@@ -12903,9 +13455,9 @@
 msgstr "reutilizar o objeto de nota especificado"
 
 #: builtin/commit-graph.c:160
-#, fuzzy, c-format
+#, c-format
 msgid "invalid object: %s"
-msgstr "nome de objeto inválido: %s"
+msgstr ""
 
 #: builtin/commit-graph.c:213
 msgid "start walk at all refs"
@@ -12967,25 +13519,25 @@
 msgid "duplicate parent %s ignored"
 msgstr ""
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:555
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, fuzzy, c-format
 msgid "not a valid object name %s"
-msgstr "%s não é um nome de objeto válido"
+msgstr "nome de objeto inválido %s"
 
 #: builtin/commit-tree.c:93
-#, fuzzy, c-format
+#, c-format
 msgid "git commit-tree: failed to open '%s'"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
 #: builtin/commit-tree.c:96
-#, fuzzy, c-format
+#, c-format
 msgid "git commit-tree: failed to read '%s'"
-msgstr "git write-tree falhou ao escrever uma árvore"
+msgstr ""
 
 #: builtin/commit-tree.c:98
-#, fuzzy, c-format
+#, c-format
 msgid "git commit-tree: failed to close '%s'"
-msgstr "git write-tree falhou ao escrever uma árvore"
+msgstr ""
 
 #: builtin/commit-tree.c:111
 #, fuzzy
@@ -12993,39 +13545,35 @@
 msgstr "número-pai"
 
 #: builtin/commit-tree.c:112
-#, fuzzy
 msgid "id of a parent commit object"
-msgstr "falha ao escrever objeto de commit"
+msgstr ""
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1504 builtin/merge.c:281
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1470
-#: builtin/tag.c:413
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
+#: builtin/tag.c:456
 msgid "message"
 msgstr "mensagem"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1504
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "mensagem de commit"
 
 #: builtin/commit-tree.c:118
-#, fuzzy
 msgid "read commit log message from file"
-msgstr "ler mensagem de um ficheiro"
+msgstr ""
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1516 builtin/merge.c:298
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "assinar o commit com GPG"
 
 #: builtin/commit-tree.c:133
-#, fuzzy
 msgid "must give exactly one tree"
-msgstr "É necessário exatamente um intervalo."
+msgstr ""
 
 #: builtin/commit-tree.c:140
-#, fuzzy
 msgid "git commit-tree: failed to read"
-msgstr "git write-tree falhou ao escrever uma árvore"
+msgstr ""
 
 #: builtin/commit.c:41
 msgid "git commit [<options>] [--] <pathspec>..."
@@ -13083,144 +13631,129 @@
 "\n"
 msgstr ""
 
-#: builtin/commit.c:312
+#: builtin/commit.c:324
 msgid "failed to unpack HEAD tree object"
 msgstr "falha ao descompactar o objeto árvore HEAD"
 
-#: builtin/commit.c:348
+#: builtin/commit.c:360
 #, fuzzy
 msgid "--pathspec-from-file with -a does not make sense"
-msgstr "Indicar caminhos com -a não faz sentido."
+msgstr "--pathspe de ficheiro com -a faz sentido nenhum."
 
-#: builtin/commit.c:361
+#: builtin/commit.c:374
 msgid "No paths with --include/--only does not make sense."
-msgstr "As opções --include/--only não fazem sentido sem indicar caminhos."
+msgstr "--include/--only fazem sentido nenhum sem indicar paths."
 
-#: builtin/commit.c:373
+#: builtin/commit.c:386
 msgid "unable to create temporary index"
-msgstr "não foi possível criar índice temporário"
+msgstr "incapaz criar index temporário"
 
-#: builtin/commit.c:382
+#: builtin/commit.c:395
 msgid "interactive add failed"
 msgstr "falha ao adicionar interativamente"
 
-#: builtin/commit.c:397
+#: builtin/commit.c:410
 msgid "unable to update temporary index"
-msgstr "não é possível atualizar o índice temporário"
+msgstr "incapaz atualizar index temporário"
 
-#: builtin/commit.c:399
+#: builtin/commit.c:412
 msgid "Failed to update main cache tree"
 msgstr "Falha ao atualizar a árvore de cache principal"
 
-#: builtin/commit.c:424 builtin/commit.c:447 builtin/commit.c:495
+#: builtin/commit.c:437 builtin/commit.c:460 builtin/commit.c:508
 msgid "unable to write new_index file"
-msgstr "não é possível escrever o ficheiro new_index"
+msgstr "incapaz escrever ficheiro new_index"
 
-#: builtin/commit.c:476
+#: builtin/commit.c:489
 msgid "cannot do a partial commit during a merge."
-msgstr "não é possível fazer um commit parcial durante uma integração."
+msgstr "incapaz fazer commit parcial durante uma junção."
 
-#: builtin/commit.c:478
+#: builtin/commit.c:491
 msgid "cannot do a partial commit during a cherry-pick."
-msgstr "não é possível fazer um commit parcial durante um cherry-pick."
+msgstr "incapaz fazer commit parcial durante um cherry-pick."
 
-#: builtin/commit.c:480
+#: builtin/commit.c:493
 #, fuzzy
 msgid "cannot do a partial commit during a rebase."
-msgstr "não é possível fazer um commit parcial durante uma integração."
+msgstr "incapaz fazer commit parcial durante um rebase."
 
-#: builtin/commit.c:488
+#: builtin/commit.c:501
 msgid "cannot read the index"
-msgstr "não é possível ler o índice"
+msgstr "incapaz ler o index"
 
-#: builtin/commit.c:507
+#: builtin/commit.c:520
 msgid "unable to write temporary index file"
-msgstr "não é possível escrever ficheiro de índice temporário"
+msgstr "incapaz escrever ficheiro de index temporário"
 
-#: builtin/commit.c:605
+#: builtin/commit.c:618
 #, c-format
 msgid "commit '%s' lacks author header"
-msgstr "o commit '%s' não tem cabeçalho de autor"
+msgstr "commit '%s' falta cabeçalho de autor"
 
-#: builtin/commit.c:607
+#: builtin/commit.c:620
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "o commit '%s' tem a linha de autor malformada"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:639
 msgid "malformed --author parameter"
 msgstr "parâmetro --author malformado"
 
-#: builtin/commit.c:679
+#: builtin/commit.c:692
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
 msgstr ""
-"não foi possível selecionar um carácter de comentário que\n"
-"não estivesse já a ser usado na mensagem de commit atual"
+"incapaz selecionar um carácter de comentário fica por usar\n"
+"na mensagem de commit atual"
 
-#: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1097
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
-msgstr "não foi possível consultar o commit %s"
+msgstr "incapaz consultar commit %s"
 
-#: builtin/commit.c:729 builtin/shortlog.c:425
+#: builtin/commit.c:758 builtin/shortlog.c:413
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(a ler mensagem de log da entrada padrão)\n"
 
-#: builtin/commit.c:731
+#: builtin/commit.c:760
 msgid "could not read log from standard input"
-msgstr "não foi possível ler o log da entrada padrão"
+msgstr "incapaz ler log da entrada padrão"
 
-#: builtin/commit.c:735
+#: builtin/commit.c:764
 #, c-format
 msgid "could not read log file '%s'"
-msgstr "não é possível ler o ficheiro de log '%s'"
+msgstr "incapaz ler ficheiro de log '%s'"
 
-#: builtin/commit.c:766 builtin/commit.c:782
+#: builtin/commit.c:801
+#, fuzzy, c-format
+msgid "cannot combine -m with --fixup:%s"
+msgstr "incapaz de combinar '--root' com '--fork-point'"
+
+#: builtin/commit.c:813 builtin/commit.c:829
 msgid "could not read SQUASH_MSG"
-msgstr "não foi possível ler SQUASH_MSG"
+msgstr "incapaz ler SQUASH_MSG"
 
-#: builtin/commit.c:773
+#: builtin/commit.c:820
 msgid "could not read MERGE_MSG"
-msgstr "não foi possível ler MERGE_MSG"
+msgstr "incapaz ler MERGE_MSG"
 
-#: builtin/commit.c:833
+#: builtin/commit.c:880
 msgid "could not write commit template"
-msgstr "não foi possível escrever o modelo de commit"
+msgstr "incapaz escrever o modelo de commit"
 
-#: builtin/commit.c:853
-#, fuzzy
+#: builtin/commit.c:893
+#, fuzzy, c-format
 msgid ""
-"\n"
-"It looks like you may be committing a merge.\n"
-"If this is not correct, please run\n"
-"\tgit update-ref -d MERGE_HEAD\n"
-"and try again.\n"
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
 msgstr ""
-"\n"
-"Parece que está a submeter uma integração.\n"
-"Se não for o caso, remova o ficheiro\n"
-"\tgit update-ref -d MERGE_HEAD\n"
-"e tenta de novo.\n"
+"Introduza a mensagem de commit das suas alterações.\n"
+"Linhas começadas com '%c' serão ignoradas, e uma mensagem vazia\n"
+"aborta o commit.\n"
 
-#: builtin/commit.c:858
-#, fuzzy
-msgid ""
-"\n"
-"It looks like you may be committing a cherry-pick.\n"
-"If this is not correct, please run\n"
-"\tgit update-ref -d CHERRY_PICK_HEAD\n"
-"and try again.\n"
-msgstr ""
-"\n"
-"Parece que está a submeter um cherry-pick.\n"
-"Se não é o caso, remova o ficheiro\n"
-"\tgit update-ref -d CHERRY_PICK_HEAD\n"
-"e tenta de novo.\n"
-
-#: builtin/commit.c:868
+#: builtin/commit.c:895
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -13230,7 +13763,17 @@
 "Linhas começadas com '%c' serão ignoradas, e uma mensagem vazia\n"
 "aborta o commit.\n"
 
-#: builtin/commit.c:876
+#: builtin/commit.c:899
+#, fuzzy, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Introduzia a mensagem de commit das suas alterações.\n"
+"Linhas começadas com '%c' serão mantidas; pode removê-las se o desejar.\n"
+"Uma mensagem vazia aborta o commit.\n"
+
+#: builtin/commit.c:903
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -13241,163 +13784,223 @@
 "Linhas começadas com '%c' serão mantidas; pode removê-las se o desejar.\n"
 "Uma mensagem vazia aborta o commit.\n"
 
-#: builtin/commit.c:893
+#: builtin/commit.c:915
+#, fuzzy
+msgid ""
+"\n"
+"It looks like you may be committing a merge.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"and try again.\n"
+msgstr ""
+"\n"
+"Parece que estás a fazer commit a uma junção.\n"
+"Se isto é incorreto, remove o ficheiro\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"e tenta de novo.\n"
+
+#: builtin/commit.c:920
+#, fuzzy
+msgid ""
+"\n"
+"It looks like you may be committing a cherry-pick.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"and try again.\n"
+msgstr ""
+"\n"
+"Parece que está a fazer commit a um cherry-pick.\n"
+"Se é incorreto, remove o ficheiro\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"e tenta de novo.\n"
+
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAutor:    %.*s <%.*s>"
 
-#: builtin/commit.c:901
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sData:      %s"
 
-#: builtin/commit.c:908
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sCommitter: %.*s <%.*s>"
 
-#: builtin/commit.c:926
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Incapaz ler index"
 
-#: builtin/commit.c:997
+#: builtin/commit.c:1025
+#, fuzzy
+msgid "unable to pass trailers to --trailers"
+msgstr "incapaz processar cabeçalho de %s"
+
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Erro ao construir árvores"
 
-#: builtin/commit.c:1011 builtin/tag.c:276
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Indique a mensagem usando apenas as opções -m ou -F.\n"
 
-#: builtin/commit.c:1055
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
-"--author '%s' não é do tipo 'Nome <email>' e não corresponde a um autor "
-"existente"
+"--author '%s' é diferente 'Nome <email>' e corresponde a um autor inexistente"
 
-#: builtin/commit.c:1069
+#: builtin/commit.c:1137
 #, fuzzy, c-format
 msgid "Invalid ignored mode '%s'"
-msgstr "Modo inválido de ficheiros não controlados '%s'"
+msgstr "Modo de ignorar inválido '%s'"
 
-#: builtin/commit.c:1087 builtin/commit.c:1331
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
-msgstr "Modo inválido de ficheiros não controlados '%s'"
+msgstr "Modo inválido de ficheiros por seguir '%s'"
 
-#: builtin/commit.c:1127
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long e -z são incompatíveis"
 
-#: builtin/commit.c:1171
+#: builtin/commit.c:1226
+#, fuzzy
+msgid "You are in the middle of a merge -- cannot reword."
+msgstr "Estás no meio de junção -- incapaz emendar."
+
+#: builtin/commit.c:1228
+#, fuzzy
+msgid "You are in the middle of a cherry-pick -- cannot reword."
+msgstr "Estás no meio de cherry-pick -- incapaz emendar."
+
+#: builtin/commit.c:1231
+#, c-format
+msgid "cannot combine reword option of --fixup with path '%s'"
+msgstr ""
+
+#: builtin/commit.c:1233
+msgid ""
+"reword option of --fixup is mutually exclusive with --patch/--interactive/--"
+"all/--include/--only"
+msgstr ""
+
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Usar ambos --reset-author e --author faz sentido nenhum"
 
-#: builtin/commit.c:1180
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Tens nada para emendar."
 
-#: builtin/commit.c:1183
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
-msgstr "Integração em curso -- não é possível emendar."
+msgstr "Estás no meio de junção -- incapaz emendar."
 
-#: builtin/commit.c:1185
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
-msgstr "Cherry-pick em curso -- não é possível emendar."
+msgstr "Estás no meio de cherry-pick -- incapaz emendar."
 
-#: builtin/commit.c:1187
+#: builtin/commit.c:1268
 #, fuzzy
 msgid "You are in the middle of a rebase -- cannot amend."
-msgstr "Integração em curso -- não é possível emendar."
+msgstr "Estás no meio de rebase -- incapaz emendar."
 
-#: builtin/commit.c:1190
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
-msgstr "As opções --squash e --fixup não podem ser usadas juntas"
+msgstr "Opções --squash e --fixup incapaz serem usadas juntas"
 
-#: builtin/commit.c:1200
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Apenas um entre -c/-C/-F/--fixup pode ser usado."
 
-#: builtin/commit.c:1202
+#: builtin/commit.c:1283
 #, fuzzy
 msgid "Option -m cannot be combined with -c/-C/-F."
-msgstr "A opção -m não pode ser combinada com -c/C/-F/--fixup."
+msgstr "Opção -m incapaz ser combinada com -c/C/-F."
 
-#: builtin/commit.c:1211
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author só pode ser usado com -C, -c ou --amend."
 
-#: builtin/commit.c:1229
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Apenas um entre --include/--only/--all/--interactive/--patch pode ser usado."
 
-#: builtin/commit.c:1235
+#: builtin/commit.c:1338
+#, fuzzy, c-format
+msgid "unknown option: --fixup=%s:%s"
+msgstr "desconheço opção: %s\n"
+
+#: builtin/commit.c:1352
 #, fuzzy, c-format
 msgid "paths '%s ...' with -a does not make sense"
-msgstr "Indicar caminhos com -a não faz sentido."
+msgstr "paths '%s ...' com -a faz sentido nenhum"
 
-#: builtin/commit.c:1366 builtin/commit.c:1527
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "mostrar status de forma concisa"
 
-#: builtin/commit.c:1368 builtin/commit.c:1529
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "mostrar informação do ramo"
 
-#: builtin/commit.c:1370
+#: builtin/commit.c:1487
 #, fuzzy
 msgid "show stash information"
 msgstr "mostrar informação do ramo"
 
-#: builtin/commit.c:1372 builtin/commit.c:1531
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr ""
 
-#: builtin/commit.c:1374
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "versão"
 
-#: builtin/commit.c:1374 builtin/commit.c:1533 builtin/push.c:560
-#: builtin/worktree.c:725
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "saída inteligível por máquina"
 
-#: builtin/commit.c:1377 builtin/commit.c:1535
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "apresentar status em formato longo (predefinição)"
 
-#: builtin/commit.c:1380 builtin/commit.c:1538
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "terminar entradas com NUL"
 
-#: builtin/commit.c:1382 builtin/commit.c:1386 builtin/commit.c:1541
-#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
-#: builtin/fast-export.c:1205 builtin/rebase.c:1406 parse-options.h:336
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
+#: builtin/fast-export.c:1198 builtin/fast-export.c:1201
+#: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "modo"
 
-#: builtin/commit.c:1383 builtin/commit.c:1541
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
-"mostrar ficheiros não controlados, modo é opcional: all, normal, no. "
-"(Predefinição: all)"
+"mostrar ficheiros por seguir, modo opcional: all, normal, no. (Predefinição: "
+"all)"
 
-#: builtin/commit.c:1387
+#: builtin/commit.c:1504
 #, fuzzy
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
-"mostrar ficheiros não controlados, modo é opcional: all, normal, no. "
-"(Predefinição: all)"
+"mostrar ficheiros ignorados, modo opcional: traditional, matching, no. "
+"(Predefinição: tradicional)"
 
-#: builtin/commit.c:1389 parse-options.h:192
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "quando"
 
-#: builtin/commit.c:1390
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13405,182 +14008,205 @@
 "ignorar alterações em submódulos, quando é opcional: all, dirty, untracked. "
 "(Predefinição: all)"
 
-#: builtin/commit.c:1392
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
-msgstr "listar ficheiros não controlados em colunas"
+msgstr "listar ficheiros por seguir em colunas"
 
-#: builtin/commit.c:1393
+#: builtin/commit.c:1510
 #, fuzzy
 msgid "do not detect renames"
-msgstr "não consultar remotos"
+msgstr "detecção renomeação nenhuma"
 
-#: builtin/commit.c:1395
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr ""
 
-#: builtin/commit.c:1415
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "suprimir o resumo depois de submeter com sucesso"
 
-#: builtin/commit.c:1498
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "mostrar diff no modelo da mensagem de commit"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Opções de mensagem de commit"
 
-#: builtin/commit.c:1501 builtin/merge.c:285 builtin/tag.c:415
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
-msgstr "ler mensagem de um ficheiro"
+msgstr "ler mensagem de ficheiro"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "autor"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "substituir autor do commit"
 
-#: builtin/commit.c:1503 builtin/gc.c:542
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "data"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "substituir data do commit"
 
-#: builtin/commit.c:1505 builtin/commit.c:1506 builtin/commit.c:1507
-#: builtin/commit.c:1508 parse-options.h:328 ref-filter.h:87
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
+#: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "commit"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "reutilizar e editar a mensagem de um commit especificado"
 
-#: builtin/commit.c:1506
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "reutilizar a mensagem de um commit especificado"
 
-#: builtin/commit.c:1507
-msgid "use autosquash formatted message to fixup specified commit"
+#. TRANSLATORS: Leave "[(amend|reword):]" as-is,
+#. and only translate <commit>.
+#.
+#: builtin/commit.c:1631
+#, fuzzy
+msgid "[(amend|reword):]commit"
+msgstr "emendar o commit anterior"
+
+#: builtin/commit.c:1631
+#, fuzzy
+msgid ""
+"use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "usar mensagem com formato autosquash para corrigir o commit especificado"
 
-#: builtin/commit.c:1508
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "usar mensagem com formato autosquash para esmagar o commit especificado"
 
-#: builtin/commit.c:1509
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "agora sou eu o autor do commit (usado com C/-c/--amend)"
 
-#: builtin/commit.c:1510 builtin/log.c:1744 builtin/merge.c:301
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
+msgid "trailer"
+msgstr "terminador"
+
+#: builtin/commit.c:1634
+msgid "add custom trailer(s)"
+msgstr ""
+
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 #, fuzzy
 msgid "add a Signed-off-by trailer"
 msgstr "adicionar Signed-off-by:"
 
-#: builtin/commit.c:1511
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "usar ficheiro de modelo especificado"
 
-#: builtin/commit.c:1512
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "forçar edição do commit"
 
-#: builtin/commit.c:1514
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "incluir status no modelo da mensagem de commit"
 
-#: builtin/commit.c:1519
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Opções de conteúdo do commit"
 
-#: builtin/commit.c:1520
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "submeter todos os ficheiros alterados"
 
-#: builtin/commit.c:1521
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "adicionar ficheiros especificados ao índice para submeter"
 
-#: builtin/commit.c:1522
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "adicionar ficheiros interativamente"
 
-#: builtin/commit.c:1523
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "adicionar alterações interativamente"
 
-#: builtin/commit.c:1524
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "submeter somente os ficheiros especificados"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "ignorar pre-commit e commit-msg hooks"
 
-#: builtin/commit.c:1526
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "mostrar o que seria submetido"
 
-#: builtin/commit.c:1539
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "emendar o commit anterior"
 
-#: builtin/commit.c:1540
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "ignorar post-rewrite hook"
 
-#: builtin/commit.c:1547
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "aceitar o registo duma alteração vazia"
 
-#: builtin/commit.c:1549
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "aceitar o registo duma alteração com uma mensagem vazia"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
-msgstr "Ficheiro MERGE_HEAD corrompido (%s)"
+msgstr "Ficheiro MERGE_HEAD roto (%s)"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
-msgstr "não foi possível ler MERGE_MODE"
+msgstr "incapaz ler MERGE_MODE"
 
-#: builtin/commit.c:1650
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
-msgstr "não foi possível ler a mensagem de commit: %s"
+msgstr "incapaz ler mensagem de commit: %s"
 
-#: builtin/commit.c:1657
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "A abortar o commit uma vez que a mensagem de commit está vazia.\n"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
-msgstr "A abortar o commit; não editou a mensagem.\n"
+msgstr "Abortando commit; mensagem ficou por editar.\n"
 
-#: builtin/commit.c:1696
+#: builtin/commit.c:1801
+#, fuzzy, c-format
+msgid "Aborting commit due to empty commit message body.\n"
+msgstr "A abortar o commit uma vez que a mensagem de commit está vazia.\n"
+
+#: builtin/commit.c:1837
 #, fuzzy
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
 "not exceeded, and then \"git restore --staged :/\" to recover."
 msgstr ""
-"O repositório foi atualizado, mas não foi possível escrever\n"
-"o ficheiro new_index. Verifique se o disco não está cheio\n"
-"e que a quota não foi excedida e execute \"git reset HEAD\" para recuperar."
+"Repositório foi atualizado, mas incapaz escrever ficheiro new_index.\n"
+"Verifica se tens espaço em disco e que a quota está por preencher,\n"
+"e executa \"git restore --staged :/\" para recuperar."
 
 #: builtin/config.c:11
 msgid "git config [<options>]"
@@ -13589,7 +14215,7 @@
 #: builtin/config.c:109 builtin/env--helper.c:27
 #, fuzzy, c-format
 msgid "unrecognized --type argument, %s"
-msgstr "argumento não reconhecido: %s"
+msgstr "argumento --type desconhecido: %s"
 
 #: builtin/config.c:121
 #, fuzzy
@@ -13610,12 +14236,11 @@
 
 #: builtin/config.c:133
 msgid "use repository config file"
-msgstr "usar ficheiro de configuração do repositório"
+msgstr ""
 
 #: builtin/config.c:134
-#, fuzzy
 msgid "use per-worktree config file"
-msgstr "usar ficheiro de configuração do repositório"
+msgstr ""
 
 #: builtin/config.c:135
 msgid "use given config file"
@@ -13678,7 +14303,7 @@
 
 #: builtin/config.c:147
 msgid "remove a section: name"
-msgstr "remover uma secção: nome"
+msgstr "remove secção: nome"
 
 #: builtin/config.c:148
 msgid "list all"
@@ -13784,18 +14409,18 @@
 msgstr "chave inválida: %s"
 
 #: builtin/config.c:377
-#, fuzzy, c-format
+#, c-format
 msgid "failed to format default config value: %s"
-msgstr "falha ao criar o ficheiro %s"
+msgstr ""
 
 #: builtin/config.c:441
 #, fuzzy, c-format
 msgid "cannot parse color '%s'"
-msgstr "não é possível abrir o ficheiro '%s'"
+msgstr "incapaz processar cor '%s'"
 
 #: builtin/config.c:483
 msgid "unable to parse default color value"
-msgstr "não é possível analisar o valor de cor por omissão"
+msgstr "incapaz processar valor de cor padrão"
 
 #: builtin/config.c:536 builtin/config.c:833
 #, fuzzy
@@ -13832,19 +14457,17 @@
 msgstr ""
 
 #: builtin/config.c:658
-#, fuzzy
 msgid "--local can only be used inside a git repository"
-msgstr "--cached fora de um repositório"
+msgstr ""
 
 #: builtin/config.c:660
-#, fuzzy
 msgid "--blob can only be used inside a git repository"
-msgstr "--cached fora de um repositório"
+msgstr ""
 
 #: builtin/config.c:662
 #, fuzzy
 msgid "--worktree can only be used inside a git repository"
-msgstr "'%s' não é reconhecido como um repositório git"
+msgstr "--worktree apenas pode ser usado dentro repositório git"
 
 #: builtin/config.c:684
 msgid "$HOME not set"
@@ -13886,12 +14509,11 @@
 #: builtin/config.c:822
 #, fuzzy, c-format
 msgid "unable to read config file '%s'"
-msgstr "não é possível ler o ficheiro de assinatura '%s'"
+msgstr "incapaz ler ficheiro config '%s'"
 
 #: builtin/config.c:825
-#, fuzzy
 msgid "error processing config file(s)"
-msgstr "usar ficheiro de configuração do repositório"
+msgstr ""
 
 #: builtin/config.c:835
 #, fuzzy
@@ -13906,7 +14528,7 @@
 #: builtin/config.c:851
 #, c-format
 msgid "cannot create configuration file %s"
-msgstr "não é possível criar o ficheiro de configuração %s"
+msgstr "incapaz criar ficheiro de configuração %s"
 
 #: builtin/config.c:864
 #, c-format
@@ -13914,13 +14536,13 @@
 "cannot overwrite multiple values with a single value\n"
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr ""
-"não é possível substituir múltiplos valores por um único valor\n"
+"incapaz sobrescrever múltiplos valores com um único valor\n"
 "       Usa uma regexp, --add ou --replace-all para alterar %s."
 
 #: builtin/config.c:943 builtin/config.c:954
 #, fuzzy, c-format
 msgid "no such section: %s"
-msgstr "referência inexistente %s"
+msgstr "secção inexistente: %s"
 
 #: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
@@ -13930,7 +14552,7 @@
 msgid "print sizes in human readable format"
 msgstr "imprimir dimensões em formato inteligível por humanos"
 
-#: builtin/credential-cache--daemon.c:226
+#: builtin/credential-cache--daemon.c:227
 #, c-format
 msgid ""
 "The permissions on your socket directory are too loose; other\n"
@@ -13944,11 +14566,11 @@
 "\n"
 "\tchmod 0700 %s"
 
-#: builtin/credential-cache--daemon.c:275
+#: builtin/credential-cache--daemon.c:276
 msgid "print debugging messages to stderr"
 msgstr "imprimir mensagens de depuração no stderr"
 
-#: builtin/credential-cache--daemon.c:315
+#: builtin/credential-cache--daemon.c:316
 msgid "credential-cache--daemon unavailable; no unix socket support"
 msgstr ""
 
@@ -13959,7 +14581,7 @@
 #: builtin/credential-store.c:66
 #, fuzzy, c-format
 msgid "unable to get credential storage lock in %d ms"
-msgstr "não é possível de obter o diretório de trabalho atual"
+msgstr "incapaz obter bloqueio de armazenamento de credenciais em %d ms"
 
 #: builtin/describe.c:26
 msgid "git describe [<options>] [<commit-ish>...]"
@@ -13984,7 +14606,7 @@
 #: builtin/describe.c:277
 #, c-format
 msgid "annotated tag %s not available"
-msgstr "a tag anotada %s não está disponível"
+msgstr "tag anotada %s está indisponível"
 
 #: builtin/describe.c:281
 #, fuzzy, c-format
@@ -14046,12 +14668,12 @@
 #: builtin/describe.c:532
 #, c-format
 msgid "Not a valid object name %s"
-msgstr "%s não é um nome de objeto válido"
+msgstr "%s é nome de objeto inválido"
 
 #: builtin/describe.c:540
 #, fuzzy, c-format
 msgid "%s is neither a commit nor blob"
-msgstr "'%s' não é um commit"
+msgstr "'%s' é nem commit nem blob"
 
 #: builtin/describe.c:554
 msgid "find the tag that comes after the commit"
@@ -14067,7 +14689,7 @@
 
 #: builtin/describe.c:557
 msgid "use any tag, even unannotated"
-msgstr "usar uma tag qualquer, mesmo não anotada"
+msgstr "usa qualquer tag, mesmo uma por anotar"
 
 #: builtin/describe.c:558
 msgid "always use long format"
@@ -14091,7 +14713,7 @@
 
 #: builtin/describe.c:568
 msgid "do not consider tags matching <pattern>"
-msgstr "não considerar tags que correspondam ao <padrão>"
+msgstr "descarta tags que correspondam ao <padrão>"
 
 #: builtin/describe.c:570 builtin/name-rev.c:535
 msgid "show abbreviated commit object as fallback"
@@ -14119,179 +14741,177 @@
 
 #: builtin/describe.c:622
 msgid "No names found, cannot describe anything."
-msgstr "Nenhum nome encontrado, não é possível descrever."
+msgstr "Nenhum nome encontrado, incapaz descrever qualquer coisa."
 
 #: builtin/describe.c:673
 msgid "--dirty is incompatible with commit-ishes"
-msgstr "--dirty é incompatível com commits ou semelhantes"
+msgstr "--dirty é incompatível com mnemónicas"
 
 #: builtin/describe.c:675
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken é incompatível com commits ou semelhantes"
 
 #: builtin/diff-tree.c:155
-#, fuzzy
 msgid "--stdin and --merge-base are mutually exclusive"
-msgstr "-b, -B e --orphan são mutuamente exclusivos"
+msgstr ""
 
 #: builtin/diff-tree.c:157
 msgid "--merge-base only works with two commits"
 msgstr ""
 
-#: builtin/diff.c:91
+#: builtin/diff.c:92
 #, c-format
 msgid "'%s': not a regular file or symlink"
-msgstr "'%s': não é um ficheiro regular nem uma ligação simbólica"
+msgstr "'%s': é ficheiro normal nenhum e é ligação simbólica nenhuma"
 
-#: builtin/diff.c:258
+#: builtin/diff.c:259
 #, c-format
 msgid "invalid option: %s"
-msgstr "opção inválida: %s"
+msgstr ""
 
-#: builtin/diff.c:375
+#: builtin/diff.c:376
 #, c-format
 msgid "%s...%s: no merge base"
 msgstr ""
 
-#: builtin/diff.c:485
+#: builtin/diff.c:486
 msgid "Not a git repository"
 msgstr "É repositório git nenhum"
 
-#: builtin/diff.c:530 builtin/grep.c:681
+#: builtin/diff.c:532 builtin/grep.c:684
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objeto inválido '%s' fornecido."
 
-#: builtin/diff.c:541
+#: builtin/diff.c:543
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "mais do que dois blobs fornecidos: '%s'"
 
-#: builtin/diff.c:546
+#: builtin/diff.c:548
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objeto sem tratamento '%s' fornecido."
 
-#: builtin/diff.c:580
+#: builtin/diff.c:582
 #, c-format
 msgid "%s...%s: multiple merge bases, using %s"
 msgstr ""
 
-#: builtin/difftool.c:30
+#: builtin/difftool.c:31
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<opções>] [<commit> [<commit>]] [--] [<caminho>...]"
 
-#: builtin/difftool.c:260
+#: builtin/difftool.c:261
 #, c-format
 msgid "failed: %d"
 msgstr "falha: %d"
 
-#: builtin/difftool.c:302
+#: builtin/difftool.c:303
 #, c-format
 msgid "could not read symlink %s"
-msgstr "não foi possível ler a ligação simbólica %s"
+msgstr "incapaz ler ligação simbólica %s"
 
-#: builtin/difftool.c:304
+#: builtin/difftool.c:305
 #, c-format
 msgid "could not read symlink file %s"
-msgstr "não foi possível ler o ficheiro de ligação simbólica %s"
+msgstr "incapaz ler ficheiro de ligação simbólica %s"
 
-#: builtin/difftool.c:312
+#: builtin/difftool.c:313
 #, c-format
 msgid "could not read object %s for symlink %s"
-msgstr "não foi possível ler o objeto %s da ligação simbólica %s"
+msgstr "incapaz ler o objeto %s para ligação simbólica %s"
 
-#: builtin/difftool.c:412
+#: builtin/difftool.c:413
 msgid ""
 "combined diff formats('-c' and '--cc') are not supported in\n"
 "directory diff mode('-d' and '--dir-diff')."
 msgstr ""
-"formatos diff combinado('-c' e '--cc') não são suportados em\n"
-"modo diff diretório ('-d' e '--dir-diff')."
+"formatos diff combinado('-c' e '--cc') são insustentados em\n"
+"modo diff pasta('-d' e '--dir-diff')."
 
-#: builtin/difftool.c:633
+#: builtin/difftool.c:637
 #, c-format
 msgid "both files modified: '%s' and '%s'."
 msgstr "ambos os ficheiros modificados: '%s' e '%s'."
 
-#: builtin/difftool.c:635
+#: builtin/difftool.c:639
 msgid "working tree file has been left."
 msgstr "ficheiro de árvore de trabalho foi deixado."
 
-#: builtin/difftool.c:646
+#: builtin/difftool.c:650
 #, c-format
 msgid "temporary files exist in '%s'."
 msgstr "existem ficheiros temporários em '%s'."
 
-#: builtin/difftool.c:647
+#: builtin/difftool.c:651
 msgid "you may want to cleanup or recover these."
 msgstr "pode querer limpar ou recuperá-los."
 
-#: builtin/difftool.c:696
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "use 'diff.guitool' em vez de 'diff.tool'"
 
-#: builtin/difftool.c:698
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "efetuar diff diretório completo"
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
-msgstr "não perguntar antes de lançar uma ferramenta diff"
+msgstr "deixar de perguntar antes de lançar ferramenta diff"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "usar symlinks no modi dir-diff"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:709
 #, fuzzy
 msgid "tool"
-msgstr "<ferramenta>"
+msgstr "ferramenta"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "usar a ferramenta diff especificada"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "imprimir uma lista de ferramentas diff que podem ser usadas com '--tool'"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
 "fazer com que 'git-difftool' termine quando uma ferramenta diff invocada "
-"retorna um código de saída não nulo"
+"retorna um código de saída diferente de zero"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "especificar um comando personalizado para ver diffs"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr ""
 
-#: builtin/difftool.c:731
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr ""
 
-#: builtin/difftool.c:738
-#, fuzzy
-msgid "--dir-diff is incompatible with --no-index"
-msgstr "--dirty é incompatível com commits ou semelhantes"
-
 #: builtin/difftool.c:741
 #, fuzzy
-msgid "--gui, --tool and --extcmd are mutually exclusive"
-msgstr "-b, -B e --detach são mutuamente exclusivos"
+msgid "--dir-diff is incompatible with --no-index"
+msgstr "--dir-diff é incompatível com --no-index"
 
-#: builtin/difftool.c:749
+#: builtin/difftool.c:744
+msgid "--gui, --tool and --extcmd are mutually exclusive"
+msgstr ""
+
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "<ferramenta> nenhuma dada a --tool=<ferramenta>"
 
-#: builtin/difftool.c:756
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "<cmd> nenhum dado a --extcmd=<cmd>"
 
@@ -14331,106 +14951,113 @@
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1177
 msgid "--anonymize-map token cannot be empty"
 msgstr ""
 
-#: builtin/fast-export.c:1198
+#: builtin/fast-export.c:1197
 msgid "show progress after <n> objects"
 msgstr "mostrar progresso depois de <n> objetos"
 
-#: builtin/fast-export.c:1200
+#: builtin/fast-export.c:1199
 msgid "select handling of signed tags"
 msgstr "selecionar o tratamento de tags assinadas"
 
-#: builtin/fast-export.c:1203
+#: builtin/fast-export.c:1202
 msgid "select handling of tags that tag filtered objects"
 msgstr "selecionar o tratamento de tags que apontem para objetos filtrados"
 
-#: builtin/fast-export.c:1206
+#: builtin/fast-export.c:1205
 #, fuzzy
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "selecionar o tratamento de tags que apontem para objetos filtrados"
 
-#: builtin/fast-export.c:1209
-msgid "Dump marks to this file"
+#: builtin/fast-export.c:1208
+#, fuzzy
+msgid "dump marks to this file"
 msgstr "Capturar marcas neste ficheiro"
 
-#: builtin/fast-export.c:1211
-msgid "Import marks from this file"
-msgstr "Importar marcas deste ficheiro"
-
-#: builtin/fast-export.c:1215
+#: builtin/fast-export.c:1210
 #, fuzzy
-msgid "Import marks from this file if it exists"
+msgid "import marks from this file"
 msgstr "Importar marcas deste ficheiro"
 
-#: builtin/fast-export.c:1217
-msgid "Fake a tagger when tags lack one"
-msgstr "Inventar um autor de tag para tags que não tenham um"
+#: builtin/fast-export.c:1214
+#, fuzzy
+msgid "import marks from this file if it exists"
+msgstr "Importar marcas deste ficheiro"
 
-#: builtin/fast-export.c:1219
-msgid "Output full tree for each commit"
+#: builtin/fast-export.c:1216
+#, fuzzy
+msgid "fake a tagger when tags lack one"
+msgstr "Falsear um \"tageador\" para quando falte um às tags"
+
+#: builtin/fast-export.c:1218
+#, fuzzy
+msgid "output full tree for each commit"
 msgstr "Mostrar a árvore completa para cada commit"
 
-#: builtin/fast-export.c:1221
-msgid "Use the done feature to terminate the stream"
+#: builtin/fast-export.c:1220
+#, fuzzy
+msgid "use the done feature to terminate the stream"
 msgstr "Usar a funcionalidade done para terminar o fluxo"
 
-#: builtin/fast-export.c:1222
-msgid "Skip output of blob data"
+#: builtin/fast-export.c:1221
+#, fuzzy
+msgid "skip output of blob data"
 msgstr "Ignorar a exibição de dados de blob"
 
-#: builtin/fast-export.c:1223 builtin/log.c:1816
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "especificador de referência"
 
-#: builtin/fast-export.c:1224
-msgid "Apply refspec to exported refs"
+#: builtin/fast-export.c:1223
+#, fuzzy
+msgid "apply refspec to exported refs"
 msgstr "Aplicar o especificador de referência a referências exportadas"
 
-#: builtin/fast-export.c:1225
+#: builtin/fast-export.c:1224
 msgid "anonymize output"
 msgstr "anonimizar saída"
 
-#: builtin/fast-export.c:1226
+#: builtin/fast-export.c:1225
 msgid "from:to"
 msgstr ""
 
-#: builtin/fast-export.c:1227
+#: builtin/fast-export.c:1226
 msgid "convert <from> to <to> in anonymized output"
 msgstr ""
 
-#: builtin/fast-export.c:1230
-msgid "Reference parents which are not in fast-export stream by object id"
+#: builtin/fast-export.c:1229
+msgid "reference parents which are not in fast-export stream by object id"
 msgstr ""
 
-#: builtin/fast-export.c:1232
-msgid "Show original object ids of blobs/commits"
+#: builtin/fast-export.c:1231
+msgid "show original object ids of blobs/commits"
 msgstr ""
 
-#: builtin/fast-export.c:1234
-msgid "Label tags with mark ids"
+#: builtin/fast-export.c:1233
+msgid "label tags with mark ids"
 msgstr ""
 
-#: builtin/fast-export.c:1257
+#: builtin/fast-export.c:1256
 #, fuzzy
 msgid "--anonymize-map without --anonymize does not make sense"
-msgstr "--name-only não faz sentido"
+msgstr "--anonymize-map sem --anonymize faz sentido nenhum"
 
-#: builtin/fast-export.c:1272
+#: builtin/fast-export.c:1271
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 
 #: builtin/fast-import.c:3088
-#, fuzzy, c-format
+#, c-format
 msgid "Missing from marks for submodule '%s'"
-msgstr "A ignorar submódulo '%s'"
+msgstr ""
 
 #: builtin/fast-import.c:3090
-#, fuzzy, c-format
+#, c-format
 msgid "Missing to marks for submodule '%s'"
-msgstr "A ignorar submódulo '%s'"
+msgstr ""
 
 #: builtin/fast-import.c:3225
 #, c-format
@@ -14451,10 +15078,10 @@
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 
-#: builtin/fetch-pack.c:241
+#: builtin/fetch-pack.c:242
 #, fuzzy, c-format
 msgid "Lockfile created but not reported: %s"
-msgstr "Submódulos alterados mas não atualizados:"
+msgstr "Ficheiro de bloqueio criado mas por reportar: %s"
 
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
@@ -14473,203 +15100,215 @@
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<opções>]"
 
-#: builtin/fetch.c:119
+#: builtin/fetch.c:122
 msgid "fetch.parallel cannot be negative"
 msgstr ""
 
-#: builtin/fetch.c:142 builtin/pull.c:185
+#: builtin/fetch.c:145 builtin/pull.c:185
 msgid "fetch from all remotes"
 msgstr "obter de todos os remotos"
 
-#: builtin/fetch.c:144 builtin/pull.c:245
+#: builtin/fetch.c:147 builtin/pull.c:245
 #, fuzzy
 msgid "set upstream for git pull/fetch"
-msgstr "definir o ramo a montante usado com git pull/status"
+msgstr "definir upstream para git pull/fetch"
 
-#: builtin/fetch.c:146 builtin/pull.c:188
+#: builtin/fetch.c:149 builtin/pull.c:188
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "acrescentar a .git/FETCH_HEAD em vez de substituir"
 
-#: builtin/fetch.c:148 builtin/pull.c:191
+#: builtin/fetch.c:151
+#, fuzzy
+msgid "use atomic transaction to update references"
+msgstr "solicitar transação atómica no servidor remoto"
+
+#: builtin/fetch.c:153 builtin/pull.c:191
 msgid "path to upload pack on remote end"
 msgstr "caminho para o comando upload pack no remoto"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:154
 #, fuzzy
 msgid "force overwrite of local reference"
 msgstr "forçar a substituição do ramo local"
 
-#: builtin/fetch.c:151
+#: builtin/fetch.c:156
 msgid "fetch from multiple remotes"
 msgstr "obter de múltiplos remotos"
 
-#: builtin/fetch.c:153 builtin/pull.c:195
+#: builtin/fetch.c:158 builtin/pull.c:195
 msgid "fetch all tags and associated objects"
 msgstr "obter todas as tags e objetos associados"
 
-#: builtin/fetch.c:155
+#: builtin/fetch.c:160
 msgid "do not fetch all tags (--no-tags)"
-msgstr "não obter todas as tags (--no-tags)"
+msgstr "buscar tag nenhuma (--no-tags)"
 
-#: builtin/fetch.c:157
+#: builtin/fetch.c:162
 msgid "number of submodules fetched in parallel"
 msgstr "número de submódulos obtidos em paralelo"
 
-#: builtin/fetch.c:159 builtin/pull.c:198
-msgid "prune remote-tracking branches no longer on remote"
+#: builtin/fetch.c:164
+msgid "modify the refspec to place all refs within refs/prefetch/"
 msgstr ""
-"eliminar os ramos de monitorização remotos que já não existem no remoto"
 
-#: builtin/fetch.c:161
+#: builtin/fetch.c:166 builtin/pull.c:198
+msgid "prune remote-tracking branches no longer on remote"
+msgstr "podar ramos de monitorização remotos que deixaram de estar no remoto"
+
+#: builtin/fetch.c:168
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 
-#: builtin/fetch.c:162 builtin/fetch.c:187 builtin/pull.c:122
+#: builtin/fetch.c:169 builtin/fetch.c:194 builtin/pull.c:122
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:163
+#: builtin/fetch.c:170
 msgid "control recursive fetching of submodules"
 msgstr "controlar a obtenção recursiva de submódulos"
 
-#: builtin/fetch.c:168
+#: builtin/fetch.c:175
 #, fuzzy
 msgid "write fetched references to the FETCH_HEAD file"
 msgstr "escrever o arquivo para este ficheiro"
 
-#: builtin/fetch.c:169 builtin/pull.c:206
+#: builtin/fetch.c:176 builtin/pull.c:206
 msgid "keep downloaded pack"
 msgstr "manter o pacote transferido"
 
-#: builtin/fetch.c:171
+#: builtin/fetch.c:178
 msgid "allow updating of HEAD ref"
 msgstr "permitir a atualização da referência HEAD"
 
-#: builtin/fetch.c:174 builtin/fetch.c:180 builtin/pull.c:209
+#: builtin/fetch.c:181 builtin/fetch.c:187 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
 msgstr "aprofundar o histórico de um clone raso"
 
-#: builtin/fetch.c:176 builtin/pull.c:212
+#: builtin/fetch.c:183 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
 msgstr "aprofundar o histórico de repositório raso com base na data"
 
-#: builtin/fetch.c:182 builtin/pull.c:221
+#: builtin/fetch.c:189 builtin/pull.c:221
 msgid "convert to a complete repository"
 msgstr "converter num repositório completo"
 
-#: builtin/fetch.c:185
+#: builtin/fetch.c:192
 msgid "prepend this to submodule path output"
 msgstr "preceder isto ao caminho do submódulo"
 
-#: builtin/fetch.c:188
+#: builtin/fetch.c:195
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr ""
 
-#: builtin/fetch.c:192 builtin/pull.c:224
+#: builtin/fetch.c:199 builtin/pull.c:224
 msgid "accept refs that update .git/shallow"
 msgstr "aceitar referência que atualizem .git/shallow"
 
-#: builtin/fetch.c:193 builtin/pull.c:226
+#: builtin/fetch.c:200 builtin/pull.c:226
 msgid "refmap"
 msgstr "mapa de referências"
 
-#: builtin/fetch.c:194 builtin/pull.c:227
+#: builtin/fetch.c:201 builtin/pull.c:227
 msgid "specify fetch refmap"
 msgstr "especificar mapa de referências"
 
-#: builtin/fetch.c:201 builtin/pull.c:240
+#: builtin/fetch.c:208 builtin/pull.c:240
 msgid "report that we have only objects reachable from this object"
 msgstr ""
 
-#: builtin/fetch.c:204 builtin/fetch.c:206
+#: builtin/fetch.c:210
+msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
+msgstr ""
+
+#: builtin/fetch.c:213 builtin/fetch.c:215
 #, fuzzy
 msgid "run 'maintenance --auto' after fetching"
-msgstr "eliminar remotos depois de obter"
+msgstr "executar 'maintenance --auto' após buscar"
 
-#: builtin/fetch.c:208 builtin/pull.c:243
+#: builtin/fetch.c:217 builtin/pull.c:243
 msgid "check for forced-updates on all updated branches"
 msgstr ""
 
-#: builtin/fetch.c:210
+#: builtin/fetch.c:219
 #, fuzzy
 msgid "write the commit-graph after fetching"
-msgstr "eliminar remotos depois de obter"
+msgstr "escrever commit-graph após buscar"
 
-#: builtin/fetch.c:212
+#: builtin/fetch.c:221
 #, fuzzy
 msgid "accept refspecs from stdin"
 msgstr "ler referências do stdin"
 
-#: builtin/fetch.c:523
+#: builtin/fetch.c:586
 msgid "Couldn't find remote ref HEAD"
-msgstr "Referência remota HEAD não encontrada"
+msgstr "Incapaz de encontrar ref remota HEAD"
 
-#: builtin/fetch.c:677
+#: builtin/fetch.c:757
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
-msgstr "a configuração fetch.ouput contém o valor inválido %s"
+msgstr "configuração fetch.output contém valor inválido %s"
 
-#: builtin/fetch.c:775
+#: builtin/fetch.c:856
 #, c-format
 msgid "object %s not found"
-msgstr "objeto %s não encontrado"
+msgstr "objeto %s por encontrar"
 
-#: builtin/fetch.c:779
+#: builtin/fetch.c:860
 msgid "[up to date]"
 msgstr "[atualizado]"
 
-#: builtin/fetch.c:792 builtin/fetch.c:808 builtin/fetch.c:880
+#: builtin/fetch.c:873 builtin/fetch.c:889 builtin/fetch.c:961
 msgid "[rejected]"
 msgstr "[rejeitado]"
 
-#: builtin/fetch.c:793
+#: builtin/fetch.c:874
 msgid "can't fetch in current branch"
-msgstr "não é possível obter no ramo atual"
+msgstr "incapaz buscar no ramo atual"
 
-#: builtin/fetch.c:803
+#: builtin/fetch.c:884
 msgid "[tag update]"
 msgstr "[tag atualizada]"
 
-#: builtin/fetch.c:804 builtin/fetch.c:841 builtin/fetch.c:863
-#: builtin/fetch.c:875
+#: builtin/fetch.c:885 builtin/fetch.c:922 builtin/fetch.c:944
+#: builtin/fetch.c:956
 msgid "unable to update local ref"
-msgstr "não é possível atualizar a referência local"
+msgstr "incapaz atualizar ref local"
 
-#: builtin/fetch.c:808
+#: builtin/fetch.c:889
 msgid "would clobber existing tag"
 msgstr ""
 
-#: builtin/fetch.c:830
+#: builtin/fetch.c:911
 msgid "[new tag]"
 msgstr "[nova tag]"
 
-#: builtin/fetch.c:833
+#: builtin/fetch.c:914
 msgid "[new branch]"
 msgstr "[novo ramo]"
 
-#: builtin/fetch.c:836
+#: builtin/fetch.c:917
 msgid "[new ref]"
 msgstr "[nova referência]"
 
-#: builtin/fetch.c:875
+#: builtin/fetch.c:956
 msgid "forced update"
 msgstr "atualização forçada"
 
-#: builtin/fetch.c:880
+#: builtin/fetch.c:961
 msgid "non-fast-forward"
 msgstr "sem avanço-rápido"
 
-#: builtin/fetch.c:901
+#: builtin/fetch.c:1065
 msgid ""
 "Fetch normally indicates which branches had a forced update,\n"
 "but that check has been disabled. To re-enable, use '--show-forced-updates'\n"
 "flag or run 'git config fetch.showForcedUpdates true'."
 msgstr ""
 
-#: builtin/fetch.c:905
+#: builtin/fetch.c:1069
 #, c-format
 msgid ""
 "It took %.2f seconds to check forced updates. You can use\n"
@@ -14678,105 +15317,103 @@
 " to avoid this check.\n"
 msgstr ""
 
-#: builtin/fetch.c:939
+#: builtin/fetch.c:1101
 #, c-format
 msgid "%s did not send all necessary objects\n"
-msgstr "%s não enviou todos os objetos necessários\n"
+msgstr "%s ficou por enviar todos objetos necessários\n"
 
-#: builtin/fetch.c:960
-#, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "%s rejeitado, porque as raízes rasas não podem ser atualizadas"
+#: builtin/fetch.c:1129
+#, fuzzy, c-format
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "%s rejeitada, porque raízes rasas são proibidas de ser atualizadas"
 
-#: builtin/fetch.c:1053 builtin/fetch.c:1191
+#: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
 msgid "From %.*s\n"
 msgstr "De %.*s\n"
 
-#: builtin/fetch.c:1064
+#: builtin/fetch.c:1228
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
 " 'git remote prune %s' to remove any old, conflicting branches"
 msgstr ""
-"algumas referências locais não puderam ser atualizadas; tente executar\n"
-" 'git remote prune %s' para remover algum ramo antigo em conflito"
+"algumas refs locais ficaram desatualizadas; tenta executar\n"
+" 'git remote prune %s' para remover algum ramo antigo e conflituoso"
 
-#: builtin/fetch.c:1161
+#: builtin/fetch.c:1327
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s ficará suspenso)"
 
-#: builtin/fetch.c:1162
+#: builtin/fetch.c:1328
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s ficou suspenso)"
 
-#: builtin/fetch.c:1194
+#: builtin/fetch.c:1360
 msgid "[deleted]"
 msgstr "[eliminado]"
 
-#: builtin/fetch.c:1195 builtin/remote.c:1118
+#: builtin/fetch.c:1361 builtin/remote.c:1118
 msgid "(none)"
 msgstr "(nenhum)"
 
-#: builtin/fetch.c:1218
+#: builtin/fetch.c:1384
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
-msgstr "Obtenção de objetos no ramo atual %s de um repositório não nu recusada"
+msgstr "Recusando buscar para o ramo atual %s de repositório diferente de nu"
 
-#: builtin/fetch.c:1237
+#: builtin/fetch.c:1403
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
-msgstr "O valor \"%2$s\" da opção \"%1$s\" não é válido em %3$s"
+msgstr "Opção \"%s\" com valor \"%s\" é inválido para %s"
 
-#: builtin/fetch.c:1240
+#: builtin/fetch.c:1406
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Opção \"%s\" ignorada em %s\n"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1618
 msgid "multiple branches detected, incompatible with --set-upstream"
 msgstr ""
 
-#: builtin/fetch.c:1463
+#: builtin/fetch.c:1633
 #, fuzzy
 msgid "not setting upstream for a remote remote-tracking branch"
-msgstr ""
-"o ramo a montante '%s' não está guardado como um ramo de monitorização remoto"
+msgstr "desdefinindo upstream para remoto de ramo de monitorização remoto"
 
-#: builtin/fetch.c:1465
-#, fuzzy
+#: builtin/fetch.c:1635
 msgid "not setting upstream for a remote tag"
-msgstr "definir o ramo a montante usado com git pull/status"
+msgstr ""
 
-#: builtin/fetch.c:1467
+#: builtin/fetch.c:1637
 #, fuzzy
 msgid "unknown branch type"
-msgstr "objeto de tipo desconhecido %d"
+msgstr "tipo de ramo desconhecido"
 
-#: builtin/fetch.c:1469
+#: builtin/fetch.c:1639
 msgid ""
 "no source branch found.\n"
 "you need to specify exactly one branch with the --set-upstream option."
 msgstr ""
 
-#: builtin/fetch.c:1598 builtin/fetch.c:1661
+#: builtin/fetch.c:1768 builtin/fetch.c:1831
 #, c-format
 msgid "Fetching %s\n"
 msgstr "A obter de %s\n"
 
-#: builtin/fetch.c:1608 builtin/fetch.c:1663 builtin/remote.c:101
+#: builtin/fetch.c:1778 builtin/fetch.c:1833 builtin/remote.c:101
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Incapaz buscar %s"
 
-#: builtin/fetch.c:1620
+#: builtin/fetch.c:1790
 #, fuzzy, c-format
 msgid "could not fetch '%s' (exit code: %d)\n"
 msgstr "fetch '%s' impossível (exit code: %d)\n"
 
-#: builtin/fetch.c:1724
+#: builtin/fetch.c:1894
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -14784,53 +15421,68 @@
 "Nenhum repositório remoto especificado. Especifique um URL ou\n"
 "o nome remoto a partir do qual as novas revisões devem ser obtidas."
 
-#: builtin/fetch.c:1760
+#: builtin/fetch.c:1930
 msgid "You need to specify a tag name."
 msgstr "Deve especificar um nome para a tag."
 
-#: builtin/fetch.c:1825
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only precisa de um ou mais --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Profundidade negativa em --deepen tem suporte nenhum"
 
-#: builtin/fetch.c:1827
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen e --depth são mutuamente exclusivos"
 
-#: builtin/fetch.c:1832
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
-msgstr "--depth e --unshallow não podem ser usados juntos"
+msgstr "--depth e --unshallow incapazes serem usados juntos"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
-msgstr "usar --unshallow num repositório completo não faz sentido"
+msgstr "--unshallow num repositório completo faz sentido nenhum"
 
-#: builtin/fetch.c:1851
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
-msgstr "fetch --all não leva um repositório como argumento"
+msgstr "fetch --all leva como argumento repositório nenhum"
 
-#: builtin/fetch.c:1853
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
-msgstr "fetch --all não faz sentido com especificadores de referência"
+msgstr "fetch --all com refspecs, faz sentido nenhum"
 
-#: builtin/fetch.c:1862
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
-msgstr "O remoto ou grupo remoto não existe: %s"
+msgstr "Remoto ou grupo remoto inexistente: %s"
 
-#: builtin/fetch.c:1869
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Buscar um grupo e especificar refspecs faz sentido nenhum"
 
-#: builtin/fetch.c:1887
+#: builtin/fetch.c:2058
+msgid "must supply remote when using --negotiate-only"
+msgstr ""
+
+#: builtin/fetch.c:2063
+msgid "Protocol does not support --negotiate-only, exiting."
+msgstr ""
+
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
 msgstr ""
 
-#: builtin/fetch.c:1891
-#, fuzzy
+#: builtin/fetch.c:2086
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
-msgstr "A opção --exec só pode ser usada em conjunto com --remote"
+msgstr ""
 
 #: builtin/fmt-merge-msg.c:7
 msgid ""
@@ -14876,313 +15528,312 @@
 msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
 msgstr "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
 
-#: builtin/for-each-ref.c:28
+#: builtin/for-each-ref.c:30
 msgid "quote placeholders suitably for shells"
 msgstr ""
 "envolver os marcadores de posição em aspas de forma adequada para "
 "interpretadores de comandos"
 
-#: builtin/for-each-ref.c:30
+#: builtin/for-each-ref.c:32
 msgid "quote placeholders suitably for perl"
 msgstr "envolver os marcadores de posição em aspas de forma adequada para perl"
 
-#: builtin/for-each-ref.c:32
+#: builtin/for-each-ref.c:34
 msgid "quote placeholders suitably for python"
 msgstr ""
 "envolver os marcadores de posição em aspas de forma adequada para python"
 
-#: builtin/for-each-ref.c:34
+#: builtin/for-each-ref.c:36
 msgid "quote placeholders suitably for Tcl"
 msgstr "envolver os marcadores de posição em aspas de forma adequada para Tcl"
 
-#: builtin/for-each-ref.c:37
+#: builtin/for-each-ref.c:39
 msgid "show only <n> matched refs"
 msgstr "mostrar apenas <n> referências correspondidas"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:440
+#: builtin/for-each-ref.c:41 builtin/tag.c:483
 #, fuzzy
 msgid "respect format colors"
 msgstr "formato esperado: %%(color:<cor>)"
 
-#: builtin/for-each-ref.c:42
+#: builtin/for-each-ref.c:44
 msgid "print only refs which points at the given object"
 msgstr "imprimir apenas referências que apontem para o objeto fornecido"
 
-#: builtin/for-each-ref.c:44
+#: builtin/for-each-ref.c:46
 msgid "print only refs that are merged"
 msgstr "imprimir apenas referenciadas integradas"
 
-#: builtin/for-each-ref.c:45
-msgid "print only refs that are not merged"
-msgstr "imprimir apenas referências não integrada"
-
-#: builtin/for-each-ref.c:46
-msgid "print only refs which contain the commit"
-msgstr "imprimir apenas referências que contenham o commit"
-
 #: builtin/for-each-ref.c:47
+msgid "print only refs that are not merged"
+msgstr "imprimir apenas refs que estão por juntar"
+
+#: builtin/for-each-ref.c:48
+msgid "print only refs which contain the commit"
+msgstr "imprimir apenas refs que contenham o commit"
+
+#: builtin/for-each-ref.c:49
 msgid "print only refs which don't contain the commit"
-msgstr "imprimir apenas referências que não contenham o commit"
+msgstr "imprimir apenas refs que contenham outros commits"
 
 #: builtin/for-each-repo.c:9
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr ""
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr ""
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr ""
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr ""
 
-#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 #, fuzzy
 msgid "unknown"
-msgstr "desconhecido:"
+msgstr "desconhecido"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:101 builtin/fsck.c:121
+#: builtin/fsck.c:78 builtin/fsck.c:100
 #, fuzzy, c-format
 msgid "error in %s %s: %s"
-msgstr "erro no objeto: %s"
+msgstr "erro em %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:115
+#: builtin/fsck.c:94
 #, fuzzy, c-format
 msgid "warning in %s %s: %s"
-msgstr "não é possível abrir %s: %s"
+msgstr "aviso em %s %s: %s"
 
-#: builtin/fsck.c:144 builtin/fsck.c:147
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:156
+#: builtin/fsck.c:136
 #, fuzzy
 msgid "wrong object type in link"
-msgstr "objeto de tipo desconhecido %d"
+msgstr "link com tipo de objeto errado"
 
-#: builtin/fsck.c:172
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
 "              to %7s %s"
 msgstr ""
 
-#: builtin/fsck.c:283
-#, fuzzy, c-format
+#: builtin/fsck.c:264
+#, c-format
 msgid "missing %s %s"
-msgstr "falta o objeto %s de %s"
+msgstr ""
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:291
 #, fuzzy, c-format
 msgid "unreachable %s %s"
 msgstr "já se tem %s (%s)"
 
-#: builtin/fsck.c:330
+#: builtin/fsck.c:311
 #, fuzzy, c-format
 msgid "dangling %s %s"
 msgstr "balanceando %s %s"
 
-#: builtin/fsck.c:340
+#: builtin/fsck.c:321
 #, fuzzy
 msgid "could not create lost-found"
-msgstr "não foi possível criar o ficheiro '%s'"
+msgstr "incapaz criar lost-found"
 
-#: builtin/fsck.c:351
+#: builtin/fsck.c:332
 #, fuzzy, c-format
 msgid "could not finish '%s'"
-msgstr "não foi possível reiniciar '%s'"
+msgstr "incapaz acabar '%s'"
 
-#: builtin/fsck.c:368
+#: builtin/fsck.c:349
 #, fuzzy, c-format
 msgid "Checking %s"
-msgstr "A verificar objetos"
+msgstr "Verificando %s"
+
+#: builtin/fsck.c:387
+#, fuzzy, c-format
+msgid "Checking connectivity (%d objects)"
+msgstr "Verificando conectividade (%d objetos)"
 
 #: builtin/fsck.c:406
 #, fuzzy, c-format
-msgid "Checking connectivity (%d objects)"
-msgstr "A verificar conectividade"
-
-#: builtin/fsck.c:425
-#, fuzzy, c-format
 msgid "Checking %s %s"
-msgstr "A verificar o patch %s..."
+msgstr "Verificando %s %s"
 
-#: builtin/fsck.c:430
+#: builtin/fsck.c:411
 msgid "broken links"
-msgstr ""
+msgstr "links quebrados"
 
-#: builtin/fsck.c:439
+#: builtin/fsck.c:420
 #, fuzzy, c-format
 msgid "root %s"
-msgstr "raiz"
+msgstr "raiz %s"
 
-#: builtin/fsck.c:447
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr ""
 
-#: builtin/fsck.c:476
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr ""
 
-#: builtin/fsck.c:501
-#, fuzzy, c-format
+#: builtin/fsck.c:482
+#, c-format
 msgid "%s: invalid reflog entry %s"
-msgstr "referência inválida: %s"
+msgstr ""
 
-#: builtin/fsck.c:515
+#: builtin/fsck.c:496
 #, fuzzy, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Verificando reflog %s->%s"
 
-#: builtin/fsck.c:549
+#: builtin/fsck.c:530
 #, fuzzy, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "linha rasa inválida: %s"
 
-#: builtin/fsck.c:556
+#: builtin/fsck.c:537
 #, fuzzy, c-format
 msgid "%s: not a commit"
-msgstr "'%s' não é um commit"
+msgstr "%s: é commit nenhum"
 
-#: builtin/fsck.c:610
+#: builtin/fsck.c:591
 #, fuzzy
 msgid "notice: No default references"
-msgstr "não foi possível eliminar as referências: %s"
+msgstr "notificação: Referências padrão nenhumas"
 
-#: builtin/fsck.c:625
+#: builtin/fsck.c:606
 #, fuzzy, c-format
 msgid "%s: object corrupt or missing: %s"
-msgstr "objeto não encontrado: %s"
+msgstr "%s: objeto roto ou em falta: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:619
 #, fuzzy, c-format
 msgid "%s: object could not be parsed: %s"
-msgstr "não foi possível analisar %s"
+msgstr "%s: objeto incapaz de ser processado: %s"
 
-#: builtin/fsck.c:658
+#: builtin/fsck.c:639
 #, fuzzy, c-format
 msgid "bad sha1 file: %s"
-msgstr "linha rasa inválida: %s"
+msgstr "mau ficheiro sha1: %s"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:654
 #, fuzzy
 msgid "Checking object directory"
-msgstr "A verificar diretórios de objetos"
+msgstr "Verificando pasta objeto"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:657
 msgid "Checking object directories"
-msgstr "A verificar diretórios de objetos"
+msgstr "Verificando pastas objeto"
 
-#: builtin/fsck.c:691
+#: builtin/fsck.c:672
 #, fuzzy, c-format
 msgid "Checking %s link"
-msgstr "A extrair ficheiros"
+msgstr "Verfificando ligação %s"
 
-#: builtin/fsck.c:696 builtin/index-pack.c:865
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
-msgstr "inválido %s"
+msgstr "%s inválido"
 
-#: builtin/fsck.c:703
+#: builtin/fsck.c:684
 #, fuzzy, c-format
 msgid "%s points to something strange (%s)"
-msgstr "%s - não é algo se possa integrar"
+msgstr "%s aponta para algo estranho (%s)"
 
-#: builtin/fsck.c:709
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr ""
 
-#: builtin/fsck.c:713
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr ""
 
-#: builtin/fsck.c:725
-#, fuzzy
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
-msgstr "A verificar o patch %s..."
+msgstr ""
 
-#: builtin/fsck.c:730
+#: builtin/fsck.c:711
 #, fuzzy, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "Falha ao atualizar a árvore de cache principal"
 
-#: builtin/fsck.c:739
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr ""
 
-#: builtin/fsck.c:770
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opções>] [<objeto>...]"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "mostrar objetos inalcançáveis"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "mostrar objetos suspensos"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "mostrar tags"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "mostrar nós raiz"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "considerar objetos do índice como nós cabeça"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "considerar os reflogs como nós cabeça (predefinição)"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "considerar também pacotes e objetos sobressalente"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "verificar só a conetividade"
 
-#: builtin/fsck.c:784
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "ativar verificação mais rigorosa"
 
-#: builtin/fsck.c:786
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "escrever objetos suspensos em .git/lost-found"
 
-#: builtin/fsck.c:787 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "mostrar progresso"
 
-#: builtin/fsck.c:788
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "mostrar nomes verbosos de objetos inalcançáveis"
 
-#: builtin/fsck.c:847 builtin/index-pack.c:261
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
-msgstr "A verificar objetos"
+msgstr "Verificando objetos"
 
-#: builtin/fsck.c:875
+#: builtin/fsck.c:856
 #, fuzzy, c-format
 msgid "%s: object missing"
 msgstr "mostrar tamanho do objeto"
 
-#: builtin/fsck.c:886
+#: builtin/fsck.c:867
 #, fuzzy, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "parâmetro inválido na mágica 'prefix' do especificador de caminho"
@@ -15191,27 +15842,27 @@
 msgid "git gc [<options>]"
 msgstr "git gc [<opções>]"
 
-#: builtin/gc.c:94
+#: builtin/gc.c:93
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "falha ao invocar fstat sobre %s: %s"
 
-#: builtin/gc.c:130
-#, fuzzy, c-format
+#: builtin/gc.c:129
+#, c-format
 msgid "failed to parse '%s' value '%s'"
-msgstr "falha ao abrir '%s': %s"
+msgstr ""
 
-#: builtin/gc.c:479 builtin/init-db.c:58
+#: builtin/gc.c:487 builtin/init-db.c:57
 #, c-format
 msgid "cannot stat '%s'"
-msgstr "não é possível invocar stat sobre '%s'"
+msgstr "incapaz estatutar '%s'"
 
-#: builtin/gc.c:488 builtin/notes.c:240 builtin/tag.c:530
+#: builtin/gc.c:496 builtin/notes.c:240 builtin/tag.c:573
 #, c-format
 msgid "cannot read '%s'"
-msgstr "não é possível ler '%s'"
+msgstr "incapaz ler '%s'"
 
-#: builtin/gc.c:495
+#: builtin/gc.c:503
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -15221,211 +15872,232 @@
 "%s"
 msgstr ""
 "A última execução do gc reportou o seguinte.\n"
-"Corrija a origem do problema e remova %s.\n"
-"A limpeza automática não será realizada enquanto o ficheiro existir.\n"
+"Corrije a origem do problema e remove %s.\n"
+"A limpeza automática apenas será realizada quando o ficheiro for removido.\n"
 "\n"
 "%s"
 
-#: builtin/gc.c:543
+#: builtin/gc.c:551
 msgid "prune unreferenced objects"
-msgstr "eliminar ficheiros não referenciados"
+msgstr "podar objetos por referênciar"
 
-#: builtin/gc.c:545
+#: builtin/gc.c:553
 msgid "be more thorough (increased runtime)"
 msgstr "ser mais minucioso (aumenta o tempo de execução)"
 
-#: builtin/gc.c:546
+#: builtin/gc.c:554
 msgid "enable auto-gc mode"
 msgstr "ativar modo auto-gc"
 
-#: builtin/gc.c:549
+#: builtin/gc.c:557
 msgid "force running gc even if there may be another gc running"
 msgstr "forçar a execução do gc mesmo que haja outro gc a executar"
 
-#: builtin/gc.c:552
+#: builtin/gc.c:560
 msgid "repack all other packs except the largest pack"
 msgstr ""
 
-#: builtin/gc.c:569
+#: builtin/gc.c:576
 #, fuzzy, c-format
 msgid "failed to parse gc.logexpiry value %s"
 msgstr "falha ao analisar o valor %s de gc.logexpiry"
 
-#: builtin/gc.c:580
+#: builtin/gc.c:587
 #, fuzzy, c-format
 msgid "failed to parse prune expiry value %s"
 msgstr "falha ao analisar o valor %s de gc.logexpiry"
 
-#: builtin/gc.c:600
+#: builtin/gc.c:607
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
-"Autocompactando o repositório para desempenho ótimizado, em segundo plano.\n"
+"Auto-empacotando repositório, em segundo plano, para desempenho otimizado.\n"
 
-#: builtin/gc.c:602
+#: builtin/gc.c:609
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
-msgstr "Autocompactando o repositório para desempenho ótimizado.\n"
+msgstr "Auto-empacotando repositório para desempenho otimizado.\n"
 
-#: builtin/gc.c:603
+#: builtin/gc.c:610
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Vê \"git help gc\" para manual de manutenção.\n"
 
-#: builtin/gc.c:643
+#: builtin/gc.c:650
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
-"gc já a executar na máquina '%s' pid %<PRIuMAX> (use --force se não for o "
-"caso)"
+"gc já a executar na máquina '%s' pid %<PRIuMAX> (usa --force caso contrário)"
 
-#: builtin/gc.c:698
+#: builtin/gc.c:705
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Existem demasiados objeto soltos inalcançáveis; execute 'git prune' para os "
 "remover."
 
-#: builtin/gc.c:708
+#: builtin/gc.c:715
 msgid ""
 "git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
 msgstr ""
 
-#: builtin/gc.c:738
+#: builtin/gc.c:745
 msgid "--no-schedule is not allowed"
 msgstr ""
 
-#: builtin/gc.c:743
+#: builtin/gc.c:750
 #, fuzzy, c-format
 msgid "unrecognized --schedule argument '%s'"
-msgstr "argumento não reconhecido: %s"
+msgstr "argumento --schedule desconhecido: '%s'"
 
-#: builtin/gc.c:862
-#, fuzzy
+#: builtin/gc.c:869
 msgid "failed to write commit-graph"
-msgstr "falha ao escrever objeto de commit"
+msgstr ""
 
-#: builtin/gc.c:901
-#, fuzzy
-msgid "failed to fill remotes"
-msgstr "falha ao remover %s"
+#: builtin/gc.c:905
+msgid "failed to prefetch remotes"
+msgstr ""
 
-#: builtin/gc.c:1024
+#: builtin/gc.c:1022
 #, fuzzy
 msgid "failed to start 'git pack-objects' process"
 msgstr "começar processo 'git pack-objects' falhou"
 
-#: builtin/gc.c:1041
+#: builtin/gc.c:1039
 #, fuzzy
 msgid "failed to finish 'git pack-objects' process"
 msgstr "terminar processo 'git pack-objects' falhou"
 
-#: builtin/gc.c:1093
-#, fuzzy
+#: builtin/gc.c:1091
 msgid "failed to write multi-pack-index"
-msgstr "falha ao limpar o índice"
+msgstr ""
 
-#: builtin/gc.c:1111
+#: builtin/gc.c:1109
 msgid "'git multi-pack-index expire' failed"
 msgstr ""
 
-#: builtin/gc.c:1172
-#, fuzzy
+#: builtin/gc.c:1170
 msgid "'git multi-pack-index repack' failed"
-msgstr "falha ao ler o ficheiro de comando '%s'"
+msgstr ""
 
-#: builtin/gc.c:1181
+#: builtin/gc.c:1179
 msgid ""
 "skipping incremental-repack task because core.multiPackIndex is disabled"
 msgstr ""
 
-#: builtin/gc.c:1279
+#: builtin/gc.c:1283
 #, c-format
 msgid "lock file '%s' exists, skipping maintenance"
 msgstr ""
 
-#: builtin/gc.c:1309
+#: builtin/gc.c:1313
 #, fuzzy, c-format
 msgid "task '%s' failed"
-msgstr "falha ao mudar o nome de '%s'"
+msgstr "tarefa '%s' falhou"
 
-#: builtin/gc.c:1389
+#: builtin/gc.c:1395
 #, fuzzy, c-format
 msgid "'%s' is not a valid task"
-msgstr "'%s' não é uma referência válida."
+msgstr "'%s' é uma tarefa inválida"
 
-#: builtin/gc.c:1394
+#: builtin/gc.c:1400
 #, fuzzy, c-format
 msgid "task '%s' cannot be selected multiple times"
-msgstr "'%s' não pode ser usado com %s"
+msgstr "tarefa '%s' apenas pode ser selecionada uma vez"
 
-#: builtin/gc.c:1409
+#: builtin/gc.c:1415
 msgid "run tasks based on the state of the repository"
 msgstr ""
 
-#: builtin/gc.c:1410
+#: builtin/gc.c:1416
 msgid "frequency"
 msgstr ""
 
-#: builtin/gc.c:1411
+#: builtin/gc.c:1417
 msgid "run tasks based on frequency"
 msgstr ""
 
-#: builtin/gc.c:1414
+#: builtin/gc.c:1420
 msgid "do not report progress or other information over stderr"
 msgstr ""
 
-#: builtin/gc.c:1415
+#: builtin/gc.c:1421
 msgid "task"
 msgstr ""
 
-#: builtin/gc.c:1416
+#: builtin/gc.c:1422
 #, fuzzy
 msgid "run a specific task"
 msgstr "corre uma tarefa específica"
 
-#: builtin/gc.c:1433
+#: builtin/gc.c:1439
 msgid "use at most one of --auto and --schedule=<frequency>"
 msgstr ""
 
-#: builtin/gc.c:1467
+#: builtin/gc.c:1482
 #, fuzzy
 msgid "failed to run 'git config'"
-msgstr "falha ao escrever para '%s'"
+msgstr "falhou executar 'git config'"
 
-#: builtin/gc.c:1512
-msgid "another process is scheduling background maintenance"
+#: builtin/gc.c:1547
+#, fuzzy, c-format
+msgid "failed to expand path '%s'"
+msgstr "falha ao criar o caminho '%s'%s"
+
+#: builtin/gc.c:1576
+#, fuzzy
+msgid "failed to start launchctl"
+msgstr "Falha ao iniciar emacsclient."
+
+#: builtin/gc.c:1613
+#, fuzzy, c-format
+msgid "failed to create directories for '%s'"
+msgstr "falha ao criar o diretório '%s'"
+
+#: builtin/gc.c:1674
+#, fuzzy, c-format
+msgid "failed to bootstrap service %s"
+msgstr "bootstrap serviços %s falhou"
+
+#: builtin/gc.c:1745
+msgid "failed to create temp xml file"
 msgstr ""
 
-#: builtin/gc.c:1525
+#: builtin/gc.c:1835
+msgid "failed to start schtasks"
+msgstr ""
+
+#: builtin/gc.c:1879
 msgid "failed to run 'crontab -l'; your system might not support 'cron'"
 msgstr ""
 
-#: builtin/gc.c:1544
+#: builtin/gc.c:1896
 msgid "failed to run 'crontab'; your system might not support 'cron'"
 msgstr ""
 
-#: builtin/gc.c:1550
-#, fuzzy
+#: builtin/gc.c:1900
 msgid "failed to open stdin of 'crontab'"
-msgstr "falha ao abrir '%s'"
+msgstr ""
 
-#: builtin/gc.c:1592
+#: builtin/gc.c:1942
 msgid "'crontab' died"
 msgstr ""
 
-#: builtin/gc.c:1605
-#, fuzzy
-msgid "failed to add repo to global config"
-msgstr "falha ao ler o ficheiro de comando '%s'"
+#: builtin/gc.c:1976
+msgid "another process is scheduling background maintenance"
+msgstr ""
 
-#: builtin/gc.c:1615
+#: builtin/gc.c:2000
+msgid "failed to add repo to global config"
+msgstr ""
+
+#: builtin/gc.c:2010
 #, fuzzy
 msgid "git maintenance <subcommand> [<options>]"
 msgstr "git notes prune [<opções>]"
 
-#: builtin/gc.c:1634
+#: builtin/gc.c:2029
 #, fuzzy, c-format
 msgid "invalid subcommand: %s"
 msgstr "commit inválido %s"
@@ -15434,12 +16106,12 @@
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<opções>] [-e] <padrão> [<rev>...] [[--] <caminho>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:223
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: falha ao criar thread: %s"
 
-#: builtin/grep.c:279
+#: builtin/grep.c:277
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "o número de threads especificado em %2$s é inválido (%1$d)"
@@ -15448,271 +16120,271 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1576 builtin/index-pack.c:1766
-#: builtin/pack-objects.c:2936
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "sem suporte de threads, %s ignorado"
 
-#: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
+#: builtin/grep.c:473 builtin/grep.c:603 builtin/grep.c:643
 #, c-format
 msgid "unable to read tree (%s)"
-msgstr "não foi possível ler a árvore (%s)"
+msgstr "incapaz ler árvore (%s)"
 
-#: builtin/grep.c:655
+#: builtin/grep.c:658
 #, c-format
 msgid "unable to grep from object of type %s"
-msgstr "não foi possível efetuar grep de objetos do tipo %s"
+msgstr "incapaz efetuar grep a objetos do tipo %s"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
-msgstr "a opção '%c' espera um valor numérico"
+msgstr ""
 
-#: builtin/grep.c:835
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "procurar no índice em vez de procurar na árvore de trabalho"
 
-#: builtin/grep.c:837
-msgid "find in contents not managed by git"
-msgstr "procurar em conteúdos não geridos pelo git"
-
 #: builtin/grep.c:839
-msgid "search in both tracked and untracked files"
-msgstr "procurar em ficheiros controlados e não controlados"
+msgid "find in contents not managed by git"
+msgstr "procurar em conteúdos fora da gestão do git"
 
 #: builtin/grep.c:841
+msgid "search in both tracked and untracked files"
+msgstr "procurar em ficheiros monitorizados e por monitorizar"
+
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorar ficheiros especificados via '.gitignore'"
 
-#: builtin/grep.c:843
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "procurar recursivamente em cada submódulo"
 
-#: builtin/grep.c:846
-msgid "show non-matching lines"
-msgstr "mostrar linhas não correspondidas"
-
 #: builtin/grep.c:848
-msgid "case insensitive matching"
-msgstr "não diferenciar maiúsculas de minúsculas"
+msgid "show non-matching lines"
+msgstr "mostrar linhas por corresponder"
 
 #: builtin/grep.c:850
+msgid "case insensitive matching"
+msgstr "correspondência insensível a maiúsculas e minúsculas"
+
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "corresponder padrões apenas a palavras"
 
-#: builtin/grep.c:852
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "processar ficheiros binários como texto"
 
-#: builtin/grep.c:854
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "ignorar ficheiros binários"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "processar ficheiros binários com filtros textconv"
 
-#: builtin/grep.c:859
-#, fuzzy
-msgid "search in subdirectories (default)"
-msgstr "eliminar referências soltas (predefinição)"
-
 #: builtin/grep.c:861
+msgid "search in subdirectories (default)"
+msgstr ""
+
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "descer no máximo até <profundidade>"
 
-#: builtin/grep.c:865
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "usar expressões regulares estendidas do POSIX"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "usar expressões regulares básicas do POSIX (predefinição)"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "interpretar padrões como cadeias de caracteres fixas"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "usar expressões regulares compatíveis com Perl"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "mostrar números de linha"
 
-#: builtin/grep.c:878
+#: builtin/grep.c:880
 #, fuzzy
 msgid "show column number of first match"
 msgstr "mostrar apenas nomes de ficheiro sem correspondência"
 
-#: builtin/grep.c:879
+#: builtin/grep.c:881
 msgid "don't show filenames"
-msgstr "não mostrar nomes de ficheiro"
+msgstr "esconder nomes de ficheiro"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "mostrar nomes de ficheiro"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "mostrar nomes de ficheiro relativamente ao diretório superior"
 
-#: builtin/grep.c:884
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "mostrar apenas nomes de ficheiro em vez de linhas correspondidas"
 
-#: builtin/grep.c:886
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "sinónimo de --files-with-matches"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "mostrar apenas nomes de ficheiro sem correspondência"
 
-#: builtin/grep.c:891
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "imprimir NUL depois dos nomes de ficheiro"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:896
 #, fuzzy
 msgid "show only matching parts of a line"
-msgstr "mostrar linhas não correspondidas"
+msgstr "mostrar apenas partes da linha correspondentes"
 
-#: builtin/grep.c:896
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "mostrar o número de correspondências em vez das linha correspondidas"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "realçar correspondências"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr ""
 "imprimir uma linha em branco entre correspondências de diferentes ficheiros"
 
-#: builtin/grep.c:901
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "mostrar só uma vez o nome do ficheiro acima das correspondências dentro do "
 "mesmo ficheiro"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "mostrar <n> linhas de contexto antes e depois das correspondências"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "mostrar <n> linhas de contexto antes das correspondências"
 
-#: builtin/grep.c:909
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "mostrar <n> linhas de contexto depois das correspondências"
 
-#: builtin/grep.c:911
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "usar <n> threads de trabalho"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "atalho para -C NUM"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "mostrar uma linha com o nome da função antes das correspondências"
 
-#: builtin/grep.c:917
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "mostrar a função circundante"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "ler padrões do ficheiro"
 
-#: builtin/grep.c:922
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "procurar <padrão>"
 
-#: builtin/grep.c:924
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "combinar padrões especificados com -e"
 
-#: builtin/grep.c:936
-msgid "indicate hit with exit status without output"
-msgstr "indicar padrão encontrado no valor de saída, mas não imprimir"
-
 #: builtin/grep.c:938
+msgid "indicate hit with exit status without output"
+msgstr "indicar correspondência, sem output, com status de saída"
+
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr ""
 "mostrar apenas correspondências de ficheiro que tenham todos os padrões"
 
-#: builtin/grep.c:940
-msgid "show parse tree for grep expression"
-msgstr "mostrar árvore de analise da expressões grep"
-
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "paginador"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "mostrar ficheiros com correspondências no paginador"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "permitir invocar grep(1) (ignorado nesta compilação)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 #, fuzzy
 msgid "no pattern given"
 msgstr "fornecido pattern nenhum"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
-msgstr "--no-index ou --untracked não podem ser usados em revisões"
+msgstr "--no-index ou --untracked incapazes serem usados em revs"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
-msgstr "não foi possível resolver revisão: %s"
+msgstr "incapaz resolver revisão: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 #, fuzzy
 msgid "--untracked not supported with --recurse-submodules"
-msgstr "opção não suportada com --recurse-submodules."
+msgstr "--untracked insustentada com --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3655
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 #, fuzzy
 msgid "no threads support, ignoring --threads"
 msgstr "sem suporte de threads, %s ignorado"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1573 builtin/pack-objects.c:2933
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número de threads especificado inválido (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager só funciona na árvore de trabalho"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 #, fuzzy
 msgid "--cached or --untracked cannot be used with --no-index"
-msgstr "--cached ou --untracked não podem ser usados com --no-index."
+msgstr "--cached ou --untracked proibidos serem usados com --no-index"
 
-#: builtin/grep.c:1164
+#: builtin/grep.c:1160
+#, fuzzy
+msgid "--untracked cannot be used with --cached"
+msgstr "--cached ou --untracked proibidos serem usados com --no-index"
+
+#: builtin/grep.c:1166
 #, fuzzy
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr ""
-"--[no-]exclude-standard não podem ser usados em conteúdos não controlados."
+"--[no-]exclude-standard proibidos serem usados para conteúdos monitorizados"
 
-#: builtin/grep.c:1172
+#: builtin/grep.c:1174
 #, fuzzy
 msgid "both --cached and trees are given"
 msgstr "--cached e árvores foram fornecidos simultaneamente."
@@ -15735,7 +16407,7 @@
 
 #: builtin/hash-object.c:99
 msgid "write the object into the object database"
-msgstr "escrever o objeto na base de dados de objetos"
+msgstr ""
 
 #: builtin/hash-object.c:101
 msgid "read the object from stdin"
@@ -15771,15 +16443,15 @@
 #: builtin/help.c:50
 #, fuzzy
 msgid "print all configuration variable names"
-msgstr "não é possível criar o ficheiro de configuração %s"
+msgstr "imprimir todas nomes variáveis de configuração"
 
 #: builtin/help.c:52
 msgid "show man page"
-msgstr "mostrar página do manual"
+msgstr "mostrar página man"
 
 #: builtin/help.c:53
 msgid "show manual in web browser"
-msgstr "mostrar o manual no navegador web"
+msgstr "mostrar manual no navegador web"
 
 #: builtin/help.c:55
 msgid "show info page"
@@ -15788,7 +16460,7 @@
 #: builtin/help.c:57
 #, fuzzy
 msgid "print command description"
-msgstr "imprimir conteúdo do commit"
+msgstr "imprimir descrição de comando"
 
 #: builtin/help.c:62
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
@@ -15797,7 +16469,7 @@
 #: builtin/help.c:163
 #, c-format
 msgid "unrecognized help format '%s'"
-msgstr "formato de ajuda não reconhecido '%s'"
+msgstr "formato de ajuda '%s' desconhecido"
 
 #: builtin/help.c:190
 msgid "Failed to start emacsclient."
@@ -15815,7 +16487,7 @@
 #: builtin/help.c:229 builtin/help.c:251 builtin/help.c:261 builtin/help.c:269
 #, c-format
 msgid "failed to exec '%s'"
-msgstr "falha ao executar '%s'"
+msgstr "falhou exec a '%s'"
 
 #: builtin/help.c:307
 #, c-format
@@ -15823,8 +16495,8 @@
 "'%s': path for unsupported man viewer.\n"
 "Please consider using 'man.<tool>.cmd' instead."
 msgstr ""
-"'%s': caminho para visualizador de manual não suportado.\n"
-"Considere usar 'man.<ferramenta>.cmd'."
+"'%s': path para visualizador man insustentado.\n"
+"Por favor, considera usar 'man.<ferramenta>.cmd' invés."
 
 #: builtin/help.c:319
 #, c-format
@@ -15840,422 +16512,421 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s': visualizador de manual desconhecido."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "atendeu ao pedido visualizador de man nenhum"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "atendeu ao pedido visualizador de info nenhum"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:337
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, fuzzy, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'git %s' é um alias de '%s'"
 
-#: builtin/help.c:534 git.c:369
+#: builtin/help.c:531 git.c:380
 #, fuzzy, c-format
 msgid "bad alias.%s string: %s"
 msgstr "Valor de branch.%s.mergeoptions incorreto: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "utilização: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr ""
 
-#: builtin/index-pack.c:221
+#: builtin/index-pack.c:222
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "incompatibilidade de tipo de objeto em %s"
 
-#: builtin/index-pack.c:241
+#: builtin/index-pack.c:242
 #, c-format
 msgid "did not receive expected object %s"
-msgstr "o objeto esperado %s não foi recebido"
+msgstr "objeto esperado %s ficou por ser recebido"
 
-#: builtin/index-pack.c:244
+#: builtin/index-pack.c:245
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "objeto %s: tipo esperado %s, obtido %s"
 
-#: builtin/index-pack.c:294
+#: builtin/index-pack.c:295
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
-msgstr[0] "não é possível preencher %d byte"
-msgstr[1] "não é possível preencher %d bytes"
-
-#: builtin/index-pack.c:304
-msgid "early EOF"
-msgstr "fim de ficheiro (EOF) prematuro"
+msgstr[0] "incapaz preencher %d byte"
+msgstr[1] "incapaz preencher %d bytes"
 
 #: builtin/index-pack.c:305
+msgid "early EOF"
+msgstr "EOF prematuro"
+
+#: builtin/index-pack.c:306
 msgid "read error on input"
 msgstr "erro de leitura da entrada"
 
-#: builtin/index-pack.c:317
+#: builtin/index-pack.c:318
 msgid "used more bytes than were available"
 msgstr "foram usados mais bytes dos que estavam disponíveis"
 
-#: builtin/index-pack.c:324 builtin/pack-objects.c:619
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "pacote demasiado grande para a definição atual de off_t"
 
-#: builtin/index-pack.c:327 builtin/unpack-objects.c:95
+#: builtin/index-pack.c:328 builtin/unpack-objects.c:95
 msgid "pack exceeds maximum allowed size"
 msgstr "o pacote excede o tamanho máximo permitido"
 
-#: builtin/index-pack.c:342 builtin/repack.c:286
+#: builtin/index-pack.c:343
 #, c-format
 msgid "unable to create '%s'"
-msgstr "não foi possível criar '%s'"
+msgstr "incapaz criar '%s'"
 
-#: builtin/index-pack.c:348
+#: builtin/index-pack.c:349
 #, c-format
 msgid "cannot open packfile '%s'"
-msgstr "não é possível abrir o ficheiro de pacote '%s'"
+msgstr "incapaz abrir ficheiro de pacote '%s'"
 
-#: builtin/index-pack.c:362
+#: builtin/index-pack.c:363
 msgid "pack signature mismatch"
-msgstr "a assinatura do pacote não corresponde"
+msgstr "assinatura de pacote faz correspondência nenhuma"
 
-#: builtin/index-pack.c:364
+#: builtin/index-pack.c:365
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
-msgstr "versão de pacote %<PRIu32> não suportada"
+msgstr "versão de pacote %<PRIu32> insustentada"
 
-#: builtin/index-pack.c:382
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "pacote com objeto incorreto no offset %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:488
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "a descompactação retornou %d"
 
-#: builtin/index-pack.c:537
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "delta de objeto base com capacidade excedida no valor de offset"
 
-#: builtin/index-pack.c:545
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
-msgstr "offset da base delta está fora do limite"
+msgstr "offset de base delta está fora de limite"
 
-#: builtin/index-pack.c:553
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
-msgstr "objeto de tipo desconhecido %d"
+msgstr "tipo de objeto %d desconhecido"
 
-#: builtin/index-pack.c:584
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
-msgstr "não é possível invocar pread sobre o ficheiro de pacote"
+msgstr "incapaz invocar pread sobre ficheiro de pacote"
 
-#: builtin/index-pack.c:586
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "fim prematuro de ficheiro de pacote, falta %<PRIuMAX> byte"
 msgstr[1] "fim prematuro de ficheiro de pacote, faltam %<PRIuMAX> bytes"
 
-#: builtin/index-pack.c:612
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "inconsistência de descompactação grave"
 
-#: builtin/index-pack.c:757 builtin/index-pack.c:763 builtin/index-pack.c:787
-#: builtin/index-pack.c:826 builtin/index-pack.c:835
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "COLISÃO DE SHA1 COM %s ENCONTRADA!"
 
-#: builtin/index-pack.c:760 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
-msgstr "não foi possível ler %s"
+msgstr "incapaz ler %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
-msgstr "não é possível ler informação de objeto existente %s"
+msgstr "incapaz ler informação existente de objeto %s"
 
-#: builtin/index-pack.c:832
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
-msgstr "não é possível ler o objeto existente %s"
+msgstr "incapaz ler objeto existente %s"
 
-#: builtin/index-pack.c:846
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objeto blob inválido %s"
 
-#: builtin/index-pack.c:849 builtin/index-pack.c:868
-#, fuzzy
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
-msgstr "ignorar objetos compactados"
+msgstr ""
 
-#: builtin/index-pack.c:870
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Nem todos os objetos filhos de %s são alcançáveis"
 
-#: builtin/index-pack.c:931 builtin/index-pack.c:978
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "falha ao aplicar delta"
 
-#: builtin/index-pack.c:1161
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "A receber objetos"
 
-#: builtin/index-pack.c:1161
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "A indexar objetos"
 
-#: builtin/index-pack.c:1195
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
-msgstr "pacote corrompido (SHA1 não corresponde)"
+msgstr "pacote roto (SHA1 sem correspondência)"
 
-#: builtin/index-pack.c:1200
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
-msgstr "não é possível invocar fstat sobre o ficheiro de pacote"
+msgstr "incapaz fstat ficheiro de pacote"
 
-#: builtin/index-pack.c:1203
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "pacote com lixo no final"
 
-#: builtin/index-pack.c:1215
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "extrema confusão em parse_pack_objects()"
 
-#: builtin/index-pack.c:1238
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "A resolver deltas"
 
-#: builtin/index-pack.c:1249 builtin/pack-objects.c:2697
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
-msgstr "não foi possível criar thread: %s"
+msgstr "incapaz criar thread: %s"
 
-#: builtin/index-pack.c:1282
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "extrema confusão"
 
-#: builtin/index-pack.c:1288
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "concluído com %d objeto local"
 msgstr[1] "concluído com %d objetos locais"
 
-#: builtin/index-pack.c:1300
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Soma de verificação inesperada no final de %s (corrupção no disco?)"
 
-#: builtin/index-pack.c:1304
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
-msgstr[0] "pacote com %d delta não resolvido"
-msgstr[1] "pacote com %d deltas não resolvidos"
+msgstr[0] "pacote tem %d delta por resolver"
+msgstr[1] "pacote tem %d deltas por resolver"
 
-#: builtin/index-pack.c:1328
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
-msgstr "não é possível compactar objeto acrescentado (%d)"
+msgstr "incapaz descompactar objeto acrescentado (%d)"
 
-#: builtin/index-pack.c:1424
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
-msgstr "objeto local %s corrompido"
+msgstr ""
 
 #: builtin/index-pack.c:1444
-#, c-format
-msgid "packfile name '%s' does not end with '.pack'"
-msgstr "o nome do ficheiro de pacote '%s' não termina em '.pack'"
+#, fuzzy, c-format
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "ao nome de ficheiro de pacote '%s' falta terminar em '.pack'"
 
-#: builtin/index-pack.c:1469
+#: builtin/index-pack.c:1468
 #, fuzzy, c-format
 msgid "cannot write %s file '%s'"
-msgstr "não é possível escrever o ficheiro de conservação '%s'"
+msgstr "incapaz escrever ficheiro %s '%s'"
 
-#: builtin/index-pack.c:1477
+#: builtin/index-pack.c:1476
 #, fuzzy, c-format
 msgid "cannot close written %s file '%s'"
-msgstr "não é possível fechar o ficheiro de conservação '%s' escrito"
+msgstr "incapaz fechar ficheiro %s gravado '%s'"
 
-#: builtin/index-pack.c:1501
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
-msgstr "erro ao fechar ficheiro de pacote"
+msgstr ""
 
-#: builtin/index-pack.c:1515
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
-msgstr "não é possível guardar ficheiro de pacote"
+msgstr "incapaz guardar ficheiro de pacote"
 
-#: builtin/index-pack.c:1523
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
-msgstr "não é possível guardar o ficheiro índice"
+msgstr "incapaz guardar ficheiro index"
 
-#: builtin/index-pack.c:1567 builtin/pack-objects.c:2944
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "pack.indexversion=%<PRIu32> incorreto"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Incapaz abrir ficheiro pack existente '%s'"
 
-#: builtin/index-pack.c:1633
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Incapaz abrir ficheiro idx existente para '%s'"
 
-#: builtin/index-pack.c:1681
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
-msgstr[0] "%d objeto não delta"
-msgstr[1] "%d objetos não delta"
+msgstr[0] "não-delta: %d objeto"
+msgstr[1] "não-delta: %d objetos"
 
-#: builtin/index-pack.c:1688
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "comprimento de cadeia = %d: %lu objeto"
 msgstr[1] "comprimento de cadeia = %d: %lu objetos"
 
-#: builtin/index-pack.c:1728
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Incapaz voltar a cwd"
 
-#: builtin/index-pack.c:1777 builtin/index-pack.c:1780
-#: builtin/index-pack.c:1796 builtin/index-pack.c:1800
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
-msgstr "mau %s"
+msgstr "%s incorreto"
 
-#: builtin/index-pack.c:1806 builtin/init-db.c:391 builtin/init-db.c:623
-#, fuzzy, c-format
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
+#, c-format
 msgid "unknown hash algorithm '%s'"
-msgstr "Formato de arquivo desconhecido '%s'"
+msgstr ""
 
-#: builtin/index-pack.c:1821
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
-msgstr "--fix-thin não pode ser usado sem --stdin"
+msgstr "--fix-thin requer ser usado com --stdin"
 
-#: builtin/index-pack.c:1823
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin requer um repositório git"
 
-#: builtin/index-pack.c:1825
+#: builtin/index-pack.c:1854
 #, fuzzy
 msgid "--object-format cannot be used with --stdin"
-msgstr "--fix-thin não pode ser usado sem --stdin"
+msgstr "--object-format incapaz ser usado com --stdin"
 
-#: builtin/index-pack.c:1831
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify sem nome do ficheiro de pacote indicado"
 
-#: builtin/index-pack.c:1892 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 #, fuzzy
 msgid "fsck error in pack objects"
 msgstr "erro no objeto: %s"
 
-#: builtin/init-db.c:64
+#: builtin/init-db.c:63
 #, c-format
 msgid "cannot stat template '%s'"
-msgstr "não é possível invocar stat sobre o modelo '%s'"
+msgstr "incapaz obter estatutário a modelo '%s'"
 
-#: builtin/init-db.c:69
+#: builtin/init-db.c:68
 #, c-format
 msgid "cannot opendir '%s'"
-msgstr "não é possível abrir (opendir) '%s'"
+msgstr "incapaz opendir '%s'"
 
-#: builtin/init-db.c:81
+#: builtin/init-db.c:80
 #, c-format
 msgid "cannot readlink '%s'"
-msgstr "não é possível ler (readlink) '%s'"
+msgstr "incapaz readlink '%s'"
 
-#: builtin/init-db.c:83
+#: builtin/init-db.c:82
 #, c-format
 msgid "cannot symlink '%s' '%s'"
-msgstr "não é possível criar a ligação simbólica '%s' '%s'"
+msgstr "incapaz symlink '%s' '%s'"
 
-#: builtin/init-db.c:89
+#: builtin/init-db.c:88
 #, c-format
 msgid "cannot copy '%s' to '%s'"
-msgstr "não é possível copiar '%s' para '%s'"
+msgstr "incapaz copiar '%s' para '%s'"
 
-#: builtin/init-db.c:93
+#: builtin/init-db.c:92
 #, c-format
 msgid "ignoring template %s"
-msgstr "modelo %s ignorado"
+msgstr "ignorando modelo %s"
 
-#: builtin/init-db.c:124
+#: builtin/init-db.c:123
 #, fuzzy, c-format
 msgid "templates not found in %s"
-msgstr "modelos não encontrados em %s"
+msgstr "modelos em %s por encontrar"
 
-#: builtin/init-db.c:139
+#: builtin/init-db.c:138
 #, c-format
 msgid "not copying templates from '%s': %s"
-msgstr "modelos não copiados de '%s': %s"
+msgstr "deixando de copiar modelos de '%s': %s"
 
-#: builtin/init-db.c:274
+#: builtin/init-db.c:263
 #, fuzzy, c-format
 msgid "invalid initial branch name: '%s'"
-msgstr "Nome de ramo inválido: '%s'"
+msgstr "Nome de ramo inicial inválido: '%s'"
 
-#: builtin/init-db.c:366
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
-msgstr "não foi possível processar o tipo de ficheiro %d"
+msgstr "incapaz lidar com tipo de ficheiro %d"
 
-#: builtin/init-db.c:369
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
-msgstr "não foi possível mover %s para %s"
+msgstr "incapaz mover %s para %s"
 
-#: builtin/init-db.c:385
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr ""
 
-#: builtin/init-db.c:409 builtin/init-db.c:412
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s já existe"
 
-#: builtin/init-db.c:443
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr ""
 
-#: builtin/init-db.c:474
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Reiniciei respositório partilhado existente de Git em %s%s\n"
 
-#: builtin/init-db.c:475
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Reiniciei repositório existente de Git em %s%s\n"
 
-#: builtin/init-db.c:479
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Iniciei repositório vazio partilhado de Git em %s%s\n"
 
-#: builtin/init-db.c:480
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Iniciei repositório vazio de Git em %s%s\n"
 
-#: builtin/init-db.c:529
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16263,58 +16934,57 @@
 "git init [-q | --quiet] [--bare] [--template=<diretório-modelo>] [--"
 "shared[=<permissões>]] [<diretório>]"
 
-#: builtin/init-db.c:555
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "permissões"
 
-#: builtin/init-db.c:556
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 "especificar que o repositório git será partilhado por vários utilizadores"
 
-#: builtin/init-db.c:562
+#: builtin/init-db.c:551
 #, fuzzy
 msgid "override the name of the initial branch"
 msgstr "substituir o bit executável dos ficheiros listados"
 
-#: builtin/init-db.c:563 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr ""
 
-#: builtin/init-db.c:564 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr ""
 
-#: builtin/init-db.c:571
-#, fuzzy
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
-msgstr "--deepen e --depth são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/init-db.c:600 builtin/init-db.c:605
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
-msgstr "não é possível criar o diretório %s"
+msgstr "incapaz mkdir %s"
 
-#: builtin/init-db.c:609 builtin/init-db.c:664
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
-msgstr "não é possível mudar para o diretório %s"
+msgstr "incapaz chdir para %s"
 
-#: builtin/init-db.c:636
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr ""
-"%s (ou --work-tree=<diretório>) não é permitido sem especificar %s (ou --git-"
+"%s (ou --work-tree=<diretório>) só é permitido se especificar %s (ou --git-"
 "dir=<diretório>)"
 
-#: builtin/init-db.c:688
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Incapaz aceder work tree '%s'"
 
-#: builtin/init-db.c:693
+#: builtin/init-db.c:684
 #, fuzzy
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir incompatível com repositório nú"
@@ -16371,10 +17041,6 @@
 msgid "do not treat --- specially"
 msgstr ""
 
-#: builtin/interpret-trailers.c:111
-msgid "trailer"
-msgstr "terminador"
-
 #: builtin/interpret-trailers.c:112
 msgid "trailer(s) to add"
 msgstr "terminadores a adicionar"
@@ -16382,143 +17048,143 @@
 #: builtin/interpret-trailers.c:123
 #, fuzzy
 msgid "--trailer with --only-input does not make sense"
-msgstr "--name-only não faz sentido"
+msgstr "--trailer com --only-input faz sentido nenhum"
 
 #: builtin/interpret-trailers.c:133
 msgid "no input file given for in-place editing"
 msgstr "fornecido para edição in-place, ficheiro de entrada nenhum"
 
-#: builtin/log.c:58
+#: builtin/log.c:59
 msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git log [<opções>] [<intervalo-de-revisões>] [[--] <caminho>...]"
 
-#: builtin/log.c:59
+#: builtin/log.c:60
 msgid "git show [<options>] <object>..."
 msgstr "git show [<opções>] <objeto>..."
 
-#: builtin/log.c:112
+#: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
 msgstr "opção --decorate inválida: %s"
 
-#: builtin/log.c:179
+#: builtin/log.c:180
 msgid "show source"
 msgstr "mostrar origem"
 
-#: builtin/log.c:180
-msgid "Use mail map file"
+#: builtin/log.c:181
+#, fuzzy
+msgid "use mail map file"
 msgstr "usar ficheiro de mapeamento de correio"
 
-#: builtin/log.c:183
+#: builtin/log.c:184
 #, fuzzy
 msgid "only decorate refs that match <pattern>"
 msgstr "usar apenas referência que correspondam ao <padrão>"
 
-#: builtin/log.c:185
+#: builtin/log.c:186
 #, fuzzy
 msgid "do not decorate refs that match <pattern>"
-msgstr "não considerar tags que correspondam ao <padrão>"
+msgstr "deixar por decorar refs correspondentes a <padrão>"
 
-#: builtin/log.c:186
+#: builtin/log.c:187
 msgid "decorate options"
 msgstr "opções de decoração"
 
-#: builtin/log.c:189
+#: builtin/log.c:190
+#, fuzzy
 msgid ""
-"Trace the evolution of line range <start>,<end> or function :<funcname> in "
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
 "<file>"
-msgstr ""
+msgstr "Processar apenas o intervalo de linhas n,m, a cantar de 1"
 
-#: builtin/log.c:212
+#: builtin/log.c:213
 #, fuzzy
 msgid "-L<range>:<file> cannot be used with pathspec"
-msgstr "%s: %s não pode ser usado com %s"
+msgstr "-L<alcance>:<ficheiro>incapaz ser usado com especificador de path"
 
-#: builtin/log.c:302
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
-msgstr "Resultado final: %d %s\n"
+msgstr "Output final: %d %s\n"
 
-#: builtin/log.c:564
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: ficheiro incorreto"
 
-#: builtin/log.c:579 builtin/log.c:674
+#: builtin/log.c:586 builtin/log.c:676
 #, fuzzy, c-format
 msgid "could not read object %s"
 msgstr "incapaz ler objeto %s"
 
-#: builtin/log.c:699
+#: builtin/log.c:701
 #, fuzzy, c-format
 msgid "unknown type: %d"
 msgstr "Tipo desconhecido: %d"
 
-#: builtin/log.c:848
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr ""
 
-#: builtin/log.c:855
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers sem valor"
 
-#: builtin/log.c:984
+#: builtin/log.c:982
 #, fuzzy, c-format
 msgid "cannot open patch file %s"
 msgstr "incapaz abrir ficheiro patch %s"
 
-#: builtin/log.c:1001
-#, fuzzy
+#: builtin/log.c:999
 msgid "need exactly one range"
-msgstr "É necessário exatamente um intervalo."
+msgstr ""
 
-#: builtin/log.c:1011
+#: builtin/log.c:1009
 #, fuzzy
 msgid "not a range"
 msgstr "é intervalo nenhum"
 
-#: builtin/log.c:1175
+#: builtin/log.c:1173
 #, fuzzy
 msgid "cover letter needs email format"
 msgstr "A carta de apresentação precisa de um formato de e-mail"
 
-#: builtin/log.c:1181
-#, fuzzy
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
-msgstr "Falha ao criar os ficheiros de saída"
+msgstr ""
 
-#: builtin/log.c:1262
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to incorreto: %s"
 
-#: builtin/log.c:1289
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<opções>] [<desde> | <intervalo-de-revisões>]"
 
-#: builtin/log.c:1347
+#: builtin/log.c:1351
 #, fuzzy
 msgid "two output directories?"
 msgstr "Dois diretórios de saída?"
 
-#: builtin/log.c:1498 builtin/log.c:2318 builtin/log.c:2320 builtin/log.c:2332
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, fuzzy, c-format
 msgid "unknown commit %s"
 msgstr "Commit desconhecido %s"
 
-#: builtin/log.c:1509 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, fuzzy, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "falha ao resolver '%s' como uma referência válida."
 
-#: builtin/log.c:1518
+#: builtin/log.c:1522
 #, fuzzy
 msgid "could not find exact merge base"
 msgstr "incapaz encontrar a exata base de junção."
 
-#: builtin/log.c:1528
+#: builtin/log.c:1532
 #, fuzzy
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
@@ -16530,415 +17196,420 @@
 "use branch --set-upstream-to para seguir um ramo remoto.\n"
 "Ou pode especificar o commit base com --base=<base-commit-id> manualmente."
 
-#: builtin/log.c:1551
+#: builtin/log.c:1555
 #, fuzzy
 msgid "failed to find exact merge base"
 msgstr "Falha ao procurar base exata de integração"
 
-#: builtin/log.c:1568
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "o commit base deve ser o antecessor da lista de revisões"
 
-#: builtin/log.c:1578
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
-msgstr "o commit base não deve fazer parte da lista de revisões"
+msgstr "commit base devia estar fora da lista de revisões"
 
-#: builtin/log.c:1636
+#: builtin/log.c:1640
 msgid "cannot get patch id"
-msgstr "não é possível obter o id do patch"
+msgstr "incapaz obter id de patch"
 
-#: builtin/log.c:1693
+#: builtin/log.c:1703
 #, fuzzy
 msgid "failed to infer range-diff origin of current series"
 msgstr "falha ao guardar ligação à referência de notas atual (%s)"
 
-#: builtin/log.c:1695
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr ""
 
-#: builtin/log.c:1739
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "usar [PATCH n/m] mesmo com um único patch"
 
-#: builtin/log.c:1742
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "usar [PATCH] mesmo com múltiplos patches"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "imprimir patches para a saída padrão"
 
-#: builtin/log.c:1748
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "gerar uma carta de apresentação"
 
-#: builtin/log.c:1750
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr ""
 "usar uma sequência de números simples para denominar os ficheiros gerados"
 
-#: builtin/log.c:1751
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1752
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "usar <sfx> em vez de '.patch'"
 
-#: builtin/log.c:1754
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "começar a numerar os patches em <n> em vez de 1"
 
-#: builtin/log.c:1756
+#: builtin/log.c:1765
+msgid "reroll-count"
+msgstr ""
+
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "marcar a série como a n-ésima reiteração"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1768
 #, fuzzy
 msgid "max length of output filename"
 msgstr "tamanho máximo de cada ficheiro de pacote gerado"
 
-#: builtin/log.c:1760
-msgid "Use [RFC PATCH] instead of [PATCH]"
+#: builtin/log.c:1770
+#, fuzzy
+msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "Usar [RFC PATCH] em vez de [PATCH]"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr ""
 
-#: builtin/log.c:1764
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr ""
 
-#: builtin/log.c:1766
-msgid "Use [<prefix>] instead of [PATCH]"
+#: builtin/log.c:1776
+#, fuzzy
+msgid "use [<prefix>] instead of [PATCH]"
 msgstr "usar [<prefixo>] em vez de [PATCH]"
 
-#: builtin/log.c:1769
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "guardar os ficheiros resultantes em <dir>"
 
-#: builtin/log.c:1772
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
-msgstr "não tirar/inserir [PATCH]"
+msgstr "deixar de despir/adicionar [PATCH]"
 
-#: builtin/log.c:1775
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
-msgstr "não gerar diffs binários"
+msgstr "deixar de gerar diffs binários"
 
-#: builtin/log.c:1777
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "preencher o cabeçalho From com hash de zeros"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
-msgstr "não incluir um patch que coincida com um commit a montante"
+msgstr "incluir nenhum patch correspondente commit upstream"
 
-#: builtin/log.c:1781
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr ""
 "mostrar no formato de patch em vez de no formato por omissão (patch + stat)"
 
-#: builtin/log.c:1783
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "Mensagem"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1794
 msgid "header"
 msgstr "cabeçalho"
 
-#: builtin/log.c:1785
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "adicionar cabeçalho de e-mail"
 
-#: builtin/log.c:1786 builtin/log.c:1787
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "e-mail"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "adicionar cabeçalho To:"
 
-#: builtin/log.c:1787
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "adicionar cabeçalho Cc:"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "identidade"
 
-#: builtin/log.c:1789
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
-"definir o endereço From como <identidade> (ou como identidade do committer "
-"se não indicado)"
+"definir endereço From para <identidade> (ou, identidade do committer, caso "
+"contrário)"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "id-mensagem"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "usar o primeiro email para responder a <id-mensagem>"
 
-#: builtin/log.c:1793 builtin/log.c:1796
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "limite"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "anexar o patch"
 
-#: builtin/log.c:1797
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "incorporar o patch"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "ativar mensagens por tópicos, estilos: shallow (raso), deep (profundo)"
 
-#: builtin/log.c:1803
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "assinatura"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "adicionar uma assinatura"
 
-#: builtin/log.c:1805
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "commit-base"
 
-#: builtin/log.c:1806
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "adicionar informação pré-requisito da árvore à série de patches"
 
-#: builtin/log.c:1809
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "adicionar uma assinatura de um ficheiro"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
-msgstr "não imprimir os nomes dos ficheiros de patch"
+msgstr "imprimir nomes de ficheiros de patch nenhuns"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1822
 #, fuzzy
 msgid "show progress while generating patches"
 msgstr "mostrar medidor de progresso durante a fase de escrita de objetos"
 
-#: builtin/log.c:1814
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1817
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 
-#: builtin/log.c:1819
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr ""
 
-#: builtin/log.c:1905
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
-msgstr "linha de identidade inválida: %s"
+msgstr "linha de indentação inválida: %s"
 
-#: builtin/log.c:1920
+#: builtin/log.c:1931
 #, fuzzy
 msgid "-n and -k are mutually exclusive"
 msgstr "-n e -k são mutuamente exclusivos."
 
-#: builtin/log.c:1922
+#: builtin/log.c:1933
 #, fuzzy
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc e -k são mutuamente exclusivos."
 
-#: builtin/log.c:1930
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
-msgstr "--name-only não faz sentido"
+msgstr "--name-only faz sentido nenhum"
 
-#: builtin/log.c:1932
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
-msgstr "--name-status não faz sentido"
+msgstr "--name-status faz sentido nenhum"
 
-#: builtin/log.c:1934
+#: builtin/log.c:1945
 msgid "--check does not make sense"
-msgstr "--check não faz sentido"
+msgstr "--check faz sentido nenhum"
 
-#: builtin/log.c:1956
-#, fuzzy
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
-msgstr "-b, -B e --detach são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/log.c:2079
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2083
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr ""
 
-#: builtin/log.c:2084
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2090
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr ""
 
-#: builtin/log.c:2094
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr ""
 
-#: builtin/log.c:2102
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr ""
 
-#: builtin/log.c:2103
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr ""
 
-#: builtin/log.c:2114
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
-msgstr "não é possível ler o ficheiro de assinatura '%s'"
+msgstr "incapaz ler ficheiro de assinatura '%s'"
 
-#: builtin/log.c:2150
+#: builtin/log.c:2160
 #, fuzzy
 msgid "Generating patches"
 msgstr "falha ao editar patch"
 
-#: builtin/log.c:2194
-#, fuzzy
+#: builtin/log.c:2204
 msgid "failed to create output files"
-msgstr "Falha ao criar os ficheiros de saída"
+msgstr ""
 
-#: builtin/log.c:2253
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<ramo-a-montante> [<head> [<limite>]]]"
 
-#: builtin/log.c:2307
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr ""
-"O ramo remoto seguido não foi encontrado, especifique <ramo-a-montante> "
+"Incapaz encontrar ramo monitorizado remoto, por favor especifica <upstream> "
 "manualmente.\n"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:563
 msgid "git ls-files [<options>] [<file>...]"
 msgstr "git ls-files [<opções>] [<ficheiro>...]"
 
-#: builtin/ls-files.c:527
+#: builtin/ls-files.c:619
 msgid "identify the file status with tags"
 msgstr "identificar o estado do ficheiro com tags"
 
-#: builtin/ls-files.c:529
+#: builtin/ls-files.c:621
 msgid "use lowercase letters for 'assume unchanged' files"
-msgstr ""
-"usar letras minúsculas para ficheiros 'assumido não alterado' ('assume "
-"unchanged')"
+msgstr "usar letras minúsculas para ficheiros 'assume unchanged'"
 
-#: builtin/ls-files.c:531
+#: builtin/ls-files.c:623
 #, fuzzy
 msgid "use lowercase letters for 'fsmonitor clean' files"
-msgstr ""
-"usar letras minúsculas para ficheiros 'assumido não alterado' ('assume "
-"unchanged')"
+msgstr "usar letras minúsculas para ficheiros 'fsmonitor clean'"
 
-#: builtin/ls-files.c:533
+#: builtin/ls-files.c:625
 msgid "show cached files in the output (default)"
 msgstr "mostrar ficheiros em cache na saída (predefinição)"
 
-#: builtin/ls-files.c:535
+#: builtin/ls-files.c:627
 msgid "show deleted files in the output"
 msgstr "mostrar ficheiros eliminados na saída"
 
-#: builtin/ls-files.c:537
+#: builtin/ls-files.c:629
 msgid "show modified files in the output"
 msgstr "mostrar ficheiros modificados na saída"
 
-#: builtin/ls-files.c:539
+#: builtin/ls-files.c:631
 msgid "show other files in the output"
 msgstr "mostrar outros ficheiros na saída"
 
-#: builtin/ls-files.c:541
+#: builtin/ls-files.c:633
 msgid "show ignored files in the output"
 msgstr "mostrar ficheiros ignorados na saída"
 
-#: builtin/ls-files.c:544
+#: builtin/ls-files.c:636
 msgid "show staged contents' object name in the output"
 msgstr "mostrar nome de objetos com conteúdo preparado, na saída"
 
-#: builtin/ls-files.c:546
+#: builtin/ls-files.c:638
 msgid "show files on the filesystem that need to be removed"
 msgstr ""
 "mostrar ficheiros no sistema de ficheiros que precisam de ser removidos"
 
-#: builtin/ls-files.c:548
+#: builtin/ls-files.c:640
 msgid "show 'other' directories' names only"
 msgstr "mostrar nomes de diretórios 'other' (outro)"
 
-#: builtin/ls-files.c:550
+#: builtin/ls-files.c:642
 msgid "show line endings of files"
 msgstr "mostrar finais de linha dos ficheiros"
 
-#: builtin/ls-files.c:552
+#: builtin/ls-files.c:644
 msgid "don't show empty directories"
-msgstr "não mostrar diretórios vazios"
+msgstr "mostrar pastas vazias nenhumas"
 
-#: builtin/ls-files.c:555
+#: builtin/ls-files.c:647
 msgid "show unmerged files in the output"
-msgstr "mostrar ficheiros não integrados na saída"
+msgstr "mostrar ficheiros por juntar no output"
 
-#: builtin/ls-files.c:557
+#: builtin/ls-files.c:649
 msgid "show resolve-undo information"
 msgstr "mostrar informação de resolver-desfazer"
 
-#: builtin/ls-files.c:559
+#: builtin/ls-files.c:651
 msgid "skip files matching pattern"
 msgstr "ignorar ficheiros que correspondam ao padrão"
 
-#: builtin/ls-files.c:562
+#: builtin/ls-files.c:654
 msgid "exclude patterns are read from <file>"
 msgstr "ler padrões de exclusão do <ficheiro>"
 
-#: builtin/ls-files.c:565
+#: builtin/ls-files.c:657
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "ler padrões de exclusão por diretório do <ficheiro>"
 
-#: builtin/ls-files.c:567
+#: builtin/ls-files.c:659
 msgid "add the standard git exclusions"
 msgstr "incluir as exclusões standard do git"
 
-#: builtin/ls-files.c:571
+#: builtin/ls-files.c:663
 msgid "make the output relative to the project top directory"
 msgstr "mostrar os caminhos relativamente ao diretório superior do projeto"
 
-#: builtin/ls-files.c:574
+#: builtin/ls-files.c:666
 msgid "recurse through submodules"
-msgstr "percorrer submódulos recursivamente"
+msgstr "percorrer recursivamente submódulos"
 
-#: builtin/ls-files.c:576
+#: builtin/ls-files.c:668
 msgid "if any <file> is not in the index, treat this as an error"
-msgstr "se um <ficheiro> não estiver no índice, tratar como erro"
+msgstr "se estiver no index <ficheiro> nenhum, tratar como erro"
 
-#: builtin/ls-files.c:577
+#: builtin/ls-files.c:669
 msgid "tree-ish"
 msgstr "árvore-etc"
 
-#: builtin/ls-files.c:578
+#: builtin/ls-files.c:670
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
 "fingir que os caminhos removidos desde <árvore-etc> ainda estão presentes"
 
-#: builtin/ls-files.c:580
+#: builtin/ls-files.c:672
 msgid "show debugging data"
 msgstr "mostrar dados de depuração"
 
+#: builtin/ls-files.c:674
+#, fuzzy
+msgid "suppress duplicate entries"
+msgstr "suprimir a cadeias de caracteres de nomes"
+
 #: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
@@ -16949,39 +17620,39 @@
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<repositório> [<referências>...]]"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:60
 msgid "do not print remote URL"
-msgstr "não imprimir URL remoto"
+msgstr "imprimir URL remoto nenhum"
 
-#: builtin/ls-remote.c:60 builtin/ls-remote.c:62 builtin/rebase.c:1398
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63 builtin/rebase.c:1399
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
+#: builtin/ls-remote.c:62 builtin/ls-remote.c:64
 msgid "path of git-upload-pack on the remote host"
 msgstr "caminho para git-upload-pack no servidor remoto"
 
-#: builtin/ls-remote.c:65
+#: builtin/ls-remote.c:66
 msgid "limit to tags"
 msgstr "restringir-se a tags"
 
-#: builtin/ls-remote.c:66
+#: builtin/ls-remote.c:67
 msgid "limit to heads"
 msgstr "restringir-se a cabeças"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:68
 msgid "do not show peeled tags"
-msgstr "não mostrar tags descascadas"
+msgstr "mostrar nenhumas tags descascadas"
 
-#: builtin/ls-remote.c:69
+#: builtin/ls-remote.c:70
 msgid "take url.<base>.insteadOf into account"
 msgstr "ter url.<base>.insteadOf em conta"
 
-#: builtin/ls-remote.c:72
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
-msgstr "terminar com código de saída 2 se não forem encontradas referências"
+msgstr "terminar com código de saída 2 se forem encontradas refs nenhumas"
 
-#: builtin/ls-remote.c:75
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "mostrar a referência subjacente em adição ao objeto por ela apontado"
 
@@ -17020,7 +17691,60 @@
 #: builtin/ls-tree.c:145
 msgid "list entire tree; not just current directory (implies --full-name)"
 msgstr ""
-"mostrar a árvore completa; não apenas o diretório atual (implica --full-name)"
+"listar toda árvore; e para além do diretório atual (implica --full-name)"
+
+#. TRANSLATORS: keep <> in "<" mail ">" info.
+#: builtin/mailinfo.c:14
+#, fuzzy
+msgid "git mailinfo [<options>] <msg> <patch> < mail >info"
+msgstr "git merge [<opções>] <msg> HEAD <commit>"
+
+#: builtin/mailinfo.c:58
+#, fuzzy
+msgid "keep subject"
+msgstr "manter assunto"
+
+#: builtin/mailinfo.c:60
+msgid "keep non patch brackets in subject"
+msgstr ""
+
+#: builtin/mailinfo.c:62
+#, fuzzy
+msgid "copy Message-ID to the end of commit message"
+msgstr "Esta é a 2ª mensagem de commit:"
+
+#: builtin/mailinfo.c:64
+msgid "re-code metadata to i18n.commitEncoding"
+msgstr ""
+
+#: builtin/mailinfo.c:67
+msgid "disable charset re-coding of metadata"
+msgstr ""
+
+#: builtin/mailinfo.c:69
+msgid "encoding"
+msgstr ""
+
+#: builtin/mailinfo.c:70
+msgid "re-code metadata to this encoding"
+msgstr ""
+
+#: builtin/mailinfo.c:72
+msgid "use scissors"
+msgstr ""
+
+#: builtin/mailinfo.c:73
+#, fuzzy
+msgid "<action>"
+msgstr "ação"
+
+#: builtin/mailinfo.c:74
+msgid "action when quoted CR is found"
+msgstr ""
+
+#: builtin/mailinfo.c:77
+msgid "use headers in message's body"
+msgstr ""
 
 #: builtin/mailsplit.c:241
 #, c-format
@@ -17057,11 +17781,11 @@
 
 #: builtin/merge-base.c:147
 msgid "list revs not reachable from others"
-msgstr "listar revisões não alcançáveis a partir de outras"
+msgstr "listar revs apenas alcançáveis pelos nossos"
 
 #: builtin/merge-base.c:149
 msgid "is the first one ancestor of the other?"
-msgstr "o primeiro é antecessor do segundo?"
+msgstr "é o primeiro antecessor do outro?"
 
 #: builtin/merge-base.c:151
 msgid "find where <commit> forked from reflog of <ref>"
@@ -17102,7 +17826,7 @@
 
 #: builtin/merge-file.c:45
 msgid "do not warn about conflicts"
-msgstr "não alertar sobre conflitos"
+msgstr "deixar de alertar sobre conflitos"
 
 #: builtin/merge-file.c:47
 msgid "set labels for file1/orig-file/file2"
@@ -17111,221 +17835,215 @@
 #: builtin/merge-recursive.c:47
 #, c-format
 msgid "unknown option %s"
-msgstr "opção desconhecido %s"
+msgstr ""
 
 #: builtin/merge-recursive.c:53
 #, c-format
 msgid "could not parse object '%s'"
-msgstr "não foi possível analisar o objeto '%s'"
+msgstr "incapaz processar objeto '%s'"
 
 #: builtin/merge-recursive.c:57
 #, c-format
 msgid "cannot handle more than %d base. Ignoring %s."
 msgid_plural "cannot handle more than %d bases. Ignoring %s."
-msgstr[0] "não é possível processar mais do que %d base. Ignorar %s."
-msgstr[1] "não é possível processar mais do que %d bases. Ignorar %s."
+msgstr[0] "incapaz lidar mais do que %d base. Ignorando %s."
+msgstr[1] "incapaz lidar mais do que %d bases. Ignorando %s."
 
 #: builtin/merge-recursive.c:65
 msgid "not handling anything other than two heads merge."
-msgstr "não se pode processar outra coisa senão integração de duas cabeças."
+msgstr "apenas lidando com junção de duas heads"
 
 #: builtin/merge-recursive.c:74 builtin/merge-recursive.c:76
 #, c-format
 msgid "could not resolve ref '%s'"
-msgstr "não foi possível resolver a referência %s"
+msgstr "incapaz resolver ref '%s'"
 
 #: builtin/merge-recursive.c:82
 #, c-format
 msgid "Merging %s with %s\n"
-msgstr "A integrar %s com %s\n"
+msgstr "Juntando %s com %s\n"
 
-#: builtin/merge.c:57
+#: builtin/merge.c:58
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opções>] [<commit>...]"
 
-#: builtin/merge.c:58
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:59
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
-#: builtin/merge.c:122
+#: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "a opção 'm' requer um valor"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:146
 #, fuzzy, c-format
 msgid "option `%s' requires a value"
 msgstr "a opção '%s' requer um valor"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:199
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
-msgstr "Estratégia de integração '%s' não encontrada.\n"
+msgstr "Incapaz encontrar estratégia de junção '%s'.\n"
 
-#: builtin/merge.c:199
+#: builtin/merge.c:200
 #, c-format
 msgid "Available strategies are:"
 msgstr "Estratégias disponíveis:"
 
-#: builtin/merge.c:204
+#: builtin/merge.c:205
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Estratégias personalizadas disponíveis:"
 
-#: builtin/merge.c:255 builtin/pull.c:133
+#: builtin/merge.c:256 builtin/pull.c:133
 msgid "do not show a diffstat at the end of the merge"
-msgstr "não apresentar um diffstat ao fim da integração"
+msgstr "mostrar diffstat nenhuma ao fim da junção"
 
-#: builtin/merge.c:258 builtin/pull.c:136
+#: builtin/merge.c:259 builtin/pull.c:136
 msgid "show a diffstat at the end of the merge"
-msgstr "mostrar um diffstat ao fim da integração"
+msgstr "mostrar um diffstat ao fim da junção"
 
-#: builtin/merge.c:259 builtin/pull.c:139
+#: builtin/merge.c:260 builtin/pull.c:139
 msgid "(synonym to --stat)"
 msgstr "(sinónimo de --stat)"
 
-#: builtin/merge.c:261 builtin/pull.c:142
+#: builtin/merge.c:262 builtin/pull.c:142
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "adicionar (no máximo <n>) entradas do shortlog à mensagem de commit da "
 "integração"
 
-#: builtin/merge.c:264 builtin/pull.c:148
+#: builtin/merge.c:265 builtin/pull.c:148
 msgid "create a single commit instead of doing a merge"
 msgstr "criar um único commit em vez de realizar uma integração"
 
-#: builtin/merge.c:266 builtin/pull.c:151
+#: builtin/merge.c:267 builtin/pull.c:151
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "realizar um commit se a integração for bem sucedida (predefinição)"
 
-#: builtin/merge.c:268 builtin/pull.c:154
+#: builtin/merge.c:269 builtin/pull.c:154
 msgid "edit message before committing"
 msgstr "editar a mensagem antes de submeter"
 
-#: builtin/merge.c:270
+#: builtin/merge.c:271
 msgid "allow fast-forward (default)"
 msgstr "permitir avanço rápido (predefinição)"
 
-#: builtin/merge.c:272 builtin/pull.c:161
+#: builtin/merge.c:273 builtin/pull.c:161
 msgid "abort if fast-forward is not possible"
-msgstr "abortar se não é possível efetuar avanço rápido"
+msgstr "abortar se fast-forward é impossível"
 
-#: builtin/merge.c:276 builtin/pull.c:164
+#: builtin/merge.c:277 builtin/pull.c:164
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "verificar se o commit tem uma assinatura GPG válida"
 
-#: builtin/merge.c:277 builtin/notes.c:787 builtin/pull.c:168
-#: builtin/rebase.c:539 builtin/rebase.c:1412 builtin/revert.c:114
+#: builtin/merge.c:278 builtin/notes.c:787 builtin/pull.c:168
+#: builtin/rebase.c:540 builtin/rebase.c:1413 builtin/revert.c:114
 msgid "strategy"
 msgstr "estratégia"
 
-#: builtin/merge.c:278 builtin/pull.c:169
+#: builtin/merge.c:279 builtin/pull.c:169
 msgid "merge strategy to use"
 msgstr "estratégia de integração a usar"
 
-#: builtin/merge.c:279 builtin/pull.c:172
+#: builtin/merge.c:280 builtin/pull.c:172
 msgid "option=value"
 msgstr "opção=valor"
 
-#: builtin/merge.c:280 builtin/pull.c:173
+#: builtin/merge.c:281 builtin/pull.c:173
 msgid "option for selected merge strategy"
 msgstr "opções da estratégia de integração selecionada"
 
-#: builtin/merge.c:282
+#: builtin/merge.c:283
 msgid "merge commit message (for a non-fast-forward merge)"
-msgstr "mensagem de commit (de integração não suscetível a avanço rápido)"
+msgstr "mensagem de commit de junção (para junções non-fast-forward)"
 
-#: builtin/merge.c:289
+#: builtin/merge.c:290
 msgid "abort the current in-progress merge"
 msgstr "abortar integração em curso"
 
-#: builtin/merge.c:291
+#: builtin/merge.c:292
 #, fuzzy
 msgid "--abort but leave index and working tree alone"
 msgstr "repor HEAD, índice e árvore de trabalho"
 
-#: builtin/merge.c:293
+#: builtin/merge.c:294
 msgid "continue the current in-progress merge"
 msgstr "continuar a integração em curso"
 
-#: builtin/merge.c:295 builtin/pull.c:180
+#: builtin/merge.c:296 builtin/pull.c:180
 msgid "allow merging unrelated histories"
-msgstr "permitir integração de históricos não relacionados"
+msgstr "permitir junção de históricos diferentes"
 
-#: builtin/merge.c:302
+#: builtin/merge.c:303
 #, fuzzy
 msgid "bypass pre-merge-commit and commit-msg hooks"
 msgstr "ignorar pre-commit e commit-msg hooks"
 
-#: builtin/merge.c:319
+#: builtin/merge.c:320
 msgid "could not run stash."
-msgstr "não foi possível executar o comando stash."
+msgstr "incapaz executar stash."
 
-#: builtin/merge.c:324
+#: builtin/merge.c:325
 msgid "stash failed"
-msgstr "falha ao executar o comando stash"
+msgstr ""
 
-#: builtin/merge.c:329
+#: builtin/merge.c:330
 #, c-format
 msgid "not a valid object: %s"
-msgstr "nome de objeto inválido: %s"
+msgstr ""
 
-#: builtin/merge.c:351 builtin/merge.c:368
+#: builtin/merge.c:352 builtin/merge.c:369
 msgid "read-tree failed"
 msgstr "falha ao executar o comando read-tree"
 
-#: builtin/merge.c:398
-msgid " (nothing to squash)"
+#: builtin/merge.c:400
+#, fuzzy
+msgid "Already up to date. (nothing to squash)"
 msgstr " (nada para esmagar)"
 
-#: builtin/merge.c:409
+#: builtin/merge.c:414
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
-msgstr "Commit esmagado -- HEAD não atualizada\n"
+msgstr "Squash commit -- deixar HEAD por atualizar\n"
 
-#: builtin/merge.c:459
+#: builtin/merge.c:464
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
-msgstr "Nenhuma mensagem de integração -- HEAD não atualizada\n"
+msgstr "Mensagem de junção nenhuma -- deixar HEAD por atualizar\n"
 
-#: builtin/merge.c:510
+#: builtin/merge.c:515
 #, c-format
 msgid "'%s' does not point to a commit"
-msgstr "'%s' não aponta para um commit"
+msgstr "'%s' aponta para commit nenhum"
 
-#: builtin/merge.c:597
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Valor de branch.%s.mergeoptions incorreto: %s"
 
-#: builtin/merge.c:723
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Lidando nada além da junção de duas heads."
 
-#: builtin/merge.c:736
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opção desconhecida de merge-recursive: -X%s"
 
-#: builtin/merge.c:755 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
-msgstr "não foi possível escrever %s"
+msgstr "incapaz escrever %s"
 
-#: builtin/merge.c:807
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Incapaz ler de '%s'"
 
-#: builtin/merge.c:816
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
-msgstr "Usa 'git commit' para completar a junção. Committando junção nenhuma.\n"
+msgstr ""
+"Usa 'git commit' para completar a junção. Committando junção nenhuma.\n"
 
-#: builtin/merge.c:822
+#: builtin/merge.c:828
 #, fuzzy
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
@@ -17337,12 +18055,12 @@
 "branch.\n"
 "\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:833
 #, fuzzy
 msgid "An empty message aborts the commit.\n"
 msgstr "Uma mensagem vazia aborta o commit.\n"
 
-#: builtin/merge.c:830
+#: builtin/merge.c:836
 #, fuzzy, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17351,75 +18069,75 @@
 "Linhas começadas com '%c' são ignoradas, e uma messagem vazia aborta\n"
 "o commit.\n"
 
-#: builtin/merge.c:883
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Mensagem commit vazia."
 
-#: builtin/merge.c:898
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Maravilhoso.\n"
 
-#: builtin/merge.c:959
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Merge automático falhou; resolve os conflitos e depois podes commitar o "
 "resultado.\n"
 
-#: builtin/merge.c:998
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Nenhum ramo atual."
 
-#: builtin/merge.c:1000
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Ŕamo atual de remoto nenhum."
 
-#: builtin/merge.c:1002
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Ramo atual sem upstream default definido."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Nenhum ramo de monitorização remoto seguido por %s de %s"
 
-#: builtin/merge.c:1064
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Valor '%s' incorreto no ambiente '%s'"
 
-#: builtin/merge.c:1167
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
-msgstr "não se pode integrar em %s: %s"
+msgstr "podemos juntar em %s nenhum(a): %s"
 
-#: builtin/merge.c:1201
+#: builtin/merge.c:1207
 msgid "not something we can merge"
-msgstr "não se pode integrar"
+msgstr "podemos juntar nada"
 
-#: builtin/merge.c:1311
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
-msgstr "--abort não leva argumentos"
+msgstr "--abort supõe argumento nenhum"
 
-#: builtin/merge.c:1315
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Há junção nenhuma para abortar (MERGE_HEAD faltando)."
 
-#: builtin/merge.c:1333
+#: builtin/merge.c:1339
 #, fuzzy
 msgid "--quit expects no arguments"
-msgstr "--abort não leva argumentos"
+msgstr "--abort supõe argumento nenhum"
 
-#: builtin/merge.c:1346
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
-msgstr "--continue não leva argumentos"
+msgstr "--continue supõe argumento nenhum"
 
-#: builtin/merge.c:1350
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Há junção nenhuma em curso (MERGE_HEAD faltando)."
 
-#: builtin/merge.c:1366
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17427,111 +18145,143 @@
 "Junção está por concluir (MERGE_HEAD existe).\n"
 "Por favor, faz commit das tuas alterações antes de juntar."
 
-#: builtin/merge.c:1373
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
-"Cherry-pick não concluído (CHERRY_PICK_HEAD presente).\n"
-"Submeta as suas alterações antes de integrar."
+"Cherry-pick por concluir (existe CHERRY_PICK_HEAD).\n"
+"Por favor, memorize suas alterações antes de juntar."
 
-#: builtin/merge.c:1376
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
-msgstr "Cherry-pick não concluído (CHERRY_PICK_HEAD presente)."
+msgstr "Cherry-pick por concluir (existe CHERRY_PICK_HEAD)."
 
-#: builtin/merge.c:1390
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Impossível combinar --squash com --no-ff."
 
-#: builtin/merge.c:1392
+#: builtin/merge.c:1398
 #, fuzzy
 msgid "You cannot combine --squash with --commit."
 msgstr "Impossível combinar --squash com --commit."
 
-#: builtin/merge.c:1408
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
-msgstr "Nenhum commit especificado e merge.defaultToUpstream não definido."
+msgstr "Especificado commit nenhum e merge.defaultToUpstream indefinido."
 
-#: builtin/merge.c:1425
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "Esmagar commit para uma cabeça vazia por enquanto tem suporte nenhum"
 
-#: builtin/merge.c:1427
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Non-fast-forward commit para uma cabeça vazia faz sentido nenhum"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
-msgstr "%s - não é algo se possa integrar"
+msgstr "%s - nada que se pode juntar"
 
-#: builtin/merge.c:1434
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Só se pode integrar exatamente um commit numa cabeça vazia"
 
-#: builtin/merge.c:1515
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
-msgstr "integração de históricos não relacionados recusada"
+msgstr "recusando juntar históricos diferentes"
 
-#: builtin/merge.c:1524
-#, fuzzy
-msgid "Already up to date."
-msgstr "Já está atualizado."
-
-#: builtin/merge.c:1534
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Atualizando %s..%s\n"
 
-#: builtin/merge.c:1580
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "A tentar integração mesmo trivial no interior do índice...\n"
 
-#: builtin/merge.c:1587
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Nada.\n"
 
-#: builtin/merge.c:1612
-#, fuzzy
-msgid "Already up to date. Yeeah!"
-msgstr "Já está atualizado. Sim!"
-
-#: builtin/merge.c:1618
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Impossível fazer fast-forward, abortando."
 
-#: builtin/merge.c:1646 builtin/merge.c:1711
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Recuando a árvore para estado pristino...\n"
 
-#: builtin/merge.c:1650
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Tentando estratégia merge %s...\n"
 
-#: builtin/merge.c:1702
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "A junção lidou com estratégia de junção nenhuma.\n"
 
-#: builtin/merge.c:1704
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Falha ao integrar com a estratégia %s.\n"
 
-#: builtin/merge.c:1713
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "A usar %s para preparar resolução manual.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Usando estratégia %s para preparar resolução manual.\n"
 
-#: builtin/merge.c:1727
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "Merge automática correu bem; parei antes de commitar como pedido\n"
 
+#: builtin/mktag.c:10
+msgid "git mktag"
+msgstr ""
+
+#: builtin/mktag.c:27
+#, fuzzy, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "aviso: `:include:` insustentado: %s\n"
+
+#: builtin/mktag.c:38
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr ""
+
+#: builtin/mktag.c:41
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr ""
+
+#: builtin/mktag.c:56
+#, fuzzy, c-format
+msgid "could not read tagged object '%s'"
+msgstr "incapaz ler objeto %s"
+
+#: builtin/mktag.c:59
+#, fuzzy, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "objeto %s é %s, é %s nenhum(a)"
+
+#: builtin/mktag.c:97
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr ""
+
+#: builtin/mktag.c:100
+#, fuzzy
+msgid "tag on stdin did not refer to a valid object"
+msgstr "'%s' aponta para objeto válido nenhum!"
+
+#: builtin/mktag.c:103 builtin/tag.c:243
+msgid "unable to write tag file"
+msgstr "incapaz escrever ficheiro de tag"
+
 #: builtin/mktree.c:66
 msgid "git mktree [-z] [--missing] [--batch]"
 msgstr "git mktree [-z] [--missing] [--batch]"
@@ -17542,38 +18292,51 @@
 
 #: builtin/mktree.c:155 builtin/write-tree.c:26
 msgid "allow missing objects"
-msgstr "permitir objetos não presentes"
+msgstr "permitir objetos que faltam"
 
 #: builtin/mktree.c:156
 msgid "allow creation of more than one tree"
 msgstr "permitir a criação de mais do que uma árvore"
 
-#: builtin/multi-pack-index.c:9
-msgid ""
-"git multi-pack-index [<options>] (write|verify|expire|repack --batch-"
-"size=<size>)"
-msgstr ""
+#: builtin/multi-pack-index.c:10
+#, fuzzy
+msgid "git multi-pack-index [<options>] write [--preferred-pack=<pack>]"
+msgstr "git multi-pack-index [<opções>] write [--preferred-pack=<pacote>]"
 
-#: builtin/multi-pack-index.c:26
+#: builtin/multi-pack-index.c:13
+#, fuzzy
+msgid "git multi-pack-index [<options>] verify"
+msgstr "git multi-pack-index [<opções>] verify"
+
+#: builtin/multi-pack-index.c:16
+#, fuzzy
+msgid "git multi-pack-index [<options>] expire"
+msgstr "git multi-pack-index [<opções>] expire"
+
+#: builtin/multi-pack-index.c:19
+#, fuzzy
+msgid "git multi-pack-index [<options>] repack [--batch-size=<size>]"
+msgstr "git multi-pack-index [<opções>] repack [--batch-size=<tamanho>]"
+
+#: builtin/multi-pack-index.c:54
 msgid "object directory containing set of packfile and pack-index pairs"
 msgstr ""
 
-#: builtin/multi-pack-index.c:29
+#: builtin/multi-pack-index.c:69
+msgid "preferred-pack"
+msgstr ""
+
+#: builtin/multi-pack-index.c:70
+msgid "pack for reuse when computing a multi-pack bitmap"
+msgstr ""
+
+#: builtin/multi-pack-index.c:128
 msgid ""
 "during repack, collect pack-files of smaller size into a batch that is "
 "larger than this size"
 msgstr ""
 
-#: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
-#, fuzzy
-msgid "too many arguments"
-msgstr "Demasiados argumentos."
-
-#: builtin/multi-pack-index.c:60
-msgid "--batch-size option is only for 'repack' subcommand"
-msgstr ""
-
-#: builtin/multi-pack-index.c:69
+#: builtin/multi-pack-index.c:179
 #, fuzzy, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "subcomando desconhecido: %s"
@@ -17608,7 +18371,7 @@
 #: builtin/mv.c:170
 #, c-format
 msgid "destination '%s' is not a directory"
-msgstr "o destino '%s' não é um diretório"
+msgstr "destino '%s' é pasta nenhuma"
 
 #: builtin/mv.c:181
 #, c-format
@@ -17621,15 +18384,15 @@
 
 #: builtin/mv.c:188
 msgid "can not move directory into itself"
-msgstr "não é possível mover um diretório para dentro de si próprio"
+msgstr "incapaz mover pasta para si mesma"
 
 #: builtin/mv.c:191
 msgid "cannot move directory over file"
-msgstr "não é possível mover um diretório para um ficheiro"
+msgstr "incapaz mover pasta para um ficheiro"
 
 #: builtin/mv.c:200
 msgid "source directory is empty"
-msgstr "o diretório de origem está vazio"
+msgstr "pasta de origem está vazia"
 
 #: builtin/mv.c:225
 msgid "not under version control"
@@ -17658,7 +18421,7 @@
 
 #: builtin/mv.c:246
 msgid "destination directory does not exist"
-msgstr "o diretório de destino não existe"
+msgstr "pasta de destino é inexistente"
 
 #: builtin/mv.c:253
 #, c-format
@@ -17670,10 +18433,10 @@
 msgid "Renaming %s to %s\n"
 msgstr "A mudar de nome de %s para %s\n"
 
-#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:484
+#: builtin/mv.c:280 builtin/remote.c:785 builtin/repack.c:667
 #, c-format
 msgid "renaming '%s' failed"
-msgstr "falha ao mudar o nome de '%s'"
+msgstr "renomear '%s' falhou"
 
 #: builtin/name-rev.c:465
 msgid "git name-rev [<options>] <commit>..."
@@ -17838,11 +18601,11 @@
 #: builtin/notes.c:150
 #, c-format
 msgid "unable to start 'show' for object '%s'"
-msgstr "não foi possível iniciar o comando 'show' sobre o objeto '%s'"
+msgstr "incapaz iniciar 'show' para objeto '%s'"
 
 #: builtin/notes.c:154
 msgid "could not read 'show' output"
-msgstr "não foi possível ler a saída do comando 'show'"
+msgstr "incapaz ler output de 'show'"
 
 #: builtin/notes.c:162
 #, c-format
@@ -17855,17 +18618,17 @@
 
 #: builtin/notes.c:206
 msgid "unable to write note object"
-msgstr "não é possível escrever o objeto de nota"
+msgstr "incapaz escrever para objeto de nota"
 
 #: builtin/notes.c:208
 #, c-format
 msgid "the note contents have been left in %s"
 msgstr "o conteúdo da nota foi colocado em %s"
 
-#: builtin/notes.c:242 builtin/tag.c:533
+#: builtin/notes.c:242 builtin/tag.c:576
 #, c-format
 msgid "could not open or read '%s'"
-msgstr "não foi possível abrir ou ler '%s'"
+msgstr "incapaz abrir ou ler '%s'"
 
 #: builtin/notes.c:263 builtin/notes.c:313 builtin/notes.c:315
 #: builtin/notes.c:383 builtin/notes.c:438 builtin/notes.c:526
@@ -17882,7 +18645,7 @@
 #: builtin/notes.c:268
 #, c-format
 msgid "cannot read note data from non-blob object '%s'."
-msgstr "não é possível ler os dados da nota de um objeto não-blob '%s'."
+msgstr "incapaz ler dados de nota, de objeto não-blob '%s'."
 
 #: builtin/notes.c:309
 #, c-format
@@ -17905,8 +18668,9 @@
 #: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:509
 #: builtin/notes.c:521 builtin/notes.c:598 builtin/notes.c:665
 #: builtin/notes.c:815 builtin/notes.c:963 builtin/notes.c:985
-msgid "too many parameters"
-msgstr "demasiados parâmetros"
+#: builtin/prune-packed.c:25 builtin/tag.c:586
+msgid "too many arguments"
+msgstr ""
 
 #: builtin/notes.c:389 builtin/notes.c:678
 #, c-format
@@ -17965,8 +18729,8 @@
 msgstr "carregar configuração de reescrita do <comando> (implica --stdin)"
 
 #: builtin/notes.c:517
-msgid "too few parameters"
-msgstr "parâmetros insuficientes"
+msgid "too few arguments"
+msgstr ""
 
 #: builtin/notes.c:538
 #, c-format
@@ -17974,8 +18738,8 @@
 "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
 "existing notes"
 msgstr ""
-"Incapaz copiar notas. Encontrei Notas existentes para objeto %s. Usa '-f' para "
-"subscrever notas existentes"
+"Incapaz copiar notas. Encontrei Notas existentes para objeto %s. Usa '-f' "
+"para subscrever notas existentes"
 
 #: builtin/notes.c:550
 #, c-format
@@ -18009,11 +18773,11 @@
 
 #: builtin/notes.c:724
 msgid "could not find commit from NOTES_MERGE_PARTIAL."
-msgstr "não foi possível encontrar o commit de NOTES_MERGE_PARTIAL."
+msgstr "incapaz encontrar commit a partir de NOTES_MERGE_PARTIAL."
 
 #: builtin/notes.c:726
 msgid "could not parse commit from NOTES_MERGE_PARTIAL."
-msgstr "não foi possível analisar o commit de NOTES_MERGE_PARTIAL."
+msgstr "incapaz processar commit a partir de NOTES_MERGE_PARTIAL."
 
 #: builtin/notes.c:739
 msgid "failed to resolve NOTES_MERGE_REF"
@@ -18046,11 +18810,11 @@
 
 #: builtin/notes.c:790
 msgid "Committing unmerged notes"
-msgstr "A submeter notas não integradas"
+msgstr "Memorizando notas por juntar"
 
 #: builtin/notes.c:792
 msgid "finalize notes merge by committing unmerged notes"
-msgstr "concluir integração de notas, submetendo notas não integradas"
+msgstr "concluir junção de notas, memorizando notas por juntar"
 
 #: builtin/notes.c:794
 msgid "Aborting notes merge resolution"
@@ -18062,7 +18826,7 @@
 
 #: builtin/notes.c:807
 msgid "cannot mix --commit, --abort or -s/--strategy"
-msgstr "não é possível misturar --commit, --abort ou -s/--strategy"
+msgstr "incapaz misturar --commit, --abort ou -s/--strategy"
 
 #: builtin/notes.c:812
 msgid "must specify a notes ref to merge"
@@ -18094,7 +18858,7 @@
 "submeta o resultado com 'git notes merge --commit' ou aborte a integração "
 "com 'git notes merge --abort'.\n"
 
-#: builtin/notes.c:897 builtin/tag.c:546
+#: builtin/notes.c:897 builtin/tag.c:589
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Falha ao resolver '%s' numa referência válida."
@@ -18106,15 +18870,15 @@
 
 #: builtin/notes.c:912
 msgid "attempt to remove non-existent note is not an error"
-msgstr "não considerar como erro a remoção de uma nota não existente"
+msgstr "apenas é erro se remover nota existente"
 
 #: builtin/notes.c:915
 msgid "read object names from the standard input"
 msgstr "ler nome dos objetos da entrada padrão"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
-msgstr "não remover, mostrar apenas"
+msgstr "remover nada, apenas mostrar"
 
 #: builtin/notes.c:955
 msgid "report pruned notes"
@@ -18128,401 +18892,444 @@
 msgid "use notes from <notes-ref>"
 msgstr "usar notas de <notes-ref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1604
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "subcomando desconhecido: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<opções>...] [< <lista-referências> | < <lista-"
 "objetos>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<opções>...] <nome-base> [< <lista-referências> | < <lista-"
 "objetos>]"
 
-#: builtin/pack-objects.c:443
-#, fuzzy, c-format
+#: builtin/pack-objects.c:572
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+
+#: builtin/pack-objects.c:580
+#, c-format
 msgid "bad packed object CRC for %s"
-msgstr "ignorar objetos compactados"
+msgstr ""
 
-#: builtin/pack-objects.c:454
-#, fuzzy, c-format
+#: builtin/pack-objects.c:591
+#, c-format
 msgid "corrupt packed object for %s"
-msgstr "ignorar objetos compactados"
+msgstr ""
 
-#: builtin/pack-objects.c:585
+#: builtin/pack-objects.c:722
 #, fuzzy, c-format
 msgid "recursive delta detected for object %s"
-msgstr "o objeto esperado %s não foi recebido"
+msgstr "delta recursivo detetado para objeto %s"
 
-#: builtin/pack-objects.c:796
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1004
+#: builtin/pack-objects.c:1036
+#, fuzzy, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr "pacote com objeto incorreto no offset %<PRIuMAX>: %s"
+
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "a desativar escrita de mapa de bits, os pacotes são divididos devido a pack."
 "packSizeLimit"
 
-#: builtin/pack-objects.c:1017
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
-msgstr "A escrever objetos"
+msgstr ""
 
-#: builtin/pack-objects.c:1078 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
-msgstr "falha ao invocar stat de %s"
+msgstr "falhou stat a %s"
 
-#: builtin/pack-objects.c:1131
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1348
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
-"a desativar escrita de mapa de bits, visto que alguns objetos não estão a "
-"ser compactados"
+"desativando escrita bitmap, visto a incapacidade de alguns objetos serem "
+"compactados"
 
-#: builtin/pack-objects.c:1796
-#, fuzzy, c-format
+#: builtin/pack-objects.c:1971
+#, c-format
 msgid "delta base offset overflow in pack for %s"
-msgstr "offset da base delta está fora do limite"
+msgstr ""
 
-#: builtin/pack-objects.c:1805
+#: builtin/pack-objects.c:1980
 #, fuzzy, c-format
 msgid "delta base offset out of bound for %s"
-msgstr "offset da base delta está fora do limite"
+msgstr "offset de base delta está fora do limite para %s"
 
-#: builtin/pack-objects.c:2086
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "A contar objetos"
 
-#: builtin/pack-objects.c:2231
+#: builtin/pack-objects.c:2426
 #, fuzzy, c-format
 msgid "unable to parse object header of %s"
-msgstr "não foi possível analisar o objeto: %s"
+msgstr "incapaz processar cabeçalho de objeto de %s"
 
-#: builtin/pack-objects.c:2301 builtin/pack-objects.c:2317
-#: builtin/pack-objects.c:2327
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, fuzzy, c-format
 msgid "object %s cannot be read"
-msgstr "objeto %s não encontrado"
+msgstr "objeto %s incapaz ser lido"
 
-#: builtin/pack-objects.c:2304 builtin/pack-objects.c:2331
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2341
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2656
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr ""
 
-#: builtin/pack-objects.c:2795
+#: builtin/pack-objects.c:2990
 #, fuzzy, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "incluir objetos alcançáveis a partir de qualquer referência"
 
-#: builtin/pack-objects.c:2883
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "A comprimir objetos"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:2961
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
 "hash> <uri>' (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3199
+#, fuzzy, c-format
+msgid "could not get type of object %s in pack %s"
+msgstr "incapaz obter tipo de objeto %s"
+
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
+#, fuzzy, c-format
+msgid "could not find pack '%s'"
+msgstr "incapaz acabar '%s'"
+
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2999
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3097
-#, fuzzy
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
-msgstr "valor inválido de %s"
+msgstr ""
 
-#: builtin/pack-objects.c:3156 builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 #, fuzzy
 msgid "cannot open pack index"
-msgstr "não é possível invocar pread sobre o ficheiro de pacote"
+msgstr "incapaz abrir index pack"
 
-#: builtin/pack-objects.c:3187
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3272
+#: builtin/pack-objects.c:3658
 #, fuzzy
 msgid "unable to force loose object"
-msgstr "não é possível escrever o objeto de nota"
+msgstr "incapaz forçar objeto solto"
 
-#: builtin/pack-objects.c:3365
+#: builtin/pack-objects.c:3788
 #, fuzzy, c-format
 msgid "not a rev '%s'"
-msgstr "não é possível ler '%s'"
+msgstr "rev '%s' nenhum"
 
-#: builtin/pack-objects.c:3368
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, fuzzy, c-format
 msgid "bad revision '%s'"
-msgstr "repositório '%s' incorreto"
+msgstr "revisão '%s' incorreto"
 
-#: builtin/pack-objects.c:3393
+#: builtin/pack-objects.c:3819
 #, fuzzy
 msgid "unable to add recent objects"
-msgstr "não foi possível analisar o objeto: %s"
+msgstr "incapaz adicionar objetos recentes"
 
-#: builtin/pack-objects.c:3446
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
-msgstr "versão de índice %s não suportada"
+msgstr "versão de index %s insustentada"
 
-#: builtin/pack-objects.c:3450
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "versão de índice '%s' incorreta"
 
-#: builtin/pack-objects.c:3488
+#: builtin/pack-objects.c:3915
 #, fuzzy
 msgid "<version>[,<offset>]"
 msgstr "versão[,offset]"
 
-#: builtin/pack-objects.c:3489
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "escrever o ficheiro de índice do pacote na versão de formato especificada"
 
-#: builtin/pack-objects.c:3492
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "tamanho máximo de cada ficheiro de pacote gerado"
 
-#: builtin/pack-objects.c:3494
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorar objetos emprestados do arquivo de objetos sobressalentes"
 
-#: builtin/pack-objects.c:3496
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
-msgstr "ignorar objetos compactados"
+msgstr ""
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "limitar a janela de compactação por objetos"
 
-#: builtin/pack-objects.c:3500
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "limitar a janela de compactação por memória em adição ao limite por objetos"
 
-#: builtin/pack-objects.c:3502
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "tamanho máximo de cadeias delta permitidas no pacote resultante"
 
-#: builtin/pack-objects.c:3504
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "reutilizar deltas existentes"
 
-#: builtin/pack-objects.c:3506
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "reutilizar objetos existentes"
 
-#: builtin/pack-objects.c:3508
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "usar objetos OFS_DELTA"
 
-#: builtin/pack-objects.c:3510
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "usar threads ao procurar pela melhor correspondência delta"
 
-#: builtin/pack-objects.c:3512
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
-msgstr "não criar um pacote vazio"
+msgstr "criar output de pack vazio nenhum"
 
-#: builtin/pack-objects.c:3514
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "ler argumentos de revisão da entrada padrão"
 
-#: builtin/pack-objects.c:3516
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
-msgstr "restringir-se aos objetos que ainda não foram compactados"
+msgstr "restringir-se aos objetos que ainda estão por compactar"
 
-#: builtin/pack-objects.c:3519
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "incluir objetos alcançáveis a partir de qualquer referência"
 
-#: builtin/pack-objects.c:3522
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "incluir objetos referenciados por entradas do reflog"
 
-#: builtin/pack-objects.c:3525
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "incluir objetos referenciados pelo índice"
 
-#: builtin/pack-objects.c:3528
+#: builtin/pack-objects.c:3955
+msgid "read packs from stdin"
+msgstr ""
+
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "gerar pacote para a saída padrão"
 
-#: builtin/pack-objects.c:3530
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "incluir objetos tag que refiram objetos a compactar"
 
-#: builtin/pack-objects.c:3532
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "manter objetos inalcançáveis"
 
-#: builtin/pack-objects.c:3534
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "empacotar objetos soltos inalcançáveis"
 
-#: builtin/pack-objects.c:3536
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "descompactar objetos inalcançáveis mais recentes que <tempo>"
 
-#: builtin/pack-objects.c:3539
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3541
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "criar pacotes finos"
 
-#: builtin/pack-objects.c:3543
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "criar pacotes adequados para obter em repositórios pouco profundos"
 
-#: builtin/pack-objects.c:3545
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorar pacotes que tenham um ficheiro .keep"
 
-#: builtin/pack-objects.c:3547
+#: builtin/pack-objects.c:3976
 #, fuzzy
 msgid "ignore this pack"
 msgstr "usar pacote fino"
 
-#: builtin/pack-objects.c:3549
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "nível de compactação do pacote"
 
-#: builtin/pack-objects.c:3551
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
-msgstr "não esconder commits introduzidos por enxertos"
+msgstr "esconder commits por enxertos nenhuns"
 
-#: builtin/pack-objects.c:3553
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "usar um índice de mapa de bits se disponível, para acelerar a contagem de "
 "objetos"
 
-#: builtin/pack-objects.c:3555
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "escrever um índice de mapa de bits juntamente com o índice do pacote"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3988
 #, fuzzy
 msgid "write a bitmap index if possible"
 msgstr "escrever índice de mapa de bits"
 
-#: builtin/pack-objects.c:3563
+#: builtin/pack-objects.c:3992
 #, fuzzy
 msgid "handling for missing objects"
-msgstr "permitir objetos não presentes"
+msgstr "lidando para objetos que faltem"
 
-#: builtin/pack-objects.c:3566
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3997
 #, fuzzy
 msgid "respect islands during delta compression"
 msgstr "dimensão da janela usada em compressão de deltas"
 
-#: builtin/pack-objects.c:3570
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3571
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 
-#: builtin/pack-objects.c:3600
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3605
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3661
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3666
+#: builtin/pack-objects.c:4101
 #, fuzzy
 msgid "--thin cannot be used to build an indexable pack"
-msgstr "--fix-thin não pode ser usado sem --stdin"
+msgstr "incapaz usar --thin para construir pack indexável"
 
-#: builtin/pack-objects.c:3669
+#: builtin/pack-objects.c:4104
 #, fuzzy
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable e -A são incompatíveis"
 
-#: builtin/pack-objects.c:3675
+#: builtin/pack-objects.c:4110
 #, fuzzy
 msgid "cannot use --filter without --stdout"
-msgstr "não é possível usar -a com -d"
+msgstr "usar --filter com --stdout"
 
-#: builtin/pack-objects.c:3735
+#: builtin/pack-objects.c:4112
 #, fuzzy
-msgid "Enumerating objects"
-msgstr "A escrever objetos"
+msgid "cannot use --filter with --stdin-packs"
+msgstr "usar --filter com --stdout"
 
-#: builtin/pack-objects.c:3766
+#: builtin/pack-objects.c:4116
+#, fuzzy
+msgid "cannot use internal rev list with --stdin-packs"
+msgstr "incapaz especificar pathnames com --stdin"
+
+#: builtin/pack-objects.c:4175
+msgid "Enumerating objects"
+msgstr ""
+
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
 "reused %<PRIu32>"
 msgstr ""
 
+#: builtin/pack-redundant.c:601
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>.  Thanks.\n"
+msgstr ""
+
 #: builtin/pack-refs.c:8
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<opções>]"
@@ -18533,7 +19340,7 @@
 
 #: builtin/pack-refs.c:17
 msgid "prune loose refs (default)"
-msgstr "eliminar referências soltas (predefinição)"
+msgstr "podar refs soltas (predefinição)"
 
 #: builtin/prune-packed.c:6
 msgid "git prune-packed [-n | --dry-run] [-q | --quiet]"
@@ -18558,7 +19365,7 @@
 
 #: builtin/prune.c:152
 msgid "cannot prune in a precious-objects repo"
-msgstr "não é possível limpar num repositório de objetos-preciosos"
+msgstr "incapaz podar num repo de precious-objects"
 
 #: builtin/pull.c:45 builtin/pull.c:47
 #, c-format
@@ -18582,11 +19389,11 @@
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporar alterações por rebase em vez de integrar"
 
-#: builtin/pull.c:158 builtin/rebase.c:490 builtin/revert.c:126
+#: builtin/pull.c:158 builtin/rebase.c:491 builtin/revert.c:126
 msgid "allow fast-forward"
 msgstr "permitir avanço rápido"
 
-#: builtin/pull.c:167 parse-options.h:339
+#: builtin/pull.c:167 parse-options.h:340
 #, fuzzy
 msgid "automatically stash/stash pop before and after"
 msgstr "empilhar/desempilhar automaticamente antes de depois de rebase"
@@ -18608,7 +19415,91 @@
 msgid "Invalid value for pull.ff: %s"
 msgstr "Valor inválido de pull.ff: %s"
 
-#: builtin/pull.c:348
+#: builtin/pull.c:445
+msgid ""
+"There is no candidate for rebasing against among the refs that you just "
+"fetched."
+msgstr "As refs que obteste tem candidato nenhum para onde rebasear."
+
+#: builtin/pull.c:447
+msgid ""
+"There are no candidates for merging among the refs that you just fetched."
+msgstr "As refs que obteste tem candidato nenhum para junção."
+
+#: builtin/pull.c:448
+msgid ""
+"Generally this means that you provided a wildcard refspec which had no\n"
+"matches on the remote end."
+msgstr ""
+"Normalmente isto significa que forneceste um wildcard especificador de ref\n"
+"que tem correspondência nenhuma no lado do remoto."
+
+#: builtin/pull.c:451
+#, c-format
+msgid ""
+"You asked to pull from the remote '%s', but did not specify\n"
+"a branch. Because this is not the default configured remote\n"
+"for your current branch, you must specify a branch on the command line."
+msgstr ""
+"Pediste para agarrar remoto '%s', mas falta especificar um ramo.\n"
+"Visto que o remoto configurado como predefinido para o ramo atual é\n"
+"outro, deves de especificar um ramo na linha de comandos."
+
+#: builtin/pull.c:456 builtin/rebase.c:1248
+msgid "You are not currently on a branch."
+msgstr "Atualmente estás em ramo nenhum."
+
+#: builtin/pull.c:458 builtin/pull.c:473
+msgid "Please specify which branch you want to rebase against."
+msgstr "Especifique o ramo sobre o qual pretende realizar rebase."
+
+#: builtin/pull.c:460 builtin/pull.c:475
+msgid "Please specify which branch you want to merge with."
+msgstr "Especifique o ramo com o qual pretende integrar."
+
+#: builtin/pull.c:461 builtin/pull.c:476
+msgid "See git-pull(1) for details."
+msgstr "Consulte git-pull(1) para obter mais detalhes."
+
+#: builtin/pull.c:463 builtin/pull.c:469 builtin/pull.c:478
+#: builtin/rebase.c:1254
+msgid "<remote>"
+msgstr "<remoto>"
+
+#: builtin/pull.c:463 builtin/pull.c:478 builtin/pull.c:483
+msgid "<branch>"
+msgstr "<ramo>"
+
+#: builtin/pull.c:471 builtin/rebase.c:1246
+msgid "There is no tracking information for the current branch."
+msgstr "O ramo atual tem informação de tracking nenhuma."
+
+#: builtin/pull.c:480
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:"
+msgstr ""
+"Se deseja definir o ramo que deve ser seguido por este ramo, pode fazê-lo "
+"com:"
+
+#: builtin/pull.c:485
+#, c-format
+msgid ""
+"Your configuration specifies to merge with the ref '%s'\n"
+"from the remote, but no such ref was fetched."
+msgstr ""
+"Tua configuração indica para juntar com ref '%s'\n"
+"a partir do remoto, mas essa ref está por buscar."
+
+#: builtin/pull.c:596
+#, fuzzy, c-format
+msgid "unable to access commit %s"
+msgstr "incapaz acessar commit %s"
+
+#: builtin/pull.c:902
+msgid "ignoring --verify-signatures for rebase"
+msgstr "ignorado --verify-signatures para rebase"
+
+#: builtin/pull.c:930
 msgid ""
 "Pulling without specifying how to reconcile divergent branches is\n"
 "discouraged. You can squelch this message by running one of the following\n"
@@ -18625,107 +19516,19 @@
 "invocation.\n"
 msgstr ""
 
-#: builtin/pull.c:458
-msgid ""
-"There is no candidate for rebasing against among the refs that you just "
-"fetched."
-msgstr ""
-"As refs que obteste tem candidato nenhum para onde rebasear."
-
-#: builtin/pull.c:460
-msgid ""
-"There are no candidates for merging among the refs that you just fetched."
-msgstr ""
-"As refs que obteste tem candidato nenhum para junção."
-
-#: builtin/pull.c:461
-msgid ""
-"Generally this means that you provided a wildcard refspec which had no\n"
-"matches on the remote end."
-msgstr ""
-"Normalmente isto significa que forneceste um wildcard especificador de ref\n"
-"que tem correspondência nenhuma no lado do remoto."
-
-#: builtin/pull.c:464
-#, c-format
-msgid ""
-"You asked to pull from the remote '%s', but did not specify\n"
-"a branch. Because this is not the default configured remote\n"
-"for your current branch, you must specify a branch on the command line."
-msgstr ""
-"Solicitou puxar o remoto '%s', mas não especificou um ramo.\n"
-"Uma vez que este não é o remoto configurado por predefinição\n"
-"do ramo atual, deve especificar um ramo na linha de comandos."
-
-#: builtin/pull.c:469 builtin/rebase.c:1246
-msgid "You are not currently on a branch."
-msgstr "Atualmente estás em ramo nenhum."
-
-#: builtin/pull.c:471 builtin/pull.c:486
-msgid "Please specify which branch you want to rebase against."
-msgstr "Especifique o ramo sobre o qual pretende realizar rebase."
-
-#: builtin/pull.c:473 builtin/pull.c:488
-msgid "Please specify which branch you want to merge with."
-msgstr "Especifique o ramo com o qual pretende integrar."
-
-#: builtin/pull.c:474 builtin/pull.c:489
-msgid "See git-pull(1) for details."
-msgstr "Consulte git-pull(1) para obter mais detalhes."
-
-#: builtin/pull.c:476 builtin/pull.c:482 builtin/pull.c:491
-#: builtin/rebase.c:1252
-msgid "<remote>"
-msgstr "<remoto>"
-
-#: builtin/pull.c:476 builtin/pull.c:491 builtin/pull.c:496
-msgid "<branch>"
-msgstr "<ramo>"
-
-#: builtin/pull.c:484 builtin/rebase.c:1244
-msgid "There is no tracking information for the current branch."
-msgstr "O ramo atual tem informação de tracking nenhuma."
-
-#: builtin/pull.c:493
-msgid ""
-"If you wish to set tracking information for this branch you can do so with:"
-msgstr ""
-"Se deseja definir o ramo que deve ser seguido por este ramo, pode fazê-lo "
-"com:"
-
-#: builtin/pull.c:498
-#, c-format
-msgid ""
-"Your configuration specifies to merge with the ref '%s'\n"
-"from the remote, but no such ref was fetched."
-msgstr ""
-"A configuração indica para integrar com a referência '%s'\n"
-"do remoto, mas aquela referência não foi obtida."
-
-#: builtin/pull.c:609
-#, fuzzy, c-format
-msgid "unable to access commit %s"
-msgstr "não foi possível analisar o commit %s"
-
-#: builtin/pull.c:915
-msgid "ignoring --verify-signatures for rebase"
-msgstr "ignorado --verify-signatures para rebase"
-
-#: builtin/pull.c:972
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
-msgstr ""
-"A atualizar um ramo que ainda não foi criado e com alterações adicionadas ao "
-"índice."
+msgstr "Atualizando um ramo por nascer com alterações adicionadas ao índex."
 
-#: builtin/pull.c:976
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "pull com rebase"
 
-#: builtin/pull.c:977
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "submeta ou esconda-as."
 
-#: builtin/pull.c:1002
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18736,7 +19539,7 @@
 "a avançar a árvore de trabalho a partir do\n"
 "commit %s."
 
-#: builtin/pull.c:1008
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18753,15 +19556,15 @@
 "$ git reset --hard\n"
 "para recuperar."
 
-#: builtin/pull.c:1023
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Incapaz de juntar ramos múltiplos para head vazia."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Incapaz de rebasear sobre ramos múltiplos."
 
-#: builtin/pull.c:1041
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 
@@ -18800,14 +19603,14 @@
 "    git push %s HEAD\n"
 "%s"
 msgstr ""
-"O ramo a montante do ramo atual não coincide com o nome do ramo atual.\n"
-"Para publicar no ramo a montante no remoto, use\n"
+"Ramo upstream do ramo atual corresponde com nome ramo atual nenhum.\n"
+"Para atirar para ramo upstream do remoto, usa\n"
 "\n"
 "    git push %s HEAD:%s\n"
 "\n"
-"Para publicar no ramo com o mesmo nome no remoto, use\n"
+"Para atirar para ramo com o mesmo nome no remoto, usa\n"
 "\n"
-"    git push %s %s\n"
+"    git push %s HEAD\n"
 "%s"
 
 #: builtin/push.c:182
@@ -18824,7 +19627,7 @@
 "\n"
 "    git push %s HEAD:<nome-de-ramo-remoto>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -18837,29 +19640,28 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "O ramo atual %s tem múltiplos ramos a montante, publicação recusada."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr "Indicou refspecs nenhum para atirar, e push.default é \"nothing\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
 "your current branch '%s', without telling me what to push\n"
 "to update which remote branch."
 msgstr ""
-"O remoto '%s', no qual pretende publicar, não é o remoto a montante\n"
-"do ramo atual '%s'. Deve indicar o que pretende publicar e que ramo\n"
-"remoto atualizar."
+"Estás atirando para remoto '%s', que é nenhum upstream do teu\n"
+"ramo atual '%s', sem dizer-me o que atirar para atualizar\n"
+"um qualquer ramo remoto."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Indicou refspecs nenhum para atirar, e push.default é \"nothing\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -18871,7 +19673,7 @@
 "'git pull ...') antes de publicar de novo.\n"
 "Consulte 'Note about fast-forwards' em 'git push --help' para obter detalhes."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -18883,7 +19685,7 @@
 "as alterações remotas (e.g. 'git pull ...') antes de publicar de novo.\n"
 "Consulte 'Note about fast-forwards' em 'git push --help' para obter detalhes."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -18897,11 +19699,11 @@
 "de fazeres novo push.\n"
 "Vê a 'Note about fast-forwards' do 'git push --help' para detalhes."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "As atualizações foram rejeitadas porque a tag já existe no remoto."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -18911,7 +19713,7 @@
 "fora de commit, ou atualizar uma ref remota fazendo-a apontar para um\n"
 "objeto fora de commit, sem usar a opção '--force'.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 #, fuzzy
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
@@ -18924,104 +19726,104 @@
 "'git pull ...') antes de publicar de novo.\n"
 "Consulte 'Note about fast-forwards' em 'git push --help' para obter detalhes."
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Fazendo push para %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "falha ao publicar algumas referências em '%s'"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "repositório"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "publicar todas as referências"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "replicar todas as referências"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "eliminar referências"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
-msgstr "publicar tags (não pode ser usado com --all ou --mirror)"
+msgstr "atirar tags (incapaz ser usado com --all ou --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "forçar atualização"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 #, fuzzy
 msgid "<refname>:<expect>"
 msgstr "nome da referência>:<esperado"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "exigir que o antigo valor da referência tenha este valor"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr ""
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "controlar a publicação recursiva de submódulos"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "usar pacote fino"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "programa receive pack"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
-msgstr "definir o ramo a montante usado com git pull/status"
+msgstr "definir upstream para git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "eliminar referências removidas localmente"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "ignorar pre-push hook"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "publicar tags perdidas mas relevantes"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "assinar publicação com GPG"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "solicitar transação atómica no servidor remoto"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete é incompatível com --all, --mirror e --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
-msgstr "--delete não faz sentido sem uma referência"
+msgstr "--delete apenas faz sentido com uma ref"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "repositório '%s' incorreto"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19033,85 +19835,91 @@
 "\n"
 "    git push <name>\n"
 msgstr ""
-"Destino de publicação não definido.\n"
-"Indique um URL na linha de comandos ou configure um repositório remoto "
+"Destino de atirar indefinido.\n"
+"Indica um URL da linha de comandos ou configure um repositório remoto "
 "usando\n"
 "\n"
 "    git remote add <nome> <url>\n"
 "\n"
-"e publique usando o nome remoto\n"
+"e depois atire usando o nome remoto\n"
 "\n"
 "    git push <nome>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all e --tags são incompatíveis"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
-msgstr "--all não pode ser combinado com especificadores de referências"
+msgstr "incapaz combinar --all com refspecs"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror e --tags são incompatíveis"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror não pode ser combinado com especificadores de referências"
+msgstr "incapaz combinar --mirror com refspecs"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all e --mirror são incompatíveis"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
-msgstr "as opções de publicação não podem ter carateres de nova linha"
+msgstr "opções de atiranço podem ter caracteres de nova linha nenhuns"
 
-#: builtin/range-diff.c:8
+#: builtin/range-diff.c:9
 msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
 msgstr ""
 
-#: builtin/range-diff.c:9
+#: builtin/range-diff.c:10
 #, fuzzy
 msgid "git range-diff [<options>] <old-tip>...<new-tip>"
 msgstr "git merge [<opções>] [<commit>...]"
 
-#: builtin/range-diff.c:10
+#: builtin/range-diff.c:11
 #, fuzzy
 msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
 msgstr "git mv [<opções>] <origem>... <destino>"
 
-#: builtin/range-diff.c:22
-msgid "Percentage by which creation is weighted"
-msgstr ""
-
-#: builtin/range-diff.c:24
+#: builtin/range-diff.c:30
 #, fuzzy
 msgid "use simple diff colors"
 msgstr "usar a ferramenta diff especificada"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 #, fuzzy
 msgid "notes"
 msgstr "notes-ref"
 
-#: builtin/range-diff.c:26
+#: builtin/range-diff.c:32
 msgid "passed to 'git log'"
 msgstr ""
 
-#: builtin/range-diff.c:50 builtin/range-diff.c:54
+#: builtin/range-diff.c:35
+#, fuzzy
+msgid "only emit output related to the first range"
+msgstr "mostrar apenas commits fora do primeiro ramo"
+
+#: builtin/range-diff.c:37
+#, fuzzy
+msgid "only emit output related to the second range"
+msgstr "mostrar os caminhos relativamente ao diretório superior do projeto"
+
+#: builtin/range-diff.c:60 builtin/range-diff.c:64
 #, fuzzy, c-format
-msgid "no .. in range: '%s'"
+msgid "not a commit range: '%s'"
 msgstr "ramo inexistente: '%s'"
 
-#: builtin/range-diff.c:64
+#: builtin/range-diff.c:74
 msgid "single arg format must be symmetric range"
 msgstr ""
 
-#: builtin/range-diff.c:79
+#: builtin/range-diff.c:89
 #, fuzzy
 msgid "need two commit ranges"
-msgstr "editar a mensagem de commit"
+msgstr "preciso dois intervalos de memórias"
 
 #: builtin/read-tree.c:41
 msgid ""
@@ -19142,17 +19950,15 @@
 
 #: builtin/read-tree.c:133
 msgid "3-way merge if no file level merging required"
-msgstr ""
-"integrar com 3 pontos se a integração ao nível de ficheiros não for "
-"necessária"
+msgstr "tri-junção se dispensar junção ao nível de ficheiros"
 
 #: builtin/read-tree.c:135
 msgid "3-way merge in presence of adds and removes"
-msgstr "integrar com 3 ponto na presença de adições e remoções"
+msgstr "tri-junção na presença de adições e remoções"
 
 #: builtin/read-tree.c:137
 msgid "same as -m, but discard unmerged entries"
-msgstr "o mesmo que -m, mas descartar entradas não integradas"
+msgstr "o mesmo que -m, mas descartar entradas por juntar"
 
 #: builtin/read-tree.c:138
 msgid "<subdirectory>/"
@@ -19176,11 +19982,11 @@
 
 #: builtin/read-tree.c:148
 msgid "don't check the working tree after merging"
-msgstr "não verificar a árvore de trabalho depois de integrar"
+msgstr "verifica nenhuma worktree após junção"
 
 #: builtin/read-tree.c:149
 msgid "don't update the index or the work tree"
-msgstr "não atualizar o índice ou a árvore de trabalho"
+msgstr "atualizar index nenhum e worktree nenhuma"
 
 #: builtin/read-tree.c:151
 msgid "skip applying sparse checkout filter"
@@ -19216,213 +20022,211 @@
 msgid "git rebase --continue | --abort | --skip | --edit-todo"
 msgstr "git am [<opções>] (--continue | --skip | --abort)"
 
-#: builtin/rebase.c:193 builtin/rebase.c:217 builtin/rebase.c:244
+#: builtin/rebase.c:194 builtin/rebase.c:218 builtin/rebase.c:245
 #, fuzzy, c-format
 msgid "unusable todo list: '%s'"
-msgstr "não é possível invocar unlink: %s"
+msgstr "lista de tarefas inutilizável: '%s'"
 
-#: builtin/rebase.c:310
+#: builtin/rebase.c:311
 #, fuzzy, c-format
 msgid "could not create temporary %s"
-msgstr "não foi possível criar ficheiro temporário"
+msgstr "incapaz criar %s temporário"
 
-#: builtin/rebase.c:316
+#: builtin/rebase.c:317
 #, fuzzy
 msgid "could not mark as interactive"
 msgstr "incapaz marcar como interativo"
 
-#: builtin/rebase.c:369
+#: builtin/rebase.c:370
 #, fuzzy
 msgid "could not generate todo list"
-msgstr "não foi possível escrever para %s"
+msgstr "incapaz gerar lista de tarefas"
 
-#: builtin/rebase.c:411
+#: builtin/rebase.c:412
 msgid "a base commit must be provided with --upstream or --onto"
 msgstr ""
 
-#: builtin/rebase.c:480
+#: builtin/rebase.c:481
 #, fuzzy
 msgid "git rebase--interactive [<options>]"
 msgstr "git rebase--helper [<opções>]"
 
-#: builtin/rebase.c:493 builtin/rebase.c:1388
+#: builtin/rebase.c:494 builtin/rebase.c:1389
 msgid "keep commits which start empty"
 msgstr ""
 
-#: builtin/rebase.c:497 builtin/revert.c:128
+#: builtin/rebase.c:498 builtin/revert.c:128
 msgid "allow commits with empty messages"
 msgstr "permitir commits com mensagens vazias"
 
-#: builtin/rebase.c:499
+#: builtin/rebase.c:500
 #, fuzzy
 msgid "rebase merge commits"
 msgstr "mergetag incorreta no commit '%s'"
 
-#: builtin/rebase.c:501
+#: builtin/rebase.c:502
 msgid "keep original branch points of cousins"
 msgstr ""
 
-#: builtin/rebase.c:503
+#: builtin/rebase.c:504
 msgid "move commits that begin with squash!/fixup!"
 msgstr ""
 
-#: builtin/rebase.c:504
+#: builtin/rebase.c:505
 #, fuzzy
 msgid "sign commits"
 msgstr "assinar os commits com GPG"
 
-#: builtin/rebase.c:506 builtin/rebase.c:1327
+#: builtin/rebase.c:507 builtin/rebase.c:1328
 msgid "display a diffstat of what changed upstream"
 msgstr ""
 
-#: builtin/rebase.c:508
+#: builtin/rebase.c:509
 msgid "continue rebase"
 msgstr "continuar rebase"
 
-#: builtin/rebase.c:510
+#: builtin/rebase.c:511
 #, fuzzy
 msgid "skip commit"
 msgstr "commit"
 
-#: builtin/rebase.c:511
-#, fuzzy
+#: builtin/rebase.c:512
 msgid "edit the todo list"
-msgstr "falha ao escrever para rev-list"
+msgstr ""
 
-#: builtin/rebase.c:513
+#: builtin/rebase.c:514
 #, fuzzy
 msgid "show the current patch"
-msgstr "ignorar o patch atual"
+msgstr "mostrar remendo atual"
 
-#: builtin/rebase.c:516
+#: builtin/rebase.c:517
 msgid "shorten commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:518
+#: builtin/rebase.c:519
 msgid "expand commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase.c:520
+#: builtin/rebase.c:521
 msgid "check the todo list"
 msgstr ""
 
-#: builtin/rebase.c:522
+#: builtin/rebase.c:523
 msgid "rearrange fixup/squash lines"
 msgstr ""
 
-#: builtin/rebase.c:524
+#: builtin/rebase.c:525
 msgid "insert exec commands in todo list"
 msgstr ""
 
-#: builtin/rebase.c:525
+#: builtin/rebase.c:526
 msgid "onto"
 msgstr ""
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:529
 #, fuzzy
 msgid "restrict-revision"
-msgstr "revisão"
+msgstr "revisão-restrita"
 
-#: builtin/rebase.c:528
+#: builtin/rebase.c:529
 #, fuzzy
 msgid "restrict revision"
-msgstr "revisão"
+msgstr "revisão restrita"
 
-#: builtin/rebase.c:530
+#: builtin/rebase.c:531
 msgid "squash-onto"
 msgstr ""
 
-#: builtin/rebase.c:531
+#: builtin/rebase.c:532
 msgid "squash onto"
 msgstr ""
 
-#: builtin/rebase.c:533
+#: builtin/rebase.c:534
 #, fuzzy
 msgid "the upstream commit"
 msgstr "Remover a informação do ramo a montante"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:536
 #, fuzzy
 msgid "head-name"
 msgstr "mudar nome"
 
-#: builtin/rebase.c:535
+#: builtin/rebase.c:536
 #, fuzzy
 msgid "head name"
 msgstr "à frente "
 
-#: builtin/rebase.c:540
+#: builtin/rebase.c:541
 #, fuzzy
 msgid "rebase strategy"
 msgstr "estratégia de integração"
 
-#: builtin/rebase.c:541
+#: builtin/rebase.c:542
 #, fuzzy
 msgid "strategy-opts"
 msgstr "estratégia"
 
-#: builtin/rebase.c:542
+#: builtin/rebase.c:543
 #, fuzzy
 msgid "strategy options"
 msgstr "opções de decoração"
 
-#: builtin/rebase.c:543
+#: builtin/rebase.c:544
 msgid "switch-to"
 msgstr ""
 
-#: builtin/rebase.c:544
+#: builtin/rebase.c:545
 msgid "the branch or commit to checkout"
 msgstr ""
 
-#: builtin/rebase.c:545
+#: builtin/rebase.c:546
 #, fuzzy
 msgid "onto-name"
-msgstr "nome"
-
-#: builtin/rebase.c:545
-#, fuzzy
-msgid "onto name"
-msgstr "nome do remoto"
+msgstr "para-nome"
 
 #: builtin/rebase.c:546
 #, fuzzy
+msgid "onto name"
+msgstr "para nome"
+
+#: builtin/rebase.c:547
+#, fuzzy
 msgid "cmd"
 msgstr "comando"
 
-#: builtin/rebase.c:546
-#, fuzzy
+#: builtin/rebase.c:547
 msgid "the command to run"
-msgstr "Nenhum comando concluído."
+msgstr ""
 
-#: builtin/rebase.c:549 builtin/rebase.c:1421
+#: builtin/rebase.c:550 builtin/rebase.c:1422
 msgid "automatically re-schedule any `exec` that fails"
 msgstr ""
 
-#: builtin/rebase.c:565
+#: builtin/rebase.c:566
 msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
 msgstr ""
 
-#: builtin/rebase.c:581
+#: builtin/rebase.c:582
 #, c-format
 msgid "%s requires the merge backend"
 msgstr ""
 
-#: builtin/rebase.c:624
+#: builtin/rebase.c:625
 #, fuzzy, c-format
 msgid "could not get 'onto': '%s'"
-msgstr "não foi possível definir '%s' como '%s'"
+msgstr "incapaz obter 'onto': '%s'"
 
-#: builtin/rebase.c:641
+#: builtin/rebase.c:642
 #, fuzzy, c-format
 msgid "invalid orig-head: '%s'"
-msgstr "ficheiro inválido: '%s'"
+msgstr "orig-head inválida: '%s'"
 
-#: builtin/rebase.c:666
+#: builtin/rebase.c:667
 #, c-format
 msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
 msgstr ""
 
-#: builtin/rebase.c:811 git-rebase--preserve-merges.sh:81
+#: builtin/rebase.c:813 git-rebase--preserve-merges.sh:81
 #, fuzzy
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
@@ -19436,7 +20240,7 @@
 "Para extrair o ramo original e interromper o rebase, execute \"git rebase --"
 "abort\"."
 
-#: builtin/rebase.c:894
+#: builtin/rebase.c:896
 #, c-format
 msgid ""
 "\n"
@@ -19448,14 +20252,14 @@
 "As a result, git cannot rebase them."
 msgstr ""
 
-#: builtin/rebase.c:1220
+#: builtin/rebase.c:1222
 #, c-format
 msgid ""
 "unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask"
 "\"."
 msgstr ""
 
-#: builtin/rebase.c:1238
+#: builtin/rebase.c:1240
 #, fuzzy, c-format
 msgid ""
 "%s\n"
@@ -19472,7 +20276,7 @@
 "    git rebase '<branch>'\n"
 "\n"
 
-#: builtin/rebase.c:1254
+#: builtin/rebase.c:1256
 #, fuzzy, c-format
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:\n"
@@ -19485,209 +20289,200 @@
 "    git branch --set-upstream-to=%s/<branch> %s\n"
 "\n"
 
-#: builtin/rebase.c:1284
+#: builtin/rebase.c:1286
 msgid "exec commands cannot contain newlines"
 msgstr ""
 
-#: builtin/rebase.c:1288
+#: builtin/rebase.c:1290
 msgid "empty exec command"
 msgstr ""
 
-#: builtin/rebase.c:1318
+#: builtin/rebase.c:1319
 #, fuzzy
 msgid "rebase onto given branch instead of upstream"
 msgstr "demasiados ramos para remover a definição de ramo a montante"
 
-#: builtin/rebase.c:1320
+#: builtin/rebase.c:1321
 #, fuzzy
 msgid "use the merge-base of upstream and branch as the current base"
-msgstr "o ramo a montante solicitado '%s' não existe"
+msgstr "usar a base de junção de upstream e ramo como base atual"
 
-#: builtin/rebase.c:1322
+#: builtin/rebase.c:1323
 #, fuzzy
 msgid "allow pre-rebase hook to run"
 msgstr "Rebase recusado pelo hook pre-rebase."
 
-#: builtin/rebase.c:1324
+#: builtin/rebase.c:1325
 msgid "be quiet. implies --no-stat"
 msgstr ""
 
-#: builtin/rebase.c:1330
+#: builtin/rebase.c:1331
 #, fuzzy
 msgid "do not show diffstat of what changed upstream"
-msgstr "não apresentar um diffstat ao fim da integração"
+msgstr "esconder diffstat de o que alterou upstream"
 
-#: builtin/rebase.c:1333
+#: builtin/rebase.c:1334
 #, fuzzy
 msgid "add a Signed-off-by trailer to each commit"
 msgstr "adicionar uma linha com Signed-of-by no fim da mensagem de commit"
 
-#: builtin/rebase.c:1336
+#: builtin/rebase.c:1337
 #, fuzzy
 msgid "make committer date match author date"
 msgstr "agrupar por committer em vez de autor"
 
-#: builtin/rebase.c:1338
+#: builtin/rebase.c:1339
 msgid "ignore author date and use current date"
 msgstr ""
 
-#: builtin/rebase.c:1340
+#: builtin/rebase.c:1341
 #, fuzzy
 msgid "synonym of --reset-author-date"
-msgstr "sinónimo de --files-with-matches"
+msgstr "sinónimo de --reset-author-date"
 
-#: builtin/rebase.c:1342 builtin/rebase.c:1346
+#: builtin/rebase.c:1343 builtin/rebase.c:1347
 #, fuzzy
 msgid "passed to 'git apply'"
-msgstr "transmitir ao git-apply"
+msgstr "passado para 'git apply'"
 
-#: builtin/rebase.c:1344
-#, fuzzy
+#: builtin/rebase.c:1345
 msgid "ignore changes in whitespace"
-msgstr "ignorar alterações de espaço em branco ao procurar contexto"
+msgstr ""
 
-#: builtin/rebase.c:1348 builtin/rebase.c:1351
+#: builtin/rebase.c:1349 builtin/rebase.c:1352
 msgid "cherry-pick all commits, even if unchanged"
 msgstr ""
 
-#: builtin/rebase.c:1353
+#: builtin/rebase.c:1354
 #, fuzzy
 msgid "continue"
 msgstr "continuar rebase"
 
-#: builtin/rebase.c:1356
+#: builtin/rebase.c:1357
 #, fuzzy
 msgid "skip current patch and continue"
-msgstr "ignorar o patch atual"
+msgstr "ignorar remendo atual e continuar"
 
-#: builtin/rebase.c:1358
+#: builtin/rebase.c:1359
 #, fuzzy
 msgid "abort and check out the original branch"
 msgstr "  (use \"git rebase --abort\" para restaurar o ramo original)"
 
-#: builtin/rebase.c:1361
+#: builtin/rebase.c:1362
 msgid "abort but keep HEAD where it is"
 msgstr ""
 
-#: builtin/rebase.c:1362
+#: builtin/rebase.c:1363
 #, fuzzy
 msgid "edit the todo list during an interactive rebase"
-msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
+msgstr "editar a lista de afazeres durante rebase interativa"
 
-#: builtin/rebase.c:1365
+#: builtin/rebase.c:1366
 msgid "show the patch file being applied or merged"
 msgstr ""
 
-#: builtin/rebase.c:1368
+#: builtin/rebase.c:1369
 msgid "use apply strategies to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1372
+#: builtin/rebase.c:1373
 #, fuzzy
 msgid "use merging strategies to rebase"
 msgstr "estratégia de integração a usar"
 
-#: builtin/rebase.c:1376
+#: builtin/rebase.c:1377
 msgid "let the user edit the list of commits to rebase"
 msgstr ""
 
-#: builtin/rebase.c:1380
+#: builtin/rebase.c:1381
 msgid "(DEPRECATED) try to recreate merges instead of ignoring them"
 msgstr ""
 
-#: builtin/rebase.c:1385
+#: builtin/rebase.c:1386
 msgid "how to handle commits that become empty"
 msgstr ""
 
-#: builtin/rebase.c:1392
+#: builtin/rebase.c:1393
 msgid "move commits that begin with squash!/fixup! under -i"
 msgstr ""
 
-#: builtin/rebase.c:1399
+#: builtin/rebase.c:1400
 msgid "add exec lines after each commit of the editable list"
 msgstr ""
 
-#: builtin/rebase.c:1403
+#: builtin/rebase.c:1404
 #, fuzzy
 msgid "allow rebasing commits with empty messages"
 msgstr "permitir commits com mensagens vazias"
 
-#: builtin/rebase.c:1407
+#: builtin/rebase.c:1408
 msgid "try to rebase merges instead of skipping them"
 msgstr ""
 
-#: builtin/rebase.c:1410
+#: builtin/rebase.c:1411
 #, fuzzy
 msgid "use 'merge-base --fork-point' to refine upstream"
 msgstr "git merge-base --fork-point <referência> [<commit>]"
 
-#: builtin/rebase.c:1412
+#: builtin/rebase.c:1413
 #, fuzzy
 msgid "use the given merge strategy"
 msgstr "opção de estratégia de integração"
 
-#: builtin/rebase.c:1414 builtin/revert.c:115
+#: builtin/rebase.c:1415 builtin/revert.c:115
 msgid "option"
 msgstr "opção"
 
-#: builtin/rebase.c:1415
+#: builtin/rebase.c:1416
 msgid "pass the argument through to the merge strategy"
 msgstr ""
 
-#: builtin/rebase.c:1418
+#: builtin/rebase.c:1419
 msgid "rebase all reachable commits up to the root(s)"
 msgstr ""
 
-#: builtin/rebase.c:1423
+#: builtin/rebase.c:1424
 msgid "apply all changes, even those already present upstream"
 msgstr ""
 
-#: builtin/rebase.c:1440
-msgid ""
-"the rebase.useBuiltin support has been removed!\n"
-"See its entry in 'git help config' for details."
-msgstr ""
-"o suporte a rebase.useBuiltin foi removido!\n"
-"Vê essa entry em 'git help config' para detalhes."
-
-#: builtin/rebase.c:1446
+#: builtin/rebase.c:1442
 #, fuzzy
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Parece que 'git am' está em curso. Incapaz de rebasear."
 
-#: builtin/rebase.c:1487
+#: builtin/rebase.c:1483
 msgid ""
 "git rebase --preserve-merges is deprecated. Use --rebase-merges instead."
 msgstr ""
 
-#: builtin/rebase.c:1492
+#: builtin/rebase.c:1488
 #, fuzzy
 msgid "cannot combine '--keep-base' with '--onto'"
 msgstr "incapaz de combinar '--keep-base' com '--onto'"
 
-#: builtin/rebase.c:1494
+#: builtin/rebase.c:1490
 #, fuzzy
 msgid "cannot combine '--keep-base' with '--root'"
 msgstr "incapaz de combinar '--keep-base' com '--root'"
 
-#: builtin/rebase.c:1498
+#: builtin/rebase.c:1494
 #, fuzzy
 msgid "cannot combine '--root' with '--fork-point'"
 msgstr "incapaz de combinar '--root' com '--fork-point'"
 
-#: builtin/rebase.c:1501
+#: builtin/rebase.c:1497
 msgid "No rebase in progress?"
-msgstr "Rebase não está em curso?"
+msgstr "Algum rebase em curso?"
 
-#: builtin/rebase.c:1505
+#: builtin/rebase.c:1501
 msgid "The --edit-todo action can only be used during interactive rebase."
-msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
+msgstr "A ação --edit-todo só pode ser usada durante uma rebase interativa."
 
-#: builtin/rebase.c:1528 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Incapaz ler HEAD"
 
-#: builtin/rebase.c:1540
+#: builtin/rebase.c:1536
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -19695,17 +20490,17 @@
 "Deve editar todos os conflitos da integração\n"
 "e marcá-los como resolvidos usando git add"
 
-#: builtin/rebase.c:1559
+#: builtin/rebase.c:1555
 #, fuzzy
 msgid "could not discard worktree changes"
 msgstr "incapaz de descartar alterações de worktree"
 
-#: builtin/rebase.c:1578
+#: builtin/rebase.c:1574
 #, fuzzy, c-format
 msgid "could not move back to %s"
 msgstr "incapaz de retroceder a %s"
 
-#: builtin/rebase.c:1624
+#: builtin/rebase.c:1620
 #, fuzzy, c-format
 msgid ""
 "It seems that there is already a %s directory, and\n"
@@ -19717,146 +20512,145 @@
 "and run me again.  I am stopping in case you still have something\n"
 "valuable there.\n"
 msgstr ""
-"Parece que já existe um diretório %s, e\n"
-"é possível que outro processo de rebase já esteja em curso.\n"
-"Se for o caso, tente\n"
+"Parece que já existe uma pasta %s, e\n"
+"pregunto-me se estás a meio de outro rebase. Se for o caso,\n"
+"por favor tenta\n"
 "\t%s\n"
-"Se não for o caso,\n"
+"Caso eu esteja errado, faz por favor\n"
 "\t%s\n"
-"e execute o comando de novo. A execução foi interrompida no caso de\n"
-"ainda ter algo importante nesse sítio.\n"
+"e execute-me novamente. Estou parando caso ainda tenhas algo\n"
+"de valor aí.\n"
 
-#: builtin/rebase.c:1652
-#, fuzzy
+#: builtin/rebase.c:1648
 msgid "switch `C' expects a numerical value"
-msgstr "a opção '%c' espera um valor numérico"
+msgstr ""
 
-#: builtin/rebase.c:1694
+#: builtin/rebase.c:1690
 #, fuzzy, c-format
 msgid "Unknown mode: %s"
 msgstr "Mode de --patch desconhecido: %s"
 
-#: builtin/rebase.c:1733
+#: builtin/rebase.c:1729
 msgid "--strategy requires --merge or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1763
+#: builtin/rebase.c:1759
 msgid "cannot combine apply options with merge options"
 msgstr ""
 
-#: builtin/rebase.c:1776
-#, fuzzy, c-format
+#: builtin/rebase.c:1772
+#, c-format
 msgid "Unknown rebase backend: %s"
-msgstr "Subcomando desconhecido: %s"
+msgstr ""
 
-#: builtin/rebase.c:1806
+#: builtin/rebase.c:1802
 msgid "--reschedule-failed-exec requires --exec or --interactive"
 msgstr ""
 
-#: builtin/rebase.c:1826
+#: builtin/rebase.c:1822
 msgid "cannot combine '--preserve-merges' with '--rebase-merges'"
 msgstr ""
 
-#: builtin/rebase.c:1830
+#: builtin/rebase.c:1826
 msgid ""
 "error: cannot combine '--preserve-merges' with '--reschedule-failed-exec'"
 msgstr ""
 
-#: builtin/rebase.c:1854
-#, fuzzy, c-format
+#: builtin/rebase.c:1850
+#, c-format
 msgid "invalid upstream '%s'"
-msgstr "caminho inválido '%s'"
+msgstr ""
 
-#: builtin/rebase.c:1860
+#: builtin/rebase.c:1856
 #, fuzzy
 msgid "Could not create new root commit"
-msgstr "não foi possível analisar o commit recém-criado"
+msgstr "incapaz criar novo commit raiz"
 
-#: builtin/rebase.c:1886
+#: builtin/rebase.c:1882
 #, c-format
 msgid "'%s': need exactly one merge base with branch"
 msgstr ""
 
-#: builtin/rebase.c:1889
-#, fuzzy, c-format
+#: builtin/rebase.c:1885
+#, c-format
 msgid "'%s': need exactly one merge base"
-msgstr "É necessário exatamente um intervalo."
+msgstr ""
 
-#: builtin/rebase.c:1897
+#: builtin/rebase.c:1893
 #, fuzzy, c-format
 msgid "Does not point to a valid commit '%s'"
 msgstr "Aponta nada para commit válido '%s'"
 
-#: builtin/rebase.c:1923
+#: builtin/rebase.c:1921
 #, fuzzy, c-format
 msgid "fatal: no such branch/commit '%s'"
-msgstr "o ramo '%s' não existe"
+msgstr "fatal: nenhum ramo/commit '%s'"
 
-#: builtin/rebase.c:1931 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2414
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Referência inexistente: %s"
 
-#: builtin/rebase.c:1942
+#: builtin/rebase.c:1940
 #, fuzzy
 msgid "Could not resolve HEAD to a revision"
 msgstr "Foi impossível resolver HEAD para uma revisão"
 
-#: builtin/rebase.c:1963
+#: builtin/rebase.c:1961
 msgid "Please commit or stash them."
 msgstr "Submeta ou esconda-as."
 
-#: builtin/rebase.c:1999
+#: builtin/rebase.c:1997
 #, fuzzy, c-format
 msgid "could not switch to %s"
-msgstr "não foi possível escrever para %s"
+msgstr "incapaz alternar para %s"
 
-#: builtin/rebase.c:2010
+#: builtin/rebase.c:2008
 #, fuzzy
 msgid "HEAD is up to date."
 msgstr "HEAD está agora em"
 
-#: builtin/rebase.c:2012
+#: builtin/rebase.c:2010
 #, fuzzy, c-format
 msgid "Current branch %s is up to date.\n"
 msgstr "Branch atual %s está atualizado.\n"
 
-#: builtin/rebase.c:2020
+#: builtin/rebase.c:2018
 #, fuzzy
 msgid "HEAD is up to date, rebase forced."
 msgstr "O ramo atual $branch_name está atualizado, rebase forçado."
 
-#: builtin/rebase.c:2022
+#: builtin/rebase.c:2020
 #, fuzzy, c-format
 msgid "Current branch %s is up to date, rebase forced.\n"
 msgstr "Branch actual %s está atualizado, rebase forçado.\n"
 
-#: builtin/rebase.c:2030
+#: builtin/rebase.c:2028
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Rebase recusado pelo hook pre-rebase."
 
-#: builtin/rebase.c:2037
+#: builtin/rebase.c:2035
 #, fuzzy, c-format
 msgid "Changes to %s:\n"
 msgstr "Modificações para %s:\n"
 
-#: builtin/rebase.c:2040
+#: builtin/rebase.c:2038
 #, fuzzy, c-format
 msgid "Changes from %s to %s:\n"
 msgstr "Modificações de %s para %s:\n"
 
-#: builtin/rebase.c:2065
+#: builtin/rebase.c:2063
 #, fuzzy, c-format
 msgid "First, rewinding head to replay your work on top of it...\n"
 msgstr "Primeiro, recuando head para refazer o teu trabalho em cima dela...\n"
 
-#: builtin/rebase.c:2074
+#: builtin/rebase.c:2072
 #, fuzzy
 msgid "Could not detach HEAD"
-msgstr "não foi possível destacar HEAD"
+msgstr "incapaz soltar HEAD"
 
-#: builtin/rebase.c:2083
+#: builtin/rebase.c:2081
 #, fuzzy, c-format
 msgid "Fast-forwarded %s to %s.\n"
 msgstr "Avançei-rápido %s para %s.\n"
@@ -19865,7 +20659,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -19882,20 +20676,20 @@
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 "Por predefinição, atualizar o ramo atual num repositório não-nu\n"
-"é proibido, porque tornará o índice e a árvore de trabalho inconsistentes\n"
-"com o que publicou e requererá 'git reset --hard' para igualar a\n"
-"árvore de trabalho à HEAD.\n"
+"é proibido, porque tornará o index e a worktree inconsistentes\n"
+"com o que atiraste, e requererá 'git reset --hard' para igualar a\n"
+"worktree com HEAD.\n"
 "\n"
-"Pode definir a variável configuração 'receive.denyCurrentBranch'\n"
-"como 'ignore' ou 'warn' no repositório remoto para permitir publicar\n"
-"para o ramo atual dele; no entanto, não é recomendando a menos que\n"
-"consiga de outra forma atualizar a árvore de trabalho dele para\n"
-"refletir o que publicou.\n"
+"Podes definir variável configuração 'receive.denyCurrentBranch'\n"
+"como 'ignore' ou 'warn' no repositório remoto para permitir atirar\n"
+"para o ramo atual deste; no entanto, é recomendando nada disto a\n"
+"menos que consigas outra forma de atualizar a worktree dele para\n"
+"refletir o que atiraste.\n"
 "\n"
-"Para suprimir esta mensagem e manter o comportamento predefinido, defina\n"
+"Para suprimir esta mensagem e manter o comportamento predefinido, define\n"
 "a variável de configuração 'receive.denyCurrentBranch' como 'refuse'."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -19915,11 +20709,11 @@
 "\n"
 "Para suprimir esta mensagem, podes definí-la como 'refuse'."
 
-#: builtin/receive-pack.c:2481
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "silencioso"
 
-#: builtin/receive-pack.c:2495
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Deve especificar um diretório."
 
@@ -19943,39 +20737,39 @@
 #: builtin/reflog.c:568 builtin/reflog.c:573
 #, c-format
 msgid "'%s' is not a valid timestamp"
-msgstr "'%s' não é um carimbo de data/hora válido"
+msgstr "'%s' é um carimbo de data/hora inválido"
 
-#: builtin/reflog.c:606
-#, fuzzy, c-format
+#: builtin/reflog.c:609
+#, c-format
 msgid "Marking reachable objects..."
-msgstr "manter objetos inalcançáveis"
+msgstr ""
 
-#: builtin/reflog.c:644
+#: builtin/reflog.c:647
 #, c-format
 msgid "%s points nowhere!"
 msgstr ""
 
-#: builtin/reflog.c:696
+#: builtin/reflog.c:699
 #, fuzzy
 msgid "no reflog specified to delete"
 msgstr "especificado reflog nenhum para apagar"
 
-#: builtin/reflog.c:705
+#: builtin/reflog.c:708
 #, fuzzy, c-format
 msgid "not a reflog: %s"
 msgstr "reflog inválido: %s"
 
-#: builtin/reflog.c:710
+#: builtin/reflog.c:713
 #, fuzzy, c-format
 msgid "no reflog for '%s'"
 msgstr "reflog nenhum para '%s'"
 
-#: builtin/reflog.c:756
+#: builtin/reflog.c:759
 #, fuzzy, c-format
 msgid "invalid ref format: %s"
 msgstr "formato de ref inválido: %s"
 
-#: builtin/reflog.c:765
+#: builtin/reflog.c:768
 msgid "git reflog [ show | expire | delete | exists ]"
 msgstr ""
 
@@ -20064,7 +20858,7 @@
 #: builtin/remote.c:99
 #, c-format
 msgid "Updating %s"
-msgstr "A atualizar %s"
+msgstr "Atualizando %s"
 
 #: builtin/remote.c:131
 msgid ""
@@ -20105,7 +20899,7 @@
 
 #: builtin/remote.c:186
 msgid "specifying a master branch makes no sense with --mirror"
-msgstr "especificar um ramo mestre não faz sentido com --mirror"
+msgstr "especificar um ramo master com --mirror faz sentido nenhum"
 
 #: builtin/remote.c:188
 msgid "specifying branches to track makes sense only with fetch mirrors"
@@ -20137,7 +20931,7 @@
 #: builtin/remote.c:655
 #, fuzzy, c-format
 msgid "could not set '%s'"
-msgstr "não foi possível reiniciar '%s'"
+msgstr "incapaz definir '%s'"
 
 #: builtin/remote.c:660
 #, c-format
@@ -20147,7 +20941,7 @@
 "now names the non-existent remote '%s'"
 msgstr ""
 
-#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:946
+#: builtin/remote.c:691 builtin/remote.c:836 builtin/remote.c:943
 #, fuzzy, c-format
 msgid "No such remote: '%s'"
 msgstr "Remoto inexistente '%s'"
@@ -20164,20 +20958,18 @@
 "\t%s\n"
 "\tPlease update the configuration manually if necessary."
 msgstr ""
-"O seguinte especificador de referência, não-predefinido e usado para obter "
-"objetos, não foi atualizado\n"
-"\t%s\n"
-"\tAtualize a configuração manualmente se necessário."
+"Deixando por atualizar refspec que é diferente de pré-definido\t%s\n"
+"\tPor favor, atualiza a configuração manualmente se necessário."
 
 #: builtin/remote.c:770
 #, c-format
 msgid "deleting '%s' failed"
-msgstr "falha ao eliminar '%s'"
+msgstr "falha ao apagar '%s'"
 
 #: builtin/remote.c:804
 #, c-format
 msgid "creating '%s' failed"
-msgstr "falha ao criar '%s'"
+msgstr "falhou criar '%s'"
 
 #: builtin/remote.c:882
 msgid ""
@@ -20187,11 +20979,12 @@
 "Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
 "to delete them, use:"
 msgstr[0] ""
-"Nota: Um ramo fora da hierarquia refs/remotes/ não foi removido;\n"
-"para o remover, use:"
+"Nota: Um ramo fora da hierarquia refs/remotes/ está por remover;\n"
+"para apagá-lo, usa:"
 msgstr[1] ""
-"Nota: alguns ramos fora da hierarquia refs/remotes/ não foram removidos;\n"
-"para os remover, use:"
+"Nota: Alguns ramos fora da hierarquia refs/remotes/ estão por serem "
+"removidos;\n"
+"para os apagá-los, usa:"
 
 #: builtin/remote.c:896
 #, c-format
@@ -20218,8 +21011,7 @@
 #: builtin/remote.c:1047
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
-msgstr ""
-"branch.%s.merge inválido; não é possível rebasear sobre mais do que um ramo"
+msgstr "branch.%s.merge inválido; incapaz rebasear sobre > 1 ramo"
 
 #: builtin/remote.c:1056
 #, c-format
@@ -20293,7 +21085,7 @@
 
 #: builtin/remote.c:1212
 msgid "do not query remotes"
-msgstr "não consultar remotos"
+msgstr "faz consulta a remotos nenhuns"
 
 #: builtin/remote.c:1239
 #, c-format
@@ -20303,7 +21095,7 @@
 #: builtin/remote.c:1240
 #, c-format
 msgid "  Fetch URL: %s"
-msgstr "  Obter    do URL: %s"
+msgstr "  Buscar URL: %s"
 
 #: builtin/remote.c:1241 builtin/remote.c:1257 builtin/remote.c:1396
 msgid "(no URL)"
@@ -20316,7 +21108,7 @@
 #: builtin/remote.c:1255 builtin/remote.c:1257
 #, c-format
 msgid "  Push  URL: %s"
-msgstr "  Publicar no URL: %s"
+msgstr "  Atirar URL: %s"
 
 #: builtin/remote.c:1259 builtin/remote.c:1261 builtin/remote.c:1263
 #, c-format
@@ -20325,7 +21117,7 @@
 
 #: builtin/remote.c:1259
 msgid "(not queried)"
-msgstr "(não consultado)"
+msgstr "(nada consultado)"
 
 #: builtin/remote.c:1261
 msgid "(unknown)"
@@ -20346,7 +21138,7 @@
 
 #: builtin/remote.c:1280 builtin/remote.c:1306
 msgid " (status not queried)"
-msgstr " (estado não consultado)"
+msgstr " (estado é nada consultado)"
 
 #: builtin/remote.c:1289
 msgid "  Local branch configured for 'git pull':"
@@ -20428,7 +21220,7 @@
 
 #: builtin/remote.c:1457
 msgid "prune remotes after fetching"
-msgstr "eliminar remotos depois de obter"
+msgstr "podar remotos após buscar"
 
 #: builtin/remote.c:1521 builtin/remote.c:1577 builtin/remote.c:1647
 #, c-format
@@ -20470,7 +21262,7 @@
 
 #: builtin/remote.c:1632
 msgid "--add --delete doesn't make sense"
-msgstr "--add --delete não faz sentido"
+msgstr "--add --delete faz sentido nenhum"
 
 #: builtin/remote.c:1673
 #, c-format
@@ -20480,142 +21272,165 @@
 #: builtin/remote.c:1681
 #, c-format
 msgid "No such URL found: %s"
-msgstr "URL não encontrado: %s"
+msgstr "URL por encontrar: %s"
 
 #: builtin/remote.c:1683
 msgid "Will not delete all non-push URLs"
-msgstr "Eliminarei apenas alguns URLs de não-atirar"
+msgstr "Apagarei apenas alguns URLs de não-atirar"
 
-#: builtin/repack.c:25
+#: builtin/repack.c:26
 msgid "git repack [<options>]"
 msgstr "git repack [<opções>]"
 
-#: builtin/repack.c:30
+#: builtin/repack.c:31
 msgid ""
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
-"Repacks incrementais são incompatíveis com bitmap indexes. Usa\n"
-"--no-write-bitmap-índex ou desative a configuração pack.writebitmaps."
+"Repacks incrementais são incompatíveis com indexes bitmap. Usa\n"
+"--no-write-bitmap-index ou desativa a configuração pack.writebitmaps ."
 
-#: builtin/repack.c:197
+#: builtin/repack.c:198
 msgid "could not start pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:268 builtin/repack.c:447
+#: builtin/repack.c:270 builtin/repack.c:630
 msgid "repack: Expecting full hex object ID lines only from pack-objects."
 msgstr ""
 
-#: builtin/repack.c:295
+#: builtin/repack.c:294
 msgid "could not finish pack-objects to repack promisor objects"
 msgstr ""
 
-#: builtin/repack.c:323
+#: builtin/repack.c:309
+#, fuzzy, c-format
+msgid "cannot open index for %s"
+msgstr "incapaz opendir '%s'"
+
+#: builtin/repack.c:368
+#, c-format
+msgid "pack %s too large to consider in geometric progression"
+msgstr ""
+
+#: builtin/repack.c:401 builtin/repack.c:408 builtin/repack.c:413
+#, c-format
+msgid "pack %s too large to roll up"
+msgstr ""
+
+#: builtin/repack.c:460
 msgid "pack everything in a single pack"
 msgstr "compactar tudo num único pacote"
 
-#: builtin/repack.c:325
+#: builtin/repack.c:462
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "o mesmo que -a, e soltar objetos inalcançáveis"
 
-#: builtin/repack.c:328
+#: builtin/repack.c:465
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "remover pacotes redundantes e executar git-prune-packed"
 
-#: builtin/repack.c:330
+#: builtin/repack.c:467
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "passar --no-reuse-delta ao git-pack-objects"
 
-#: builtin/repack.c:332
+#: builtin/repack.c:469
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "passar --no-reuse-object ao git-pack-objects"
 
-#: builtin/repack.c:334
+#: builtin/repack.c:471
 msgid "do not run git-update-server-info"
-msgstr "não executar git-update-server-info"
+msgstr "executar git-update-server-info nenhum"
 
-#: builtin/repack.c:337
+#: builtin/repack.c:474
 msgid "pass --local to git-pack-objects"
-msgstr "passar --local ao git-pack-objects"
+msgstr "passar --local para git-pack-objects"
 
-#: builtin/repack.c:339
+#: builtin/repack.c:476
 msgid "write bitmap index"
 msgstr "escrever índice de mapa de bits"
 
-#: builtin/repack.c:341
+#: builtin/repack.c:478
 #, fuzzy
 msgid "pass --delta-islands to git-pack-objects"
 msgstr "passar --local ao git-pack-objects"
 
-#: builtin/repack.c:342
+#: builtin/repack.c:479
 msgid "approxidate"
 msgstr "aproximar"
 
-#: builtin/repack.c:343
+#: builtin/repack.c:480
 msgid "with -A, do not loosen objects older than this"
-msgstr "com -A, não soltar mais objetos além destes"
+msgstr "com -A, deixar de soltar objetos mais velhos que isto"
 
-#: builtin/repack.c:345
+#: builtin/repack.c:482
 msgid "with -a, repack unreachable objects"
 msgstr "com -a, reempacotar objetos inalcançáveis"
 
-#: builtin/repack.c:347
+#: builtin/repack.c:484
 msgid "size of the window used for delta compression"
 msgstr "dimensão da janela usada em compressão de deltas"
 
-#: builtin/repack.c:348 builtin/repack.c:354
+#: builtin/repack.c:485 builtin/repack.c:491
 msgid "bytes"
 msgstr "bytes"
 
-#: builtin/repack.c:349
+#: builtin/repack.c:486
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "o mesmo que o anterior, mas limitar a memória usada em vez do número de "
 "entradas"
 
-#: builtin/repack.c:351
+#: builtin/repack.c:488
 msgid "limits the maximum delta depth"
 msgstr "limitar a profundidade máxima de delta"
 
-#: builtin/repack.c:353
+#: builtin/repack.c:490
 #, fuzzy
 msgid "limits the maximum number of threads"
 msgstr "limitar a profundidade máxima de delta"
 
-#: builtin/repack.c:355
+#: builtin/repack.c:492
 msgid "maximum size of each packfile"
 msgstr "tamanho máximo de cada ficheiro de pacote"
 
-#: builtin/repack.c:357
+#: builtin/repack.c:494
 msgid "repack objects in packs marked with .keep"
 msgstr "reempacotar objetos em pacotes marcados com .keep"
 
-#: builtin/repack.c:359
+#: builtin/repack.c:496
 #, fuzzy
 msgid "do not repack this pack"
 msgstr "criar pacotes finos"
 
-#: builtin/repack.c:369
-msgid "cannot delete packs in a precious-objects repo"
-msgstr "não é possível eliminar pacotes num repositório de objetos-preciosos"
+#: builtin/repack.c:498
+msgid "find a geometric progression with factor <N>"
+msgstr ""
 
-#: builtin/repack.c:373
+#: builtin/repack.c:508
+msgid "cannot delete packs in a precious-objects repo"
+msgstr "incapaz apagar pacotes num repo de precious-objects"
+
+#: builtin/repack.c:512
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable e -A são incompatíveis"
 
-#: builtin/repack.c:456
+#: builtin/repack.c:527
+msgid "--geometric is incompatible with -A, -a"
+msgstr ""
+
+#: builtin/repack.c:639
 msgid "Nothing new to pack."
 msgstr ""
 
-#: builtin/repack.c:486
-#, fuzzy, c-format
+#: builtin/repack.c:669
+#, c-format
 msgid "missing required file: %s"
-msgstr "falta o objeto %s de %s"
+msgstr ""
 
-#: builtin/repack.c:488
+#: builtin/repack.c:671
 #, fuzzy, c-format
 msgid "could not unlink: %s"
-msgstr "não foi possível bloquear '%s'"
+msgstr "incapaz unlink: %s"
 
 #: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
@@ -20652,22 +21467,22 @@
 #: builtin/replace.c:125
 #, fuzzy, c-format
 msgid "replace ref '%s' not found"
-msgstr "ramo '%s' não encontrado."
+msgstr "ref substituição '%s' por encontrar"
 
 #: builtin/replace.c:141
 #, fuzzy, c-format
 msgid "Deleted replace ref '%s'"
-msgstr "eliminar referências substituídas"
+msgstr "Ref substituição '%s' apagada"
 
 #: builtin/replace.c:153
 #, fuzzy, c-format
 msgid "'%s' is not a valid ref name"
-msgstr "'%s' não é um nome de remoto válido"
+msgstr "'%s' é nome de ref inválido"
 
 #: builtin/replace.c:158
 #, fuzzy, c-format
 msgid "replace ref '%s' already exists"
-msgstr "a tag '%s' já existe"
+msgstr "ref substituição '%s' já existe"
 
 #: builtin/replace.c:178
 #, c-format
@@ -20680,7 +21495,7 @@
 #: builtin/replace.c:229
 #, fuzzy, c-format
 msgid "unable to open %s for writing"
-msgstr "não foi possível abrir %s para escrita"
+msgstr "incapaz abrir %s para escrita"
 
 #: builtin/replace.c:242
 msgid "cat-file reported failure"
@@ -20689,48 +21504,48 @@
 #: builtin/replace.c:258
 #, fuzzy, c-format
 msgid "unable to open %s for reading"
-msgstr "não é possível abrir ou ler %s"
+msgstr "incapaz abrir %s para ler"
 
 #: builtin/replace.c:272
 #, fuzzy
 msgid "unable to spawn mktree"
-msgstr "não foi possível ler a árvore (%s)"
+msgstr "incapaz lançar mktree"
 
 #: builtin/replace.c:276
 #, fuzzy
 msgid "unable to read from mktree"
-msgstr "não foi possível ler a árvore (%s)"
+msgstr "incapaz ler de mktree"
 
 #: builtin/replace.c:285
 #, fuzzy
 msgid "mktree reported failure"
-msgstr "falha ao reverter"
+msgstr "mktree reportou falha"
 
 #: builtin/replace.c:289
 #, fuzzy
 msgid "mktree did not return an object name"
-msgstr "o remoto não enviou todos os objetos necessários"
+msgstr "mktree retornou nome de objeto nenhum"
 
 #: builtin/replace.c:298
 #, fuzzy, c-format
 msgid "unable to fstat %s"
-msgstr "não foi possível atualizar %s"
+msgstr "incapaz fstat %s"
 
 #: builtin/replace.c:303
 #, fuzzy
 msgid "unable to write object to database"
-msgstr "não é possível escrever o objeto de nota"
+msgstr "incapaz escrever objeto para base de dados"
 
 #: builtin/replace.c:322 builtin/replace.c:378 builtin/replace.c:424
 #: builtin/replace.c:454
 #, fuzzy, c-format
 msgid "not a valid object name: '%s'"
-msgstr "Nome de objeto inválido: '%s'"
+msgstr "nome de objeto inválido: '%s'"
 
 #: builtin/replace.c:326
 #, fuzzy, c-format
 msgid "unable to get object type for %s"
-msgstr "não foi possível efetuar grep de objetos do tipo %s"
+msgstr "incapaz obter tipo de objetos para %s"
 
 #: builtin/replace.c:342
 #, fuzzy
@@ -20745,7 +21560,7 @@
 #: builtin/replace.c:384
 #, fuzzy, c-format
 msgid "could not parse %s as a commit"
-msgstr "não foi possível analisar o commit HEAD"
+msgstr "incapaz processar %s como commit"
 
 #: builtin/replace.c:416
 #, c-format
@@ -20778,7 +21593,7 @@
 #: builtin/replace.c:480
 #, c-format
 msgid "could not write replacement commit for: '%s'"
-msgstr "não foi possível escrever o commit suplente de: '%s'"
+msgstr "incapaz escrever o commit substituto para: '%s'"
 
 #: builtin/replace.c:488
 #, c-format
@@ -20805,7 +21620,7 @@
 
 #: builtin/replace.c:549
 msgid "delete replace refs"
-msgstr "eliminar referências substituídas"
+msgstr "eliminar refs de substituição"
 
 #: builtin/replace.c:550
 msgid "edit existing object"
@@ -20826,7 +21641,7 @@
 
 #: builtin/replace.c:555
 msgid "do not pretty-print contents for --edit"
-msgstr "não mostrar o conteúdo de --edit com impressão bonita"
+msgstr "incapaz pretty-print conteúdo para --edit"
 
 #: builtin/replace.c:556
 msgid "use this format"
@@ -20835,17 +21650,15 @@
 #: builtin/replace.c:569
 #, fuzzy
 msgid "--format cannot be used when not listing"
-msgstr "--fix-thin não pode ser usado sem --stdin"
+msgstr "--format apenas pode ser usado quando faz listagem"
 
 #: builtin/replace.c:577
-#, fuzzy
 msgid "-f only makes sense when writing a replacement"
-msgstr "-z só faz sentido com --stdin"
+msgstr ""
 
 #: builtin/replace.c:581
-#, fuzzy
 msgid "--raw only makes sense with --edit"
-msgstr "-z só faz sentido com --stdin"
+msgstr ""
 
 #: builtin/replace.c:587
 msgid "-d needs at least one argument"
@@ -20856,9 +21669,8 @@
 msgstr ""
 
 #: builtin/replace.c:599
-#, fuzzy
 msgid "-e needs exactly one argument"
-msgstr "É necessário exatamente um intervalo."
+msgstr ""
 
 #: builtin/replace.c:605
 msgid "-g needs at least one argument"
@@ -20867,7 +21679,7 @@
 #: builtin/replace.c:611
 #, fuzzy
 msgid "--convert-graft-file takes no argument"
-msgstr "--continue não leva argumentos"
+msgstr "--convert-graft-file leva argumento nenhum"
 
 #: builtin/replace.c:617
 #, fuzzy
@@ -20879,18 +21691,18 @@
 msgstr ""
 "git rerere [clear | forget <caminho>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "registar resoluções limpas no índice"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr ""
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, fuzzy, c-format
 msgid "unable to generate diff for '%s'"
-msgstr "não foi possível criar '%s'"
+msgstr "incapaz gerar diff para '%s'"
 
 #: builtin/reset.c:32
 msgid ""
@@ -20956,8 +21768,8 @@
 msgid "Cannot do a %s reset in the middle of a merge."
 msgstr "Incapaz de fazer uma reposição %s durante uma junção."
 
-#: builtin/reset.c:295 builtin/stash.c:520 builtin/stash.c:594
-#: builtin/stash.c:618
+#: builtin/reset.c:295 builtin/stash.c:589 builtin/stash.c:663
+#: builtin/stash.c:687
 msgid "be quiet, only report errors"
 msgstr "silencioso, só reportar erros"
 
@@ -21016,7 +21828,7 @@
 
 #: builtin/reset.c:413
 msgid "Unstaged changes after reset:"
-msgstr "Alterações não preparadas depois de repor:"
+msgstr "Alterações despreparadas depois de reposição:"
 
 #: builtin/reset.c:416
 #, c-format
@@ -21036,22 +21848,21 @@
 msgid "Could not write new index file."
 msgstr "Incapaz escrever novo ficheiro index."
 
-#: builtin/rev-list.c:499
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr ""
 
-#: builtin/rev-list.c:560
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr ""
 
-#: builtin/rev-list.c:610
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
-msgstr "rev-list não suporta apresentação de notas"
+msgstr "rev-list insustenta mostrar notas"
 
-#: builtin/rev-list.c:615
-#, fuzzy
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
-msgstr "--first-parent é incompatível com --bisect"
+msgstr ""
 
 #: builtin/rev-parse.c:409
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
@@ -21063,12 +21874,26 @@
 
 #: builtin/rev-parse.c:416
 msgid "stop parsing after the first non-option argument"
-msgstr "parar de analisar depois do primeiro argumento que não seja uma opção"
+msgstr "parei de processar após o primeiro argumento diferente de opção"
 
 #: builtin/rev-parse.c:419
 msgid "output in stuck long form"
 msgstr "mostrar em formato fixo e longo"
 
+#: builtin/rev-parse.c:438
+#, fuzzy
+msgid "premature end of input"
+msgstr "fim de input prematuro"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "antes do separador '--' foi dado string de utilização nenhuma"
+
+#: builtin/rev-parse.c:548
+#, fuzzy
+msgid "Needed a single revision"
+msgstr "Precisava uma única revisão"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21084,6 +21909,56 @@
 "Execute \"git rev-parse --parseopt -h\" para mais informação com a primeira "
 "utilização."
 
+#: builtin/rev-parse.c:712
+#, fuzzy
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir requer argumento"
+
+#: builtin/rev-parse.c:715
+#, fuzzy, c-format
+msgid "not a gitdir '%s'"
+msgstr "gitdir '%s' nenhuma"
+
+#: builtin/rev-parse.c:739
+#, fuzzy
+msgid "--git-path requires an argument"
+msgstr "--git-path requer argumento"
+
+#: builtin/rev-parse.c:749
+#, fuzzy
+msgid "-n requires an argument"
+msgstr "-n requer argumento"
+
+#: builtin/rev-parse.c:763
+#, fuzzy
+msgid "--path-format requires an argument"
+msgstr "--path-format requer argumento"
+
+#: builtin/rev-parse.c:769
+#, fuzzy, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "argumento desconhecido para --path-format: %s"
+
+#: builtin/rev-parse.c:776
+#, fuzzy
+msgid "--default requires an argument"
+msgstr "--default requer argumento"
+
+#: builtin/rev-parse.c:782
+#, fuzzy
+msgid "--prefix requires an argument"
+msgstr "--prefix requer argumento"
+
+#: builtin/rev-parse.c:851
+#, fuzzy, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "modo desconhecido para --abbrev-ref: %s"
+
+#: builtin/rev-parse.c:1023
+#, fuzzy, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "modo desconhecido para --show-object-format: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<opções>] <commit-etc>..."
@@ -21101,14 +21976,14 @@
 msgstr "git cherry-pick <subcommando>"
 
 #: builtin/revert.c:72
-#, fuzzy, c-format
+#, c-format
 msgid "option `%s' expects a number greater than zero"
-msgstr "a opção '%c' espera um valor numérico"
+msgstr ""
 
 #: builtin/revert.c:92
 #, c-format
 msgid "%s: %s cannot be used with %s"
-msgstr "%s: %s não pode ser usado com %s"
+msgstr "%s: %s incapaz ser usado com %s"
 
 #: builtin/revert.c:102
 msgid "end revert or cherry-pick sequence"
@@ -21123,17 +21998,16 @@
 msgstr "cancelar reversão ou cherry-pick"
 
 #: builtin/revert.c:105
-#, fuzzy
 msgid "skip current commit and continue"
-msgstr "imprimir conteúdo do commit"
+msgstr ""
 
 #: builtin/revert.c:107
 msgid "don't automatically commit"
-msgstr "não submeter automaticamente"
+msgstr "memorizar automaticamente nada"
 
 #: builtin/revert.c:108
 msgid "edit the commit message"
-msgstr "editar a mensagem de commit"
+msgstr "editar mensagem de memória"
 
 #: builtin/revert.c:111
 msgid "parent-number"
@@ -21163,19 +22037,19 @@
 msgid "keep redundant, empty commits"
 msgstr "manter commits redundantes e vazios"
 
-#: builtin/revert.c:239
+#: builtin/revert.c:237
 msgid "revert failed"
 msgstr "falha ao reverter"
 
-#: builtin/revert.c:252
+#: builtin/revert.c:250
 msgid "cherry-pick failed"
 msgstr "falha ao efetuar cherry-pick"
 
-#: builtin/rm.c:19
+#: builtin/rm.c:20
 msgid "git rm [<options>] [--] <file>..."
 msgstr "git rm [<opções>] [--] <ficheiro>..."
 
-#: builtin/rm.c:207
+#: builtin/rm.c:208
 msgid ""
 "the following file has staged content different from both the\n"
 "file and the HEAD:"
@@ -21189,7 +22063,7 @@
 "os seguintes ficheiros têm staged content diferente quer no ficheiro\n"
 "quer em HEAD:"
 
-#: builtin/rm.c:212
+#: builtin/rm.c:213
 msgid ""
 "\n"
 "(use -f to force removal)"
@@ -21197,13 +22071,13 @@
 "\n"
 "(usa -f para forçar remoção)"
 
-#: builtin/rm.c:216
+#: builtin/rm.c:217
 msgid "the following file has changes staged in the index:"
 msgid_plural "the following files have changes staged in the index:"
 msgstr[0] "o seguinte ficheiro contém alterações preparadas no índice:"
 msgstr[1] "os seguintes ficheiros contêm alterações preparadas no índice:"
 
-#: builtin/rm.c:220 builtin/rm.c:229
+#: builtin/rm.c:221 builtin/rm.c:230
 msgid ""
 "\n"
 "(use --cached to keep the file, or -f to force removal)"
@@ -21211,51 +22085,51 @@
 "\n"
 "(use --cached para manter o ficheiro, ou -f para forçar remoção)"
 
-#: builtin/rm.c:226
+#: builtin/rm.c:227
 msgid "the following file has local modifications:"
 msgid_plural "the following files have local modifications:"
 msgstr[0] "o seguinte ficheiro contém alterações locais:"
 msgstr[1] "os seguintes ficheiros contêm alterações locais:"
 
-#: builtin/rm.c:243
-msgid "do not list removed files"
-msgstr "não listar ficheiros removidos"
-
 #: builtin/rm.c:244
+msgid "do not list removed files"
+msgstr "listar ficheiros removidos nenhuns"
+
+#: builtin/rm.c:245
 msgid "only remove from the index"
 msgstr "remover apenas do índice"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:246
 msgid "override the up-to-date check"
 msgstr "ignorar verificação de atualização"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:247
 msgid "allow recursive removal"
 msgstr "permitir remoção recursiva"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:249
 msgid "exit with a zero status even if nothing matched"
-msgstr "sair com valor zero mesmo quando não há correspondência"
+msgstr "sair com valor zero mesmo se nada corresponder"
 
-#: builtin/rm.c:282
+#: builtin/rm.c:283
 msgid "No pathspec was given. Which files should I remove?"
 msgstr ""
 
-#: builtin/rm.c:305
+#: builtin/rm.c:310
 #, fuzzy
 msgid "please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir"
 
-#: builtin/rm.c:323
+#: builtin/rm.c:331
 #, c-format
 msgid "not removing '%s' recursively without -r"
-msgstr "não remover '%s' recursivamente sem -r"
+msgstr "removendo '%s' recursivamente apenas com -r"
 
-#: builtin/rm.c:362
+#: builtin/rm.c:379
 #, c-format
 msgid "git rm: unable to remove %s"
-msgstr "git rm: não é possível remover %s"
+msgstr "git rm: incapaz remover %s"
 
 #: builtin/send-pack.c:20
 msgid ""
@@ -21271,7 +22145,7 @@
 
 #: builtin/send-pack.c:188
 msgid "remote name"
-msgstr "nome do remoto"
+msgstr "nome de remoto"
 
 #: builtin/send-pack.c:201
 msgid "use stateless RPC protocol"
@@ -21294,57 +22168,60 @@
 #: builtin/shortlog.c:17
 #, fuzzy
 msgid "git log --pretty=short | git shortlog [<options>]"
-msgstr "git worktree list [<opções>]"
+msgstr "git log --pretty=short | git shortlog [<opções>]"
 
-#: builtin/shortlog.c:135
+#: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:145
+#: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
 msgstr ""
 
-#: builtin/shortlog.c:335
+#: builtin/shortlog.c:323
 #, fuzzy, c-format
 msgid "unknown group type: %s"
 msgstr "Tipo desconhecido: %d"
 
-#: builtin/shortlog.c:363
-msgid "Group by committer rather than author"
+#: builtin/shortlog.c:351
+#, fuzzy
+msgid "group by committer rather than author"
 msgstr "agrupar por committer em vez de autor"
 
-#: builtin/shortlog.c:366
+#: builtin/shortlog.c:354
 msgid "sort output according to the number of commits per author"
 msgstr "ordenar saída de acordo com o número de commits por autor"
 
-#: builtin/shortlog.c:368
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:356
+#, fuzzy
+msgid "suppress commit descriptions, only provides commit count"
 msgstr "suprimir a descrição dos commits, fornecer apenas o número de commits"
 
-#: builtin/shortlog.c:370
-msgid "Show the email address of each author"
+#: builtin/shortlog.c:358
+#, fuzzy
+msgid "show the email address of each author"
 msgstr "Mostrar o endereço de e-mail de cada autor"
 
-#: builtin/shortlog.c:371
+#: builtin/shortlog.c:359
 msgid "<w>[,<i1>[,<i2>]]"
 msgstr ""
 
-#: builtin/shortlog.c:372
-msgid "Linewrap output"
+#: builtin/shortlog.c:360
+#, fuzzy
+msgid "linewrap output"
 msgstr "ajustar linhas"
 
-#: builtin/shortlog.c:374
+#: builtin/shortlog.c:362
 msgid "field"
 msgstr ""
 
-#: builtin/shortlog.c:375
-msgid "Group by field"
+#: builtin/shortlog.c:363
+msgid "group by field"
 msgstr ""
 
-#: builtin/shortlog.c:403
-#, fuzzy
+#: builtin/shortlog.c:391
 msgid "too many arguments given outside repository"
-msgstr "%s: '%s' está fora do repositório"
+msgstr ""
 
 #: builtin/show-branch.c:13
 msgid ""
@@ -21366,8 +22243,8 @@
 #, c-format
 msgid "ignoring %s; cannot handle more than %d ref"
 msgid_plural "ignoring %s; cannot handle more than %d refs"
-msgstr[0] "ignorar %s; não é possível processar mais do que %d referência"
-msgstr[1] "ingorar %s; não é possível processar mais do que %d referências"
+msgstr[0] "ignorando %s; incapaz lidar mais que %d ref"
+msgstr[1] "ignorando %s; incapaz lidar mais que %d refs"
 
 #: builtin/show-branch.c:548
 #, c-format
@@ -21380,7 +22257,7 @@
 
 #: builtin/show-branch.c:647
 msgid "show remote-tracking branches"
-msgstr "mostrar os ramos de monitorização remotos"
+msgstr ""
 
 #: builtin/show-branch.c:649
 msgid "color '*!+-' corresponding to the branch"
@@ -21416,11 +22293,11 @@
 
 #: builtin/show-branch.c:664
 msgid "show commits in topological order"
-msgstr "mostrar commits em ordem topológica"
+msgstr "mostrar memórias em ordem topológica"
 
 #: builtin/show-branch.c:667
 msgid "show only commits not on the first branch"
-msgstr "mostrar apenas commits não presentes no primeiro ramo"
+msgstr "mostrar apenas commits fora do primeiro ramo"
 
 #: builtin/show-branch.c:669
 msgid "show merges reachable from only one tip"
@@ -21463,24 +22340,24 @@
 #: builtin/show-branch.c:745
 #, c-format
 msgid "no such ref %s"
-msgstr "referência inexistente %s"
+msgstr "ref inexistente %s"
 
 #: builtin/show-branch.c:831
 #, c-format
 msgid "cannot handle more than %d rev."
 msgid_plural "cannot handle more than %d revs."
-msgstr[0] "não é possível processar mais do que %d revisão."
-msgstr[1] "não é possível processar mais do que %d revisões."
+msgstr[0] "incapaz lidar mais que %d rev."
+msgstr[1] "incapaz lidar mais que %d revs."
 
 #: builtin/show-branch.c:835
 #, c-format
 msgid "'%s' is not a valid ref."
-msgstr "'%s' não é uma referência válida."
+msgstr "'%s' é uma ref inválida."
 
 #: builtin/show-branch.c:838
 #, c-format
 msgid "cannot find commit %s (%s)"
-msgstr "não é possível encontrar o commit %s (%s)"
+msgstr "incapaz encontrar commit %s (%s)"
 
 #: builtin/show-index.c:21
 msgid "hash-algorithm"
@@ -21530,116 +22407,119 @@
 
 #: builtin/show-ref.c:177
 msgid "do not print results to stdout (useful with --verify)"
-msgstr "não imprimir resultados para o stdout (útil com --verify)"
+msgstr "imprimir resultados nenhuns para stdout (útil com --verify)"
 
 #: builtin/show-ref.c:179
 msgid "show refs from stdin that aren't in local repository"
-msgstr "mostrar referências do stdin que não estão no repositório local"
+msgstr "mostrar refs de stdin que estão fora do repositório local"
 
-#: builtin/sparse-checkout.c:21
+#: builtin/sparse-checkout.c:22
 msgid "git sparse-checkout (init|list|set|add|reapply|disable) <options>"
 msgstr ""
 
-#: builtin/sparse-checkout.c:50
+#: builtin/sparse-checkout.c:46
 #, fuzzy
 msgid "git sparse-checkout list"
 msgstr "git archive --list"
 
-#: builtin/sparse-checkout.c:76
+#: builtin/sparse-checkout.c:72
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:228
+#: builtin/sparse-checkout.c:227
 #, fuzzy
 msgid "failed to create directory for sparse-checkout file"
 msgstr "falha ao criar o diretório %s"
 
-#: builtin/sparse-checkout.c:269
+#: builtin/sparse-checkout.c:268
 msgid "unable to upgrade repository format to enable worktreeConfig"
 msgstr ""
 
-#: builtin/sparse-checkout.c:271
+#: builtin/sparse-checkout.c:270
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr ""
 
-#: builtin/sparse-checkout.c:288
-msgid "git sparse-checkout init [--cone]"
+#: builtin/sparse-checkout.c:290
+msgid "git sparse-checkout init [--cone] [--[no-]sparse-index]"
 msgstr ""
 
-#: builtin/sparse-checkout.c:307
+#: builtin/sparse-checkout.c:310
 msgid "initialize the sparse-checkout in cone mode"
 msgstr ""
 
-#: builtin/sparse-checkout.c:344
+#: builtin/sparse-checkout.c:312
+msgid "toggle the use of a sparse index"
+msgstr ""
+
+#: builtin/sparse-checkout.c:340
+msgid "failed to modify sparse-index config"
+msgstr ""
+
+#: builtin/sparse-checkout.c:361
 #, c-format
 msgid "failed to open '%s'"
 msgstr "falha ao abrir '%s'"
 
-#: builtin/sparse-checkout.c:401
+#: builtin/sparse-checkout.c:413
 #, fuzzy, c-format
 msgid "could not normalize path %s"
-msgstr "não foi possível analisar o patch '%s'"
+msgstr "incapaz normalizar patch %s"
 
-#: builtin/sparse-checkout.c:413
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:438
+#: builtin/sparse-checkout.c:450
 #, fuzzy, c-format
 msgid "unable to unquote C-style string '%s'"
-msgstr "não é possível ler a ligação simbólica %s"
+msgstr "incapaz de unquote string de C-style '%s'"
 
-#: builtin/sparse-checkout.c:492 builtin/sparse-checkout.c:516
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr ""
 
-#: builtin/sparse-checkout.c:561
-#, fuzzy
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
-msgstr "ler atualizações da entrada padrão"
+msgstr ""
 
-#: builtin/sparse-checkout.c:576
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr ""
 
-#: builtin/sparse-checkout.c:595
+#: builtin/sparse-checkout.c:607
 #, fuzzy
 msgid "git sparse-checkout disable"
 msgstr "ignorar a aplicação do filtro de extração esparsa"
 
-#: builtin/sparse-checkout.c:623
+#: builtin/sparse-checkout.c:638
 #, fuzzy
 msgid "error while refreshing working directory"
-msgstr "não é possível de obter o diretório de trabalho atual"
+msgstr "erro enquanto refrescava pasta de trabalho"
 
-#: builtin/stash.c:22 builtin/stash.c:38
+#: builtin/stash.c:24 builtin/stash.c:40
 #, fuzzy
 msgid "git stash list [<options>]"
-msgstr "git worktree list [<opções>]"
+msgstr "git stash list [<opções>]"
 
-#: builtin/stash.c:23 builtin/stash.c:43
+#: builtin/stash.c:25 builtin/stash.c:45
 #, fuzzy
 msgid "git stash show [<options>] [<stash>]"
-msgstr "git remote show [<opções>] <nome>"
+msgstr "git stash show [<opções>] [<escondido>]"
 
-#: builtin/stash.c:24 builtin/stash.c:48
+#: builtin/stash.c:26 builtin/stash.c:50
 msgid "git stash drop [-q|--quiet] [<stash>]"
 msgstr ""
 
-#: builtin/stash.c:25
+#: builtin/stash.c:27
 msgid "git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]"
 msgstr ""
 
-#: builtin/stash.c:26 builtin/stash.c:63
+#: builtin/stash.c:28 builtin/stash.c:65
 #, fuzzy
 msgid "git stash branch <branchname> [<stash>]"
-msgstr "git branch [<opções>] [-l] [-f] <nome-ramo> [<ponto-de-partida>]"
+msgstr "git stash branch <nome-de-ramo> [<escondido>]"
 
-#: builtin/stash.c:27 builtin/stash.c:68
-msgid "git stash clear"
-msgstr ""
-
-#: builtin/stash.c:28
+#: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
 "          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
@@ -21647,210 +22527,238 @@
 "          [--] [<pathspec>...]]"
 msgstr ""
 
-#: builtin/stash.c:32 builtin/stash.c:85
+#: builtin/stash.c:34 builtin/stash.c:87
 msgid ""
 "git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
 "          [-u|--include-untracked] [-a|--all] [<message>]"
 msgstr ""
 
-#: builtin/stash.c:53
+#: builtin/stash.c:55
 msgid "git stash pop [--index] [-q|--quiet] [<stash>]"
 msgstr ""
 
-#: builtin/stash.c:58
+#: builtin/stash.c:60
 msgid "git stash apply [--index] [-q|--quiet] [<stash>]"
 msgstr ""
 
-#: builtin/stash.c:73
+#: builtin/stash.c:75
 msgid "git stash store [-m|--message <message>] [-q|--quiet] <commit>"
 msgstr ""
 
-#: builtin/stash.c:78
+#: builtin/stash.c:80
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
 "          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
 "          [--] [<pathspec>...]]"
 msgstr ""
 
-#: builtin/stash.c:128
+#: builtin/stash.c:130
 #, fuzzy, c-format
 msgid "'%s' is not a stash-like commit"
-msgstr "'$args' não é um commit semelhante a pilha"
+msgstr "'%s' é commit tipo-arrumos nenhum"
 
-#: builtin/stash.c:148
+#: builtin/stash.c:150
 #, fuzzy, c-format
 msgid "Too many revisions specified:%s"
 msgstr "Demasiadas revisões especificadas: $REV"
 
-#: builtin/stash.c:162
+#: builtin/stash.c:164
 #, fuzzy
 msgid "No stash entries found."
 msgstr "Nenhuma pilha encontrada."
 
-#: builtin/stash.c:176
+#: builtin/stash.c:178
 #, fuzzy, c-format
 msgid "%s is not a valid reference"
-msgstr "'%s' não é uma referência válida."
+msgstr "%s é referência inválida"
 
-#: builtin/stash.c:225
-msgid "git stash clear with parameters is unimplemented"
-msgstr "não está implementado git stash clear com parâmetros"
+#: builtin/stash.c:227
+#, fuzzy
+msgid "git stash clear with arguments is unimplemented"
+msgstr "git stash clear com parâmetros está por implementar"
 
-#: builtin/stash.c:404
+#: builtin/stash.c:431
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file!  Renaming\n"
+"            %s -> %s\n"
+"         to make room.\n"
+msgstr ""
+
+#: builtin/stash.c:492
 #, fuzzy
 msgid "cannot apply a stash in the middle of a merge"
 msgstr "incapaz aplicar arrumação durante uma junção"
 
-#: builtin/stash.c:415
+#: builtin/stash.c:503
 #, fuzzy, c-format
 msgid "could not generate diff %s^!."
-msgstr "não foi possível ler '%s'."
+msgstr "incapaz gerar diff %s^!."
 
-#: builtin/stash.c:422
+#: builtin/stash.c:510
 #, fuzzy
 msgid "conflicts in index. Try without --index."
-msgstr "Conflitos no índice. Tente sem --index."
+msgstr "Conflitos no index. Tenta sem --index."
 
-#: builtin/stash.c:428
+#: builtin/stash.c:516
 #, fuzzy
 msgid "could not save index tree"
 msgstr "incapaz guardar árvore index"
 
-#: builtin/stash.c:437
+#: builtin/stash.c:525
 #, fuzzy
 msgid "could not restore untracked files from stash"
-msgstr "incapaz restaurar ficheiros por controlar de arrumos"
+msgstr "incapaz restaurar ficheiros por seguir de arrumos"
 
-#: builtin/stash.c:451
+#: builtin/stash.c:539
 #, fuzzy, c-format
 msgid "Merging %s with %s"
 msgstr "Juntando %s com %s"
 
-#: builtin/stash.c:461
+#: builtin/stash.c:549
 msgid "Index was not unstashed."
-msgstr "O índice não foi reposto."
+msgstr "Index está por despreparar."
 
-#: builtin/stash.c:522 builtin/stash.c:620
-#, fuzzy
+#: builtin/stash.c:591 builtin/stash.c:689
 msgid "attempt to recreate the index"
-msgstr "falha ao ler o índice"
+msgstr ""
 
-#: builtin/stash.c:566
+#: builtin/stash.c:635
 #, fuzzy, c-format
 msgid "Dropped %s (%s)"
 msgstr "A descartar ${REV} ($s)"
 
-#: builtin/stash.c:569
+#: builtin/stash.c:638
 #, fuzzy, c-format
 msgid "%s: Could not drop stash entry"
 msgstr "%s: Incapaz descartar entrada de arrumos"
 
-#: builtin/stash.c:582
+#: builtin/stash.c:651
 #, fuzzy, c-format
 msgid "'%s' is not a stash reference"
-msgstr "'$args' não é uma referência de pilha"
+msgstr "'%s' é referência de arrumos nenhuma"
 
-#: builtin/stash.c:632
+#: builtin/stash.c:701
 #, fuzzy
 msgid "The stash entry is kept in case you need it again."
 msgstr "A pilha é guarda no caso de precisar dela de novo."
 
-#: builtin/stash.c:655
+#: builtin/stash.c:724
 msgid "No branch name specified"
 msgstr "Nenhum nome de ramo especificado"
 
-#: builtin/stash.c:799 builtin/stash.c:836
+#: builtin/stash.c:808
+#, fuzzy
+msgid "failed to parse tree"
+msgstr "falhou processar árvore"
+
+#: builtin/stash.c:819
+#, fuzzy
+msgid "failed to unpack trees"
+msgstr "falha ao descompactar o objeto árvore HEAD"
+
+#: builtin/stash.c:839
+#, fuzzy
+msgid "include untracked files in the stash"
+msgstr "incluir ficheiros desmonitorizados de esconderijo"
+
+#: builtin/stash.c:842
+#, fuzzy
+msgid "only show untracked files in the stash"
+msgstr "mostrar apenas ficheiros desmonitorizados de esconderijo"
+
+#: builtin/stash.c:929 builtin/stash.c:966
 #, fuzzy, c-format
 msgid "Cannot update %s with %s"
 msgstr "Incapaz atualizar %s com %s"
 
-#: builtin/stash.c:817 builtin/stash.c:1471 builtin/stash.c:1536
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 #, fuzzy
 msgid "stash message"
 msgstr "mensagem da tag"
 
-#: builtin/stash.c:827
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr ""
 
-#: builtin/stash.c:1042
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Nenhuma alteração selecionada"
 
-#: builtin/stash.c:1142
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
-msgstr "O commit inicial ainda não existe"
+msgstr "Commit inicial ainda é inexistente"
 
-#: builtin/stash.c:1169
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Incapaz guardar estado atual de index"
 
-#: builtin/stash.c:1178
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
-msgstr "Incapaz de guardar ficheiros por controlar"
+msgstr "Incapaz de guardar ficheiros por seguir"
 
-#: builtin/stash.c:1189 builtin/stash.c:1198
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Incapaz guardar o estado atual de worktree"
 
-#: builtin/stash.c:1226
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Incapaz gravar o estado de worktree"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Impossível usar --patch e --include-untracked ou --all ao mesmo tempo"
 
-#: builtin/stash.c:1291
+#: builtin/stash.c:1422
 #, fuzzy
 msgid "Did you forget to 'git add'?"
 msgstr "Será que falta 'git add'?"
 
-#: builtin/stash.c:1306
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Com alterações locais para guardar nenhumas"
 
-#: builtin/stash.c:1313
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Incapaz inicializar arrumos"
 
-#: builtin/stash.c:1328
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Incapaz guardar o estado atual"
 
-#: builtin/stash.c:1333
+#: builtin/stash.c:1464
 #, fuzzy, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Diretório de trabalho e estado do índice $stash_msg guardados"
 
-#: builtin/stash.c:1423
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Incapaz remover alterações de worktree"
 
-#: builtin/stash.c:1462 builtin/stash.c:1527
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr ""
 
-#: builtin/stash.c:1464 builtin/stash.c:1529
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr ""
 
-#: builtin/stash.c:1465 builtin/stash.c:1530
+#: builtin/stash.c:1596 builtin/stash.c:1661
 #, fuzzy
 msgid "quiet mode"
-msgstr "silencioso"
+msgstr "modo silencioso"
 
-#: builtin/stash.c:1467 builtin/stash.c:1532
+#: builtin/stash.c:1598 builtin/stash.c:1663
 #, fuzzy
 msgid "include untracked files in stash"
-msgstr "listar ficheiros não controlados em colunas"
+msgstr "incluir ficheiros desmonitorizados de esconderijo"
 
-#: builtin/stash.c:1469 builtin/stash.c:1534
+#: builtin/stash.c:1600 builtin/stash.c:1665
 #, fuzzy
 msgid "include ignore files"
 msgstr "mostrar ficheiros ignorados"
 
-#: builtin/stash.c:1569
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -21873,47 +22781,48 @@
 msgid "prepend comment character and space to each line"
 msgstr "preceder cada linha com um carácter de comentário e um espaço"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2423
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Esperava-se um nome completo de uma referência, obteve-se %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
-msgstr "não é possível tirar um componente do URL '%s'"
+msgstr "incapaz despir um componente a partir do url '%s'"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1819
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "âncora alternativa para caminhos relativos"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<caminho>] [<caminho>...]"
 
-#: builtin/submodule--helper.c:472 builtin/submodule--helper.c:629
-#: builtin/submodule--helper.c:652
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Nenhum URL encontrado para o caminho de submódulo '%s' em .gitmodules"
 
-#: builtin/submodule--helper.c:524
+#: builtin/submodule--helper.c:526
 #, fuzzy, c-format
 msgid "Entering '%s'\n"
 msgstr "Entrando em '%s'\n"
 
-#: builtin/submodule--helper.c:527
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:549
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -21921,187 +22830,178 @@
 "."
 msgstr ""
 
-#: builtin/submodule--helper.c:565
-#, fuzzy
-msgid "Suppress output of entering each submodule command"
-msgstr "Suprimir a saída ao inicializar um submódulo"
+#: builtin/submodule--helper.c:567
+msgid "suppress output of entering each submodule command"
+msgstr ""
 
-#: builtin/submodule--helper.c:567 builtin/submodule--helper.c:1487
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 #, fuzzy
-msgid "Recurse into nested submodules"
-msgstr "percorrer submódulos recursivamente"
+msgid "recurse into nested submodules"
+msgstr "percorrer recursivamente submódulos aninhados"
 
-#: builtin/submodule--helper.c:572
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr ""
 
-#: builtin/submodule--helper.c:599
+#: builtin/submodule--helper.c:601
 #, fuzzy, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr ""
-"não é possível encontrar configuração '%s'. Assumir que este repositório é o "
-"próprio repositório a montante autoritário."
+"incapaz encontrar configuração '%s'. Assumindo que este repositório é o "
+"próprio repositório upstream autoritário."
 
-#: builtin/submodule--helper.c:666
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Falha ao registar o URL do caminho de submódulo '%s'"
 
-#: builtin/submodule--helper.c:670
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) registado para path '%s'\n"
 
-#: builtin/submodule--helper.c:680
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "aviso: modo command update sugerido para submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:687
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
-msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'"
+msgstr ""
 
-#: builtin/submodule--helper.c:709
-msgid "Suppress output for initializing a submodule"
-msgstr "Suprimir a saída ao inicializar um submódulo"
+#: builtin/submodule--helper.c:711
+msgid "suppress output for initializing a submodule"
+msgstr ""
 
-#: builtin/submodule--helper.c:714
-#, fuzzy
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:787 builtin/submodule--helper.c:922
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
-msgstr "para path '%s' encontrei em .gitmodules, mapeamento de submódulo nenhum"
+msgstr ""
+"para path '%s' encontrei em .gitmodules, mapeamento de submódulo nenhum"
 
-#: builtin/submodule--helper.c:835
+#: builtin/submodule--helper.c:837
 #, fuzzy, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
-msgstr "não foi possível percorrer recursivamente o submódulo '%s'"
+msgstr "incapaz resolver ref HEAD dentro de submódulo '%s'"
 
-#: builtin/submodule--helper.c:862 builtin/submodule--helper.c:1457
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, fuzzy, c-format
 msgid "failed to recurse into submodule '%s'"
-msgstr "não foi possível percorrer recursivamente o submódulo '%s'"
+msgstr "falha a percorrer recursivamente dentro de submódulo '%s'"
 
-#: builtin/submodule--helper.c:886 builtin/submodule--helper.c:1623
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 #, fuzzy
-msgid "Suppress submodule status output"
+msgid "suppress submodule status output"
 msgstr "preceder isto ao caminho do submódulo"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:889
 msgid ""
-"Use commit stored in the index instead of the one stored in the submodule "
+"use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:888
-#, fuzzy
-msgid "recurse into nested submodules"
-msgstr "percorrer submódulos recursivamente"
-
-#: builtin/submodule--helper.c:893
+#: builtin/submodule--helper.c:895
 #, fuzzy
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<caminho>] [<caminho>...]"
 
-#: builtin/submodule--helper.c:917
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <caminho>"
 
-#: builtin/submodule--helper.c:989
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr ""
 
-#: builtin/submodule--helper.c:992
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr ""
 
-#: builtin/submodule--helper.c:1005
+#: builtin/submodule--helper.c:1007
 #, fuzzy, c-format
 msgid "%s"
 msgstr "[%s]"
 
-#: builtin/submodule--helper.c:1055
+#: builtin/submodule--helper.c:1057
 #, fuzzy, c-format
 msgid "couldn't hash object from '%s'"
-msgstr "não foi possível analisar o objeto '%s'"
+msgstr "incapaz fazer hash a objeto a partir de '%s'"
 
-#: builtin/submodule--helper.c:1059
+#: builtin/submodule--helper.c:1061
 #, fuzzy, c-format
 msgid "unexpected mode %o\n"
-msgstr "estou à espera de um modo diferente de %o\n"
-
-#: builtin/submodule--helper.c:1300
-#, fuzzy
-msgid "use the commit stored in the index instead of the submodule HEAD"
-msgstr "extrair <ramo> em vez da HEAD do remoto"
+msgstr "modo inesperado %o\n"
 
 #: builtin/submodule--helper.c:1302
-msgid "to compare the commit in the index with that in the submodule HEAD"
+msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr ""
 
 #: builtin/submodule--helper.c:1304
+#, fuzzy
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "compara a memória no arquivador com aquela no submódulo HEAD"
+
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1306
+#: builtin/submodule--helper.c:1308
 #, fuzzy
 msgid "limit the summary size"
 msgstr "restringir-se a cabeças"
 
-#: builtin/submodule--helper.c:1311
-#, fuzzy
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:1335
+#: builtin/submodule--helper.c:1337
 #, fuzzy
 msgid "could not fetch a revision for HEAD"
-msgstr "não foi possível destacar HEAD"
+msgstr "incapaz buscar uma revisão para HEAD"
 
-#: builtin/submodule--helper.c:1340
-#, fuzzy
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
-msgstr "--deepen e --depth são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/submodule--helper.c:1407
+#: builtin/submodule--helper.c:1409
 #, fuzzy, c-format
 msgid "Synchronizing submodule url for '%s'\n"
-msgstr "Sincronizando URL do submódule '%s'\n"
+msgstr "Sincronizando url de submódulo para '%s'\n"
 
-#: builtin/submodule--helper.c:1413
+#: builtin/submodule--helper.c:1415
 #, fuzzy, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "Falha ao registar o URL do caminho de submódulo '%s'"
 
-#: builtin/submodule--helper.c:1427
-#, fuzzy, c-format
+#: builtin/submodule--helper.c:1429
+#, c-format
 msgid "failed to get the default remote for submodule '%s'"
-msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'"
+msgstr ""
 
-#: builtin/submodule--helper.c:1438
-#, fuzzy, c-format
+#: builtin/submodule--helper.c:1440
+#, c-format
 msgid "failed to update remote for submodule '%s'"
-msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'"
+msgstr ""
 
-#: builtin/submodule--helper.c:1485
-#, fuzzy
-msgid "Suppress output of synchronizing submodule url"
-msgstr "Suprimir a saída ao inicializar um submódulo"
+#: builtin/submodule--helper.c:1487
+msgid "suppress output of synchronizing submodule url"
+msgstr ""
 
-#: builtin/submodule--helper.c:1492
-#, fuzzy
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:1546
+#: builtin/submodule--helper.c:1548
 #, fuzzy, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22110,7 +23010,7 @@
 "Submodule work tree '%s' tem uma pasta .git (usa 'rm -rf' se queres mesmo "
 "removê-la e remover toda a história)"
 
-#: builtin/submodule--helper.c:1558
+#: builtin/submodule--helper.c:1560
 #, fuzzy, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -22119,46 +23019,45 @@
 "A árvore de trabalho do submódulo '$displaypath' contém alterações locais; "
 "use '-f' para as descartar"
 
-#: builtin/submodule--helper.c:1566
+#: builtin/submodule--helper.c:1568
 #, fuzzy, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Pasta '%s' limpa\n"
 
-#: builtin/submodule--helper.c:1568
+#: builtin/submodule--helper.c:1570
 #, fuzzy, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Impossível remover submodule work tree '%s'\n"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1581
 #, fuzzy, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "incapaz criar pasta vazio de submódulo %s"
 
-#: builtin/submodule--helper.c:1595
+#: builtin/submodule--helper.c:1597
 #, fuzzy, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) unregistred para caminho '%s'\n"
 
-#: builtin/submodule--helper.c:1624
-msgid "Remove submodule working trees even if they contain local changes"
+#: builtin/submodule--helper.c:1626
+msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 
-#: builtin/submodule--helper.c:1625
-#, fuzzy
-msgid "Unregister all submodules"
-msgstr "percorrer submódulos recursivamente"
+#: builtin/submodule--helper.c:1627
+msgid "unregister all submodules"
+msgstr ""
 
-#: builtin/submodule--helper.c:1630
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1644
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 "Use '--all' se pretende mesmo anular a inicialização todos os submódulos"
 
-#: builtin/submodule--helper.c:1713
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22166,47 +23065,68 @@
 "'--reference-if-able' instead of '--reference'."
 msgstr ""
 
-#: builtin/submodule--helper.c:1752 builtin/submodule--helper.c:1755
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
-msgstr "o submódulo '%s' não pode adicionar sobressalente: %s"
+msgstr "submódulo '%s' incapaz adicionar alternativo: %s"
 
-#: builtin/submodule--helper.c:1791
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
-msgstr "O valor '%s' de submodule.alternateErrorStrategy não é reconhecido"
+msgstr "Valor '%s' de submodule.alternateErrorStrategy é irreconhecível"
 
-#: builtin/submodule--helper.c:1798
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
-msgstr "O valor '%s' de submodule.alternateLocation não é reconhecido"
+msgstr "Valor '%s' de submodule.alternateLocation é irreconhecível"
 
-#: builtin/submodule--helper.c:1822
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "recusando criar/usar '%s' em outra pasta de submódulo git"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "clonar '%s' no caminho de submódulo '%s' falhou"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "pasta com conteúdo: '%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "incapaz obter pasta de submódulo para '%s'"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "sítio para aonde o novo submódulo será clonado"
 
-#: builtin/submodule--helper.c:1825
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "nome do novo submódulo"
 
-#: builtin/submodule--helper.c:1828
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "url donde clonar o submódulos"
 
-#: builtin/submodule--helper.c:1836
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "profundidade de clones rasos"
 
-#: builtin/submodule--helper.c:1839 builtin/submodule--helper.c:2348
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "forçar progresso da clonagem"
 
-#: builtin/submodule--helper.c:1841 builtin/submodule--helper.c:2350
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 #, fuzzy
 msgid "disallow cloning into non-empty directory"
 msgstr "a aplicar a um histórico vazio"
 
-#: builtin/submodule--helper.c:1848
+#: builtin/submodule--helper.c:1916
 #, fuzzy
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
@@ -22216,105 +23136,86 @@
 "git submodule--helper clone [--prefix=<caminho>] [--quiet] [--reference "
 "<repositório>] [--name <nome>] [--depth <depth>] --url <url> --path <caminho>"
 
-#: builtin/submodule--helper.c:1873
+#: builtin/submodule--helper.c:1953
 #, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
+msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1884
+#: builtin/submodule--helper.c:1957
 #, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "falha ao clonar '%s' no caminho de submódulo '%s'"
-
-#: builtin/submodule--helper.c:1888
-#, fuzzy, c-format
-msgid "directory not empty: '%s'"
-msgstr "o diretório de origem está vazio"
-
-#: builtin/submodule--helper.c:1900
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "não foi possível obter o diretório do submódulo de '%s'"
-
-#: builtin/submodule--helper.c:1936
-#, fuzzy, c-format
-msgid "Invalid update mode '%s' for submodule path '%s'"
-msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'"
-
-#: builtin/submodule--helper.c:1940
-#, fuzzy, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
-msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'"
+msgstr ""
 
-#: builtin/submodule--helper.c:2041
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
-msgstr "Caminho de submódulo '%s' não inicializado"
+msgstr "Path de submódulo '%s' por inicializar"
 
-#: builtin/submodule--helper.c:2045
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
-msgstr "Pretendia usar 'update --init'?"
+msgstr "Pretendias usar 'update --init'?"
 
-#: builtin/submodule--helper.c:2075
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
-msgstr "A ignorar submódulo %s não integrado"
+msgstr "Passando à frente submódulo por juntar %s"
 
-#: builtin/submodule--helper.c:2104
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
-msgstr "A ignorar submódulo '%s'"
+msgstr "Passando à frente submódulo '%s'"
 
-#: builtin/submodule--helper.c:2254
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Falha ao clonar '%s'. Nova tentativa agendada"
 
-#: builtin/submodule--helper.c:2265
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Falha ao clonar '%s' pela segunda vez, abortado"
 
-#: builtin/submodule--helper.c:2327 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
-msgstr "caminho para a árvore de trabalho"
+msgstr "caminho para árvore de trabalho"
 
-#: builtin/submodule--helper.c:2330
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 "caminho para a árvore de trabalho, atravessando limites de submódulos "
 "aninhados"
 
-#: builtin/submodule--helper.c:2334
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout ou none"
 
-#: builtin/submodule--helper.c:2340
-msgid "Create a shallow clone truncated to the specified number of revisions"
+#: builtin/submodule--helper.c:2357
+#, fuzzy
+msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "criar um clone raso, truncado ao número especificado de revisões"
 
-#: builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "trabalhos em paralelo"
 
-#: builtin/submodule--helper.c:2345
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "se o clone inicial deve seguir a recomendação rasa"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
-msgstr "não imprimir progresso da clonagem"
+msgstr "imprimir progresso da clonagem nenhum"
 
-#: builtin/submodule--helper.c:2357
+#: builtin/submodule--helper.c:2374
 #, fuzzy
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<caminho>] [<caminho>...]"
 
-#: builtin/submodule--helper.c:2370
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "valor incorreto no parâmetro update"
 
-#: builtin/submodule--helper.c:2418
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22323,100 +23224,151 @@
 "Ramo de submódulo (%s) foi configurado para herdar o ramo do superprojeto, "
 "mas o superprojeto está em ramo nenhum"
 
-#: builtin/submodule--helper.c:2541
+#: builtin/submodule--helper.c:2558
 #, fuzzy, c-format
 msgid "could not get a repository handle for submodule '%s'"
-msgstr "não foi possível procurar pelo submódulo '%s'"
+msgstr "incapaz obter pega de repositório para submódulo '%s'"
 
-#: builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
-msgstr "percorrer submódulos recursivamente"
+msgstr "percorrer recursivamente submódulos"
 
-#: builtin/submodule--helper.c:2580
+#: builtin/submodule--helper.c:2597
 #, fuzzy
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<caminho>...]"
 
-#: builtin/submodule--helper.c:2636
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr ""
 
-#: builtin/submodule--helper.c:2639
+#: builtin/submodule--helper.c:2656
 #, fuzzy
 msgid "unset the config in the .gitmodules file"
 msgstr "falha ao preparar .gitmodules atualizado"
 
-#: builtin/submodule--helper.c:2644
+#: builtin/submodule--helper.c:2661
 #, fuzzy
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper name <caminho>"
 
-#: builtin/submodule--helper.c:2645
-#, fuzzy
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:2646
-#, fuzzy
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:2665 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, fuzzy, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ""
 "Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir"
 
-#: builtin/submodule--helper.c:2681
-#, fuzzy
-msgid "Suppress output for setting url of a submodule"
-msgstr "Suprimir a saída ao inicializar um submódulo"
+#: builtin/submodule--helper.c:2698
+msgid "suppress output for setting url of a submodule"
+msgstr ""
 
-#: builtin/submodule--helper.c:2685
-#, fuzzy
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
-msgstr "git submodule--helper init [<caminho>]"
+msgstr ""
 
-#: builtin/submodule--helper.c:2718
-#, fuzzy
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
-msgstr "mostrar os ramos de monitorização remotos"
+msgstr ""
 
-#: builtin/submodule--helper.c:2720
-#, fuzzy
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
-msgstr "mostrar os ramos de monitorização remotos"
+msgstr ""
 
-#: builtin/submodule--helper.c:2724
+#: builtin/submodule--helper.c:2741
 #, fuzzy
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
-msgstr "git submodule--helper list [--prefix=<caminho>] [<caminho>...]"
+msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <caminho>"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2742
 #, fuzzy
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
-msgstr "git submodule--helper list [--prefix=<caminho>] [<caminho>...]"
+msgstr ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <ramo> <caminho>"
 
-#: builtin/submodule--helper.c:2732
+#: builtin/submodule--helper.c:2749
 #, fuzzy
 msgid "--branch or --default required"
 msgstr "nome do ramo é obrigatório"
 
-#: builtin/submodule--helper.c:2735
-#, fuzzy
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
-msgstr "--deepen e --depth são mutuamente exclusivos"
+msgstr ""
 
-#: builtin/submodule--helper.c:2792 git.c:438 git.c:711
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Adicionando repo existente em '%s' ao cenário\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' já existe e é repositório git inválido"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "Uma pasta git para '%s' foi encontrado localmente com remoto(s):"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Se queres reutilizar esta pasta git local, em vez de voltares a clonar de\n"
+"  %s\n"
+"usa a opção '--force'. Se a pasta git local é o repo incorreto ou\n"
+"se tens pouca certeza sobre o que isto significa, podes mudar o nome com a "
+"opção '--name'.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Reactivando pasta git local para submódulo '%s'\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "incapaz de observar submódulo '%s'"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "ramo de repositório para observar na clonagem"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "permitir adicionar os caminhos de submódulo ignorados"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<opções>...] --url <url> --path <caminho> "
+"--name <nome>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
-msgstr "%s não suporta --super-prefix"
+msgstr "%s insustenta --super-prefix"
 
-#: builtin/submodule--helper.c:2798
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
-msgstr "'%s' não é um subcomando válido de submodule--helper"
+msgstr "'%s' é subcomando inválido de submodule--helper"
 
 #: builtin/symbolic-ref.c:8
 msgid "git symbolic-ref [<options>] <name> [<ref>]"
@@ -22426,24 +23378,23 @@
 msgid "git symbolic-ref -d [-q] <name>"
 msgstr "git symbolic-ref -d [-q] <nome>"
 
-#: builtin/symbolic-ref.c:40
-msgid "suppress error message for non-symbolic (detached) refs"
-msgstr ""
-"suprimir mensagens de erro sobre referências não-simbólicas (destacadas)"
-
-#: builtin/symbolic-ref.c:41
-msgid "delete symbolic ref"
-msgstr "eliminar referências simbólicas"
-
 #: builtin/symbolic-ref.c:42
-msgid "shorten ref output"
-msgstr "encurtar a apresentação de referências"
+msgid "suppress error message for non-symbolic (detached) refs"
+msgstr "suprimir mensagens de erro sobre refs não-simbólicas (destacadas)"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
+#: builtin/symbolic-ref.c:43
+msgid "delete symbolic ref"
+msgstr "apagar ref simbólica"
+
+#: builtin/symbolic-ref.c:44
+msgid "shorten ref output"
+msgstr "encurtar output de ref"
+
+#: builtin/symbolic-ref.c:45 builtin/update-ref.c:499
 msgid "reason"
 msgstr "razão"
 
-#: builtin/symbolic-ref.c:43 builtin/update-ref.c:499
+#: builtin/symbolic-ref.c:45 builtin/update-ref.c:499
 msgid "reason of the update"
 msgstr "razão da atualização"
 
@@ -22477,17 +23428,17 @@
 msgid "git tag -v [--format=<format>] <tagname>..."
 msgstr "git tag -v [--format=<formato>] <nometag>..."
 
-#: builtin/tag.c:89
+#: builtin/tag.c:100
 #, c-format
 msgid "tag '%s' not found."
-msgstr "tag '%s' não encontrada."
+msgstr "tag '%s' por encontrar."
 
-#: builtin/tag.c:105
+#: builtin/tag.c:135
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Apaguei tag '%s' (era %s)\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:170
 #, c-format
 msgid ""
 "\n"
@@ -22500,7 +23451,7 @@
 "  %s\n"
 "Linha começadas com '%c' serão ignoradas.\n"
 
-#: builtin/tag.c:139
+#: builtin/tag.c:174
 #, c-format
 msgid ""
 "\n"
@@ -22514,15 +23465,11 @@
 "  %s\n"
 "Linhas começadas com '%c' serão mantidas; se queres, podes apagá-las.\n"
 
-#: builtin/tag.c:198
+#: builtin/tag.c:241
 msgid "unable to sign the tag"
-msgstr "não foi possível assinar a tag"
+msgstr "incapaz assinar a tag"
 
-#: builtin/tag.c:200
-msgid "unable to write tag file"
-msgstr "não foi possível escrever o ficheiro da tag"
-
-#: builtin/tag.c:216
+#: builtin/tag.c:259
 #, c-format
 msgid ""
 "You have created a nested tag. The object referred to by your new tag is\n"
@@ -22531,146 +23478,142 @@
 "\tgit tag -f %s %s^{}"
 msgstr ""
 
-#: builtin/tag.c:232
+#: builtin/tag.c:275
 msgid "bad object type."
 msgstr "tipo de objeto incorreto."
 
-#: builtin/tag.c:285
+#: builtin/tag.c:328
 msgid "no tag message?"
 msgstr "sem mensagem de tag?"
 
-#: builtin/tag.c:292
+#: builtin/tag.c:335
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Deixei a mensagem da tag em %s\n"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:446
 msgid "list tag names"
 msgstr "listar os nomes das tag"
 
-#: builtin/tag.c:405
+#: builtin/tag.c:448
 msgid "print <n> lines of each tag message"
 msgstr "imprimir <n> linhas de cada mensagem de tag"
 
-#: builtin/tag.c:407
+#: builtin/tag.c:450
 msgid "delete tags"
 msgstr "eliminar tags"
 
-#: builtin/tag.c:408
+#: builtin/tag.c:451
 msgid "verify tags"
 msgstr "verificar tags"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:453
 msgid "Tag creation options"
 msgstr "Opções de criação de tags"
 
-#: builtin/tag.c:412
+#: builtin/tag.c:455
 msgid "annotated tag, needs a message"
 msgstr "tag anotada, é necessário uma mensagem"
 
-#: builtin/tag.c:414
+#: builtin/tag.c:457
 msgid "tag message"
 msgstr "mensagem da tag"
 
-#: builtin/tag.c:416
+#: builtin/tag.c:459
 #, fuzzy
 msgid "force edit of tag message"
 msgstr "forçar edição do commit"
 
-#: builtin/tag.c:417
+#: builtin/tag.c:460
 msgid "annotated and GPG-signed tag"
 msgstr "tag anotada e assinada com GPG"
 
-#: builtin/tag.c:420
+#: builtin/tag.c:463
 msgid "use another key to sign the tag"
 msgstr "usar outra chave para assinar a tag"
 
-#: builtin/tag.c:421
+#: builtin/tag.c:464
 msgid "replace the tag if exists"
 msgstr "substituir a tag se esta existir"
 
-#: builtin/tag.c:422 builtin/update-ref.c:505
+#: builtin/tag.c:465 builtin/update-ref.c:505
 msgid "create a reflog"
 msgstr "criar um reflog"
 
-#: builtin/tag.c:424
+#: builtin/tag.c:467
 msgid "Tag listing options"
 msgstr "Opções de listagem de tags"
 
-#: builtin/tag.c:425
+#: builtin/tag.c:468
 msgid "show tag list in columns"
 msgstr "mostrar a lista de tags em colunas"
 
-#: builtin/tag.c:426 builtin/tag.c:428
+#: builtin/tag.c:469 builtin/tag.c:471
 msgid "print only tags that contain the commit"
 msgstr "imprimir apenas tags que contenham o commit"
 
-#: builtin/tag.c:427 builtin/tag.c:429
+#: builtin/tag.c:470 builtin/tag.c:472
 msgid "print only tags that don't contain the commit"
-msgstr "imprimir apenas tags que não contenham o commit"
+msgstr "imprimir apenas tags a que falte o commit"
 
-#: builtin/tag.c:430
+#: builtin/tag.c:473
 msgid "print only tags that are merged"
 msgstr "imprimir apenas as tags que foram integradas"
 
-#: builtin/tag.c:431
+#: builtin/tag.c:474
 msgid "print only tags that are not merged"
-msgstr "imprimir apenas as tags que não foram integradas"
+msgstr "imprimir apenas as tags que estão por juntar"
 
-#: builtin/tag.c:435
+#: builtin/tag.c:478
 msgid "print only tags of the object"
-msgstr "imprimir apenas as tags do objeto"
+msgstr "imprimir apenas etiquetas do objeto"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:526
 msgid "--column and -n are incompatible"
 msgstr "--column e -n são incompatíveis"
 
-#: builtin/tag.c:505
+#: builtin/tag.c:548
 msgid "-n option is only allowed in list mode"
 msgstr "a opção -n só é permitida no modo lista"
 
-#: builtin/tag.c:507
+#: builtin/tag.c:550
 msgid "--contains option is only allowed in list mode"
 msgstr "a opção --contains só é permitida no modo lista"
 
-#: builtin/tag.c:509
+#: builtin/tag.c:552
 msgid "--no-contains option is only allowed in list mode"
-msgstr "a opção --contains só é permitida no modo lista"
+msgstr "opção --no-contains só é permitida no modo lista"
 
-#: builtin/tag.c:511
+#: builtin/tag.c:554
 msgid "--points-at option is only allowed in list mode"
 msgstr "a opção --points-at só é permitida no modo lista"
 
-#: builtin/tag.c:513
+#: builtin/tag.c:556
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "as opções --merged e --no-merged só são permitidas no modo lista"
 
-#: builtin/tag.c:524
+#: builtin/tag.c:567
 msgid "only one -F or -m option is allowed."
 msgstr "só é permitido um opção -F ou -m."
 
-#: builtin/tag.c:543
-msgid "too many params"
-msgstr "demasiado parâmetros"
-
-#: builtin/tag.c:549
+#: builtin/tag.c:592
 #, c-format
 msgid "'%s' is not a valid tag name."
-msgstr "'%s' não é um nome de tag válido."
+msgstr "'%s' é nome de tag inválido."
 
-#: builtin/tag.c:554
+#: builtin/tag.c:597
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "a tag '%s' já existe"
 
-#: builtin/tag.c:585
+#: builtin/tag.c:628
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Atualizei tag '%s' (era %s)\n"
 
-#: builtin/unpack-objects.c:502
+#: builtin/unpack-objects.c:504
 msgid "Unpacking objects"
-msgstr "A descompactar objetos"
+msgstr "Desempacotando objetos"
 
 #: builtin/update-index.c:84
 #, c-format
@@ -22680,7 +23623,7 @@
 #: builtin/update-index.c:100
 #, c-format
 msgid "failed to create file %s"
-msgstr "falha ao criar o ficheiro %s"
+msgstr "falhou criar ficheiro %s"
 
 #: builtin/update-index.c:108
 #, c-format
@@ -22695,39 +23638,32 @@
 #: builtin/update-index.c:140
 #, c-format
 msgid "Testing mtime in '%s' "
-msgstr "A testar mtime em '%s' "
+msgstr "Testando mtime em '%s' "
 
 #: builtin/update-index.c:154
 msgid "directory stat info does not change after adding a new file"
 msgstr ""
-"a informação de stat do diretório não mudou depois de adicionar um novo "
-"ficheiro"
+"info de stat da pasta mantêm-se inalterada após adicionar novo ficheiro"
 
 #: builtin/update-index.c:167
 msgid "directory stat info does not change after adding a new directory"
-msgstr ""
-"a informação de stat do diretório não mudou depois de adicionar um novo "
-"diretório"
+msgstr "info de stat da pasta mantêm-se inalterada após adicionar nova pasta"
 
 #: builtin/update-index.c:180
 msgid "directory stat info changes after updating a file"
-msgstr "a informação de stat mudou depois de atualizar um ficheiro"
+msgstr "info de stat muda após atualizar ficheiro"
 
 #: builtin/update-index.c:191
 msgid "directory stat info changes after adding a file inside subdirectory"
-msgstr ""
-"a informação de stat do diretório mudou depois de adicionar um ficheiro "
-"dentro dum subdiretório"
+msgstr "info de stat da pasta muda após adicionar ficheiro dentro de subpasta"
 
 #: builtin/update-index.c:202
 msgid "directory stat info does not change after deleting a file"
-msgstr ""
-"a informação de stat do diretório não mudou depois de eliminar um ficheiro"
+msgstr "info de stat da pasta mantêm-se inalterada após apagar ficheiro"
 
 #: builtin/update-index.c:215
 msgid "directory stat info does not change after deleting a directory"
-msgstr ""
-"a informação de stat do diretório não mudou depois de eliminar um diretório"
+msgstr "info de stat da pasta mantêm-se inalterada após apagar pasta"
 
 #: builtin/update-index.c:222
 msgid " OK"
@@ -22737,149 +23673,148 @@
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<opções>] [--] [<ficheiro>...]"
 
-#: builtin/update-index.c:974
+#: builtin/update-index.c:976
 msgid "continue refresh even when index needs update"
 msgstr "continuar a refrescar mesmo quando o índice precise de ser atualizado"
 
-#: builtin/update-index.c:977
+#: builtin/update-index.c:979
 msgid "refresh: ignore submodules"
 msgstr "refrescar: ignorar submódulos"
 
-#: builtin/update-index.c:980
-msgid "do not ignore new files"
-msgstr "não ignorar novos ficheiros"
-
 #: builtin/update-index.c:982
+msgid "do not ignore new files"
+msgstr "considera novos ficheiros"
+
+#: builtin/update-index.c:984
 msgid "let files replace directories and vice-versa"
 msgstr "deixar que os ficheiros substituam os diretórios e vice-versa"
 
-#: builtin/update-index.c:984
+#: builtin/update-index.c:986
 msgid "notice files missing from worktree"
 msgstr "avisar sobre ficheiros que faltem na árvore de trabalho"
 
-#: builtin/update-index.c:986
+#: builtin/update-index.c:988
 msgid "refresh even if index contains unmerged entries"
-msgstr "refrescar mesmo que o índice contenha entradas não integradas"
+msgstr "refrescar mesmo se índex contenha entradas por juntar"
 
-#: builtin/update-index.c:989
+#: builtin/update-index.c:991
 msgid "refresh stat information"
 msgstr "refrescar informação de stat"
 
-#: builtin/update-index.c:993
+#: builtin/update-index.c:995
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "como --refresh, mas ignorar a definição assume-unchanged"
 
-#: builtin/update-index.c:997
+#: builtin/update-index.c:999
 msgid "<mode>,<object>,<path>"
 msgstr "<modo>,<objeto>,<caminho>"
 
-#: builtin/update-index.c:998
+#: builtin/update-index.c:1000
 msgid "add the specified entry to the index"
 msgstr "adicionar o elemento especificado ao índice"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1010
 msgid "mark files as \"not changing\""
-msgstr "marcar ficheiros como \"não alterados\""
+msgstr "marcar ficheiros como \"não alterar\""
 
-#: builtin/update-index.c:1011
+#: builtin/update-index.c:1013
 msgid "clear assumed-unchanged bit"
 msgstr "limpar o bit assumed-unchanged"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1016
 msgid "mark files as \"index-only\""
 msgstr "marcar ficheiros como \"únicos do índice\""
 
-#: builtin/update-index.c:1017
+#: builtin/update-index.c:1019
 msgid "clear skip-worktree bit"
 msgstr "limpar o bit ignorar-árvore-de-trabalho"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1022
 msgid "do not touch index-only entries"
 msgstr ""
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1024
 msgid "add to index only; do not add content to object database"
 msgstr ""
-"só adicionar ao índice; não adicionar o conteúdo à base de dados de objetos"
+"adicionar apenas a index; não adicionar conteúdo à base de dados de objetos"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1026
 msgid "remove named paths even if present in worktree"
 msgstr ""
 "remover os caminhos mencionado mesmo se estiverem presentes na árvore de "
 "trabalho"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1028
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "com --stdin: as linhas da entrada são terminadas com bytes nulos"
 
-#: builtin/update-index.c:1028
+#: builtin/update-index.c:1030
 msgid "read list of paths to be updated from standard input"
 msgstr "ler lista de caminho a atualizar da entrada padrão"
 
-#: builtin/update-index.c:1032
+#: builtin/update-index.c:1034
 msgid "add entries from standard input to the index"
 msgstr "adicionar elementos da entrada padrão ao índice"
 
-#: builtin/update-index.c:1036
+#: builtin/update-index.c:1038
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "repovoar as fases nº2 e nº3 dos caminhos listados"
 
-#: builtin/update-index.c:1040
+#: builtin/update-index.c:1042
 msgid "only update entries that differ from HEAD"
 msgstr "atualizar apenas elementos que difiram de HEAD"
 
-#: builtin/update-index.c:1044
+#: builtin/update-index.c:1046
 msgid "ignore files missing from worktree"
-msgstr "ignorar ficheiros não presentes na árvore de trabalho"
-
-#: builtin/update-index.c:1047
-msgid "report actions to standard output"
-msgstr "mostrar ações na saída padrão"
+msgstr "ignorar ficheiros ausentes da worktree"
 
 #: builtin/update-index.c:1049
-msgid "(for porcelains) forget saved unresolved conflicts"
-msgstr ""
-"(para porcelanas) esquecer conflitos guardados que não foram resolvidos"
+msgid "report actions to standard output"
+msgstr "reportar ações na saída padrão"
 
-#: builtin/update-index.c:1053
+#: builtin/update-index.c:1051
+msgid "(for porcelains) forget saved unresolved conflicts"
+msgstr "(para porcelains) esquecer conflitos guardados que estão por resolver"
+
+#: builtin/update-index.c:1055
 msgid "write index in this format"
 msgstr "escrever o índice neste formato"
 
-#: builtin/update-index.c:1055
+#: builtin/update-index.c:1057
 msgid "enable or disable split index"
 msgstr "ativar ou desativar a divisão do índice"
 
-#: builtin/update-index.c:1057
-msgid "enable/disable untracked cache"
-msgstr "ativar ou desativar cache não controlada"
-
 #: builtin/update-index.c:1059
-msgid "test if the filesystem supports untracked cache"
-msgstr "testar se o sistema de ficheiros suporta cache não controlada"
+msgid "enable/disable untracked cache"
+msgstr "ativar/desativar cache por monitorizar"
 
 #: builtin/update-index.c:1061
-msgid "enable untracked cache without testing the filesystem"
-msgstr "ativar cache não controlada sem testar o sistema de ficheiros"
+msgid "test if the filesystem supports untracked cache"
+msgstr "testar se sistema de ficheiros sustenta cache por monitorizar"
 
 #: builtin/update-index.c:1063
+msgid "enable untracked cache without testing the filesystem"
+msgstr "ativar cache por monitorizar sem testar o sistema de ficheiros"
+
+#: builtin/update-index.c:1065
 msgid "write out the index even if is not flagged as changed"
 msgstr ""
 
-#: builtin/update-index.c:1065
+#: builtin/update-index.c:1067
 #, fuzzy
 msgid "enable or disable file system monitor"
 msgstr "ativar ou desativar a divisão do índice"
 
-#: builtin/update-index.c:1067
+#: builtin/update-index.c:1069
 #, fuzzy
 msgid "mark files as fsmonitor valid"
-msgstr "marcar ficheiros como \"não alterados\""
+msgstr "marcar ficheiros válidos para fsmonitor"
 
-#: builtin/update-index.c:1070
+#: builtin/update-index.c:1072
 msgid "clear fsmonitor valid bit"
-msgstr ""
+msgstr "limpar bit válido de fsmonitor"
 
-#: builtin/update-index.c:1173
+#: builtin/update-index.c:1175
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -22887,7 +23822,7 @@
 "core.splitIndex está definida como false; remova ou altere-a se pretende "
 "mesmo ativar índice separado"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1184
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -22895,43 +23830,43 @@
 "core.splitIndex está definida como true; remova ou altere-a se pretende "
 "mesmo desativar índice separado"
 
-#: builtin/update-index.c:1194
+#: builtin/update-index.c:1196
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
 msgstr ""
-"core.untrackedCache está definida como true; remova ou altere-a se pretende "
-"mesmo desativar a cache não controlada"
+"core.untrackedCache está definida como true; remove ou altera-a, se queres "
+"mesmo desativar a cache por monitorizar"
 
-#: builtin/update-index.c:1198
+#: builtin/update-index.c:1200
 msgid "Untracked cache disabled"
-msgstr "A cache não controlada está desativada"
+msgstr "Cache por monitorizar está desativada"
 
-#: builtin/update-index.c:1206
+#: builtin/update-index.c:1208
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
 msgstr ""
-"core.untrackedCache está definida como false; remova ou altere-a se pretende "
-"mesmo ativar a cache não controlada"
+"core.untrackedCache está definida como false; remove ou altera-a, se queres "
+"mesmo ativar a cache por monitorizar"
 
-#: builtin/update-index.c:1210
+#: builtin/update-index.c:1212
 #, c-format
 msgid "Untracked cache enabled for '%s'"
-msgstr "A cache não controlada de '%s' foi ativada."
+msgstr "Cache por monitorizar ativada para '%s'"
 
-#: builtin/update-index.c:1218
+#: builtin/update-index.c:1220
 #, fuzzy
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "core.splitIndex está definida como false; remova ou altere-a se pretende "
 "mesmo ativar índice separado"
 
-#: builtin/update-index.c:1222
+#: builtin/update-index.c:1224
 msgid "fsmonitor enabled"
 msgstr ""
 
-#: builtin/update-index.c:1225
+#: builtin/update-index.c:1227
 #, fuzzy
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
@@ -22939,7 +23874,7 @@
 "core.splitIndex está definida como true; remova ou altere-a se pretende "
 "mesmo desativar índice separado"
 
-#: builtin/update-index.c:1229
+#: builtin/update-index.c:1231
 msgid "fsmonitor disabled"
 msgstr ""
 
@@ -22963,8 +23898,7 @@
 
 #: builtin/update-ref.c:502
 msgid "update <refname> not the one it points to"
-msgstr ""
-"atualizar a referência <nome-da-referência>, não a referência que esta aponta"
+msgstr "atualizar <nome-ref>, não à qual esta aponta"
 
 #: builtin/update-ref.c:503
 msgid "stdin has NUL-terminated arguments"
@@ -22972,7 +23906,7 @@
 
 #: builtin/update-ref.c:504
 msgid "read updates from stdin"
-msgstr "ler atualizações da entrada padrão"
+msgstr "ler atualizações de entrada padrão"
 
 #: builtin/update-server-info.c:7
 msgid "git update-server-info [--force]"
@@ -22996,7 +23930,7 @@
 
 #: builtin/upload-pack.c:27
 msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "não tentar <diretório>/.git/ se o <diretório> não for um diretório Git"
+msgstr "tentar <pasta>/.git/ apenas se <pasta> for pasta Git"
 
 #: builtin/upload-pack.c:29
 msgid "interrupt transfer after <n> seconds of inactivity"
@@ -23008,7 +23942,7 @@
 
 #: builtin/verify-commit.c:68
 msgid "print commit contents"
-msgstr "imprimir conteúdo do commit"
+msgstr "imprimir conteúdo do memória"
 
 #: builtin/verify-commit.c:69 builtin/verify-tag.c:37
 msgid "print raw gpg status output"
@@ -23034,292 +23968,284 @@
 msgid "print tag contents"
 msgstr "imprimir conteúdo da tag"
 
-#: builtin/worktree.c:17
+#: builtin/worktree.c:18
 #, fuzzy
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
-msgstr "git worktree add [<opções>] <caminho> [<ramo>]"
+msgstr "git worktree add [<opções>] <caminho> [<mnemónica>]"
 
-#: builtin/worktree.c:18
+#: builtin/worktree.c:19
 msgid "git worktree list [<options>]"
 msgstr "git worktree list [<opções>]"
 
-#: builtin/worktree.c:19
+#: builtin/worktree.c:20
 msgid "git worktree lock [<options>] <path>"
 msgstr "git worktree lock [<opções>] <caminho>"
 
-#: builtin/worktree.c:20
+#: builtin/worktree.c:21
 #, fuzzy
 msgid "git worktree move <worktree> <new-path>"
-msgstr "git worktree lock [<opções>] <caminho>"
+msgstr "git worktree move <árvore-de-trabalho> <novo-caminho>"
 
-#: builtin/worktree.c:21
+#: builtin/worktree.c:22
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<opções>]"
 
-#: builtin/worktree.c:22
+#: builtin/worktree.c:23
 #, fuzzy
 msgid "git worktree remove [<options>] <worktree>"
-msgstr "git worktree lock [<opções>] <caminho>"
+msgstr "git worktree remove [<opções>] <árvore-de-trabalho>"
 
-#: builtin/worktree.c:23
+#: builtin/worktree.c:24
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <caminho>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:973
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, fuzzy, c-format
 msgid "failed to delete '%s'"
-msgstr "falha ao executar '%s'"
+msgstr "falhou apagar '%s'"
 
-#: builtin/worktree.c:85
-#, fuzzy
-msgid "not a valid directory"
-msgstr "nome de objeto inválido: %s"
-
-#: builtin/worktree.c:91
-#, fuzzy
-msgid "gitdir file does not exist"
-msgstr "A remover worktrees/%s: o ficheiro gitdir não existe"
-
-#: builtin/worktree.c:96 builtin/worktree.c:105
-#, fuzzy, c-format
-msgid "unable to read gitdir file (%s)"
-msgstr "não foi possível ler a árvore (%s)"
-
-#: builtin/worktree.c:115
-#, c-format
-msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr ""
-
-#: builtin/worktree.c:123
-#, fuzzy
-msgid "invalid gitdir file"
-msgstr "linha de Data inválida"
-
-#: builtin/worktree.c:131
-#, fuzzy
-msgid "gitdir file points to non-existent location"
-msgstr ""
-"A remover worktrees/%s: o ficheiro gitdir aponta para uma localização "
-"inexistente"
-
-#: builtin/worktree.c:146
+#: builtin/worktree.c:74
 #, fuzzy, c-format
 msgid "Removing %s/%s: %s"
 msgstr "A remover %s"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "reportar árvores de trabalho podadas"
 
-#: builtin/worktree.c:223
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "expirar árvores de trabalho mais antigos que <tempo>"
 
-#: builtin/worktree.c:293
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' já existe"
 
-#: builtin/worktree.c:302
+#: builtin/worktree.c:228
 #, fuzzy, c-format
 msgid "unusable worktree destination '%s'"
-msgstr "não é possível ler o ficheiro de assinatura '%s'"
+msgstr "destino '%s' de worktree inutilizável"
 
-#: builtin/worktree.c:307
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
 "use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:309
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
 "use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:360
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
-msgstr "não foi possível criar o diretório de '%s'"
+msgstr "incapaz criar diretório de '%s'"
 
-#: builtin/worktree.c:494 builtin/worktree.c:500
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "iniciando"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, fuzzy, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Erro a eliminar ramo '%s'"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:505
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:511
+#: builtin/worktree.c:437
 #, fuzzy, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "A preparar %s (identificador %s)"
 
-#: builtin/worktree.c:552
+#: builtin/worktree.c:482
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 "extrair o <ramo> mesmo se já tenha sido extraído noutra árvore de trabalho"
 
-#: builtin/worktree.c:555
+#: builtin/worktree.c:485
 msgid "create a new branch"
 msgstr "criar um novo ramo"
 
-#: builtin/worktree.c:557
+#: builtin/worktree.c:487
 msgid "create or reset a branch"
 msgstr "criar ou repor um ramo"
 
-#: builtin/worktree.c:559
+#: builtin/worktree.c:489
 msgid "populate the new working tree"
 msgstr "povoar a nova árvore de trabalho"
 
-#: builtin/worktree.c:560
+#: builtin/worktree.c:490
 #, fuzzy
 msgid "keep the new working tree locked"
 msgstr "povoar a nova árvore de trabalho"
 
-#: builtin/worktree.c:563
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "razão para trancar"
+
+#: builtin/worktree.c:495
 #, fuzzy
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "configurar modo de seguimento (consulte git-pull(1))"
 
-#: builtin/worktree.c:566
+#: builtin/worktree.c:498
 #, fuzzy
 msgid "try to match the new branch name with a remote-tracking branch"
+msgstr "tenta corresponder nome de novo ramo com ramo de monitorização remoto"
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
 msgstr ""
-"o ramo a montante '%s' não está guardado como um ramo de monitorização remoto"
+
+#: builtin/worktree.c:508
+#, fuzzy
+msgid "--reason requires --lock"
+msgstr "--reason requer --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "adicionado com --lock"
 
 #: builtin/worktree.c:574
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr "-b, -B e --detach são mutuamente exclusivos"
-
-#: builtin/worktree.c:635
-#, fuzzy
 msgid "--[no-]track can only be used if a new branch is created"
-msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo."
+msgstr ""
 
-#: builtin/worktree.c:758
-msgid "reason for locking"
-msgstr "razão de trancar"
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr ""
 
-#: builtin/worktree.c:770 builtin/worktree.c:803 builtin/worktree.c:877
-#: builtin/worktree.c:1001
+#: builtin/worktree.c:693
+#, fuzzy
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "expirar árvores de trabalho mais antigos que <tempo>"
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr ""
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
-msgstr "'%s' não é uma árvore de trabalho"
+msgstr "'%s' é working tree nenhuma"
 
-#: builtin/worktree.c:772 builtin/worktree.c:805
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
-msgstr "A árvore de trabalho principal não pode ser trancada nem destrancada"
+msgstr "Working tree principal incapaz de ser trancada ou destrancada"
 
-#: builtin/worktree.c:777
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' já está trancada, razão: %s"
 
-#: builtin/worktree.c:779
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' já está trancada"
 
-#: builtin/worktree.c:807
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
-msgstr "'%s' não está trancada"
+msgstr "'%s' está destrancada"
 
-#: builtin/worktree.c:848
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:856
+#: builtin/worktree.c:827
 #, fuzzy
 msgid "force move even if worktree is dirty or locked"
 msgstr "forçar mover/mudar o nome mesmo que o destino exista"
 
-#: builtin/worktree.c:879 builtin/worktree.c:1003
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, fuzzy, c-format
 msgid "'%s' is a main working tree"
-msgstr "'%s' não é uma árvore de trabalho"
+msgstr "'%s' é uma working tree principal"
 
-#: builtin/worktree.c:884
+#: builtin/worktree.c:855
 #, fuzzy, c-format
 msgid "could not figure out destination name from '%s'"
-msgstr "não foi possível migrar o diretório git de '%s' para '%s'"
+msgstr "incapaz descobrir nome de destino a partir de '%s'"
 
-#: builtin/worktree.c:897
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:899
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:902
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:907
-#, fuzzy, c-format
+#: builtin/worktree.c:878
+#, c-format
 msgid "failed to move '%s' to '%s'"
-msgstr "falha ao abrir '%s': %s"
+msgstr ""
 
-#: builtin/worktree.c:953
+#: builtin/worktree.c:924
 #, fuzzy, c-format
 msgid "failed to run 'git status' on '%s'"
-msgstr "falha ao escrever para '%s'"
+msgstr "falhou executar 'git status' em '%s'"
 
-#: builtin/worktree.c:957
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:962
+#: builtin/worktree.c:933
 #, fuzzy, c-format
 msgid "failed to run 'git status' on '%s', code %d"
-msgstr "não foi possível executar 'git status' no submódulo '%s'"
+msgstr "falhou executar 'git status' em '%s', código %d"
 
-#: builtin/worktree.c:985
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:1008
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1010
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:1013
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:1037
+#: builtin/worktree.c:1008
 #, fuzzy, c-format
 msgid "repair: %s: %s"
 msgstr "%s: %s"
 
-#: builtin/worktree.c:1040
+#: builtin/worktree.c:1011
 #, fuzzy, c-format
 msgid "error: %s: %s"
 msgstr "%s: %s"
@@ -23340,16 +24266,153 @@
 msgid "only useful for debugging"
 msgstr "apenas útil para depuração"
 
-#: http-fetch.c:114
+#: git.c:28
+msgid ""
+"git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
+"           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
+"           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
+"           [--super-prefix=<path>] [--config-env=<name>=<envvar>]\n"
+"           <command> [<args>]"
+msgstr ""
+
+#: git.c:36
+#, fuzzy
+msgid ""
+"'git help -a' and 'git help -g' list available subcommands and some\n"
+"concept guides. See 'git help <command>' or 'git help <concept>'\n"
+"to read about a specific subcommand or concept.\n"
+"See 'git help git' for an overview of the system."
+msgstr ""
+"'git help -a' e 'git help -g' listam subcomandos disponíveis e alguns\n"
+"guias de conceitos. Consulta 'git help <comando>' ou 'git help <conceito>'\n"
+"para ler sobre um subcomando específico ou conceito específico.\n"
+"Vê 'git help git' para visão geral do sistema."
+
+#: git.c:188
+#, c-format
+msgid "no directory given for --git-dir\n"
+msgstr ""
+
+#: git.c:202
+#, c-format
+msgid "no namespace given for --namespace\n"
+msgstr ""
+
+#: git.c:216
+#, c-format
+msgid "no directory given for --work-tree\n"
+msgstr ""
+
+#: git.c:230
+#, fuzzy, c-format
+msgid "no prefix given for --super-prefix\n"
+msgstr "--super-prefix recebeu prefixo nenhum\n"
+
+#: git.c:252
+#, c-format
+msgid "-c expects a configuration string\n"
+msgstr ""
+
+#: git.c:260
+#, c-format
+msgid "no config key given for --config-env\n"
+msgstr ""
+
+#: git.c:300
+#, c-format
+msgid "no directory given for -C\n"
+msgstr ""
+
+#: git.c:326
+#, fuzzy, c-format
+msgid "unknown option: %s\n"
+msgstr "desconheço opção: %s\n"
+
+#: git.c:375
+#, c-format
+msgid "while expanding alias '%s': '%s'"
+msgstr ""
+
+#: git.c:384
+#, c-format
+msgid ""
+"alias '%s' changes environment variables.\n"
+"You can use '!git' in the alias to do this"
+msgstr ""
+
+#: git.c:391
+#, c-format
+msgid "empty alias for %s"
+msgstr ""
+
+#: git.c:394
+#, c-format
+msgid "recursive alias: %s"
+msgstr ""
+
+#: git.c:476
+msgid "write failure on standard output"
+msgstr ""
+
+#: git.c:478
+msgid "unknown write failure on standard output"
+msgstr ""
+
+#: git.c:480
+#, fuzzy
+msgid "close failed on standard output"
+msgstr "enviar resultados para a saída padrão"
+
+#: git.c:833
+#, c-format
+msgid "alias loop detected: expansion of '%s' does not terminate:%s"
+msgstr ""
+
+#: git.c:883
+#, fuzzy, c-format
+msgid "cannot handle %s as a builtin"
+msgstr "incapaz lidar %s como um builtin"
+
+#: git.c:896
+#, fuzzy, c-format
+msgid ""
+"usage: %s\n"
+"\n"
+msgstr ""
+"utilização: %s\n"
+"\n"
+
+#: git.c:916
+#, c-format
+msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
+msgstr ""
+
+#: git.c:928
+#, fuzzy, c-format
+msgid "failed to run command '%s': %s\n"
+msgstr "incapaz de executar comando '%s': %s\n"
+
+#: http-fetch.c:118
 #, c-format
 msgid "argument to --packfile must be a valid hash (got '%s')"
 msgstr ""
 
-#: http-fetch.c:122
+#: http-fetch.c:128
 #, fuzzy
 msgid "not a git repository"
 msgstr "é repositório git nenhum"
 
+#: http-fetch.c:134
+msgid "--packfile requires --index-pack-args"
+msgstr ""
+
+#: http-fetch.c:143
+#, fuzzy
+msgid "--index-pack-args can only be used with --packfile"
+msgstr "-N só pode ser usado com --mixed"
+
 #: t/helper/test-fast-rebase.c:141
 #, fuzzy
 msgid "unhandled options"
@@ -23358,12 +24421,12 @@
 #: t/helper/test-fast-rebase.c:146
 #, fuzzy
 msgid "error preparing revisions"
-msgstr "Erro ao rematar %s."
+msgstr "erro preparando revisões"
 
 #: t/helper/test-reach.c:154
 #, fuzzy, c-format
 msgid "commit %s is not marked reachable"
-msgstr "o commit %s não tem o pai %d"
+msgstr "commit %s está a ser tratado como inalcançável"
 
 #: t/helper/test-reach.c:164
 msgid "too many commits marked reachable"
@@ -23379,129 +24442,111 @@
 msgid "exit immediately after advertising capabilities"
 msgstr "sair imediatamente depois do anúncio inicial da referência"
 
-#: git.c:28
+#: t/helper/test-simple-ipc.c:262
+#, c-format
+msgid "socket/pipe already in use: '%s'"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:264
+#, c-format
+msgid "could not start server on: '%s'"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:295 t/helper/test-simple-ipc.c:331
+msgid "could not spawn daemon in the background"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:356
+msgid "waitpid failed"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:376
+msgid "daemon not online yet"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:406
+msgid "daemon failed to start"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:410
+msgid "waitpid is confused"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:541
+msgid "daemon has not shutdown yet"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:682
+msgid "test-helper simple-ipc is-active    [<name>] [<options>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:683
+msgid "test-helper simple-ipc run-daemon   [<name>] [<threads>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:684
+msgid "test-helper simple-ipc start-daemon [<name>] [<threads>] [<max-wait>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:685
+msgid "test-helper simple-ipc stop-daemon  [<name>] [<max-wait>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:686
+msgid "test-helper simple-ipc send         [<name>] [<token>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:687
+msgid "test-helper simple-ipc sendbytes    [<name>] [<bytecount>] [<byte>]"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:688
 msgid ""
-"git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
-"           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
-"bare]\n"
-"           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
-"           <command> [<args>]"
+"test-helper simple-ipc multiple     [<name>] [<threads>] [<bytecount>] "
+"[<batchsize>]"
 msgstr ""
 
-#: git.c:35
+#: t/helper/test-simple-ipc.c:696
+msgid "name or pathname of unix domain socket"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:698
+msgid "named-pipe name"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:700
+msgid "number of threads in server thread pool"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:701
+msgid "seconds to wait for daemon to start or stop"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:703
+msgid "number of bytes"
+msgstr ""
+
+#: t/helper/test-simple-ipc.c:704
 #, fuzzy
-msgid ""
-"'git help -a' and 'git help -g' list available subcommands and some\n"
-"concept guides. See 'git help <command>' or 'git help <concept>'\n"
-"to read about a specific subcommand or concept.\n"
-"See 'git help git' for an overview of the system."
-msgstr ""
-"'git help -a' e 'git help -g' listam subcomandos disponíveis e alguns\n"
-"guias de conceitos. Consulta 'git help <comando>' ou 'git help <conceito>'\n"
-"para ler sobre um subcomando específico ou conceito específico.\n"
-"Vê 'git help git' para visão geral do sistema."
+msgid "number of requests per thread"
+msgstr "incapaz criar thread: %s"
 
-#: git.c:187
-#, c-format
-msgid "no directory given for --git-dir\n"
-msgstr ""
-
-#: git.c:201
-#, c-format
-msgid "no namespace given for --namespace\n"
-msgstr ""
-
-#: git.c:215
-#, c-format
-msgid "no directory given for --work-tree\n"
-msgstr ""
-
-#: git.c:229
-#, fuzzy, c-format
-msgid "no prefix given for --super-prefix\n"
-msgstr "--super-prefix recebeu prefixo nenhum\n"
-
-#: git.c:251
-#, c-format
-msgid "-c expects a configuration string\n"
-msgstr ""
-
-#: git.c:289
-#, c-format
-msgid "no directory given for -C\n"
-msgstr ""
-
-#: git.c:315
-#, fuzzy, c-format
-msgid "unknown option: %s\n"
-msgstr "desconheço opção: %s\n"
-
-#: git.c:364
-#, c-format
-msgid "while expanding alias '%s': '%s'"
-msgstr ""
-
-#: git.c:373
-#, c-format
-msgid ""
-"alias '%s' changes environment variables.\n"
-"You can use '!git' in the alias to do this"
-msgstr ""
-
-#: git.c:380
-#, c-format
-msgid "empty alias for %s"
-msgstr ""
-
-#: git.c:383
-#, c-format
-msgid "recursive alias: %s"
-msgstr ""
-
-#: git.c:465
+#: t/helper/test-simple-ipc.c:706
 #, fuzzy
-msgid "write failure on standard output"
-msgstr "mostrar ações na saída padrão"
+msgid "byte"
+msgstr "bytes"
 
-#: git.c:467
-#, fuzzy
-msgid "unknown write failure on standard output"
-msgstr "mostrar ações na saída padrão"
-
-#: git.c:469
-#, fuzzy
-msgid "close failed on standard output"
-msgstr "enviar resultados para a saída padrão"
-
-#: git.c:820
-#, c-format
-msgid "alias loop detected: expansion of '%s' does not terminate:%s"
+#: t/helper/test-simple-ipc.c:706
+msgid "ballast character"
 msgstr ""
 
-#: git.c:870
-#, fuzzy, c-format
-msgid "cannot handle %s as a builtin"
-msgstr "não é possível enviar mensagem como 7bit"
-
-#: git.c:883
-#, fuzzy, c-format
-msgid ""
-"usage: %s\n"
-"\n"
-msgstr ""
-"utilização: %s\n"
-"\n"
-
-#: git.c:903
-#, c-format
-msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
+#: t/helper/test-simple-ipc.c:707
+msgid "token"
 msgstr ""
 
-#: git.c:915
-#, fuzzy, c-format
-msgid "failed to run command '%s': %s\n"
-msgstr "incapaz de executar comando '%s': %s\n"
+#: t/helper/test-simple-ipc.c:707
+msgid "command token to send to the server"
+msgstr ""
 
 #: http.c:399
 #, c-format
@@ -23541,7 +24586,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Incapaz de definir backend SSL para '%s': já definido"
 
-#: http.c:2025
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23553,28 +24598,28 @@
 "   redireção: %s"
 
 #: remote-curl.c:183
-#, fuzzy, c-format
+#, c-format
 msgid "invalid quoting in push-option value: '%s'"
-msgstr "opção inválida: %s"
+msgstr ""
 
 #: remote-curl.c:307
 #, fuzzy, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
-msgstr "'%s' não é reconhecido como um repositório git"
+msgstr "%sinfo/refs é inválido; isto é um repositório git?"
 
 #: remote-curl.c:408
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 
 #: remote-curl.c:439
-#, fuzzy, c-format
+#, c-format
 msgid "invalid server response; got '%s'"
-msgstr "referência inválida: %s"
+msgstr ""
 
 #: remote-curl.c:499
 #, fuzzy, c-format
 msgid "repository '%s' not found"
-msgstr "o repositório '%s' não existe"
+msgstr "repositório '%s' inexistente"
 
 #: remote-curl.c:503
 #, fuzzy, c-format
@@ -23584,106 +24629,105 @@
 #: remote-curl.c:507
 #, c-format
 msgid "unable to access '%s': %s"
-msgstr "não é possível aceder a '%s': %s"
+msgstr "incapaz aceder '%s': %s"
 
 #: remote-curl.c:513
 #, c-format
 msgid "redirecting to %s"
 msgstr "a redirecionar para %s "
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr ""
+#: remote-curl.c:656
+#, fuzzy
+msgid "remote server sent unexpected response end packet"
+msgstr "servidor remoto enviou pacote fim de resposta inesperado"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr ""
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr ""
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, fuzzy, c-format
 msgid "RPC failed; %s"
 msgstr "falha: %d"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 #, fuzzy
 msgid "cannot handle pushes this big"
-msgstr "não é possível processar mais do que %d revisão."
+msgstr "incapaz atirar algo tão grande"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr ""
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr ""
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 #, fuzzy
 msgid "dumb http transport does not support shallow capabilities"
-msgstr "O servidor não suporta clientes rasos"
+msgstr "transporte http estúpido insustenta capacidades shallow"
 
-#: remote-curl.c:1147
-#, fuzzy
+#: remote-curl.c:1149
 msgid "fetch failed."
-msgstr "falha ao executar o comando stash"
+msgstr ""
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1237 remote-curl.c:1243
-#, fuzzy, c-format
+#: remote-curl.c:1239 remote-curl.c:1245
+#, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
-msgstr "erro de protocolo: cabeçalho de pacote incorreto"
+msgstr ""
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, fuzzy, c-format
 msgid "http transport does not support %s"
-msgstr "O servidor não suporta STARTTLS! %s"
+msgstr "transporte http insustenta %s"
 
-#: remote-curl.c:1291
-#, fuzzy
+#: remote-curl.c:1293
 msgid "git-http-push failed"
-msgstr "falha ao executar o comando stash"
+msgstr ""
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
@@ -23697,56 +24741,56 @@
 msgid "no libc information available\n"
 msgstr "informação libc indisponível\n"
 
-#: list-objects-filter-options.h:91
+#: list-objects-filter-options.h:94
 msgid "args"
 msgstr ""
 
-#: list-objects-filter-options.h:92
+#: list-objects-filter-options.h:95
 #, fuzzy
 msgid "object filtering"
 msgstr "tipo do objeto"
 
-#: parse-options.h:183
+#: parse-options.h:184
 msgid "expiry-date"
 msgstr "data-de-validade"
 
-#: parse-options.h:197
+#: parse-options.h:198
 msgid "no-op (backward compatibility)"
 msgstr "sem-ação (retrocompatibilidade)"
 
-#: parse-options.h:309
+#: parse-options.h:310
 msgid "be more verbose"
 msgstr "ser mais verboso"
 
-#: parse-options.h:311
+#: parse-options.h:312
 msgid "be more quiet"
 msgstr "ser mais silencioso"
 
-#: parse-options.h:317
+#: parse-options.h:318
 #, fuzzy
 msgid "use <n> digits to display object names"
 msgstr "usar <n> dígitos para mostrar SHA-1s"
 
-#: parse-options.h:336
+#: parse-options.h:337
 msgid "how to strip spaces and #comments from message"
 msgstr "como retirar espaços e #comentários da mensagem"
 
-#: parse-options.h:337
+#: parse-options.h:338
 #, fuzzy
 msgid "read pathspec from file"
 msgstr "ler padrões do ficheiro"
 
-#: parse-options.h:338
+#: parse-options.h:339
 #, fuzzy
 msgid ""
 "with --pathspec-from-file, pathspec elements are separated with NUL character"
 msgstr "os caminhos estão separados por caracteres NUL"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "key"
 msgstr "chave"
 
-#: ref-filter.h:96
+#: ref-filter.h:99
 msgid "field name to sort on"
 msgstr "nome do campo pelo qual ordernar"
 
@@ -23755,14 +24799,6 @@
 msgstr ""
 "atualizar o índice com resoluções de conflitos reutilizadas se possível"
 
-#: wt-status.h:80
-msgid "HEAD detached at "
-msgstr "HEAD destacada em "
-
-#: wt-status.h:81
-msgid "HEAD detached from "
-msgstr "HEAD destacada de "
-
 #: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Adicionar conteúdos de ficheiros ao índice"
@@ -23815,9 +24851,8 @@
 msgstr ""
 
 #: command-list.h:62
-#, fuzzy
 msgid "Display gitattributes information"
-msgstr "usar .gitattributes apenas a partir do índice"
+msgstr ""
 
 #: command-list.h:63
 msgid "Debug gitignore / exclude files"
@@ -23833,9 +24868,8 @@
 msgstr "Mudar de ramos ou restaurar os ficheiros da árvore de trabalho"
 
 #: command-list.h:66
-#, fuzzy
 msgid "Copy files from the index to the working tree"
-msgstr "caminho para a árvore de trabalho"
+msgstr ""
 
 #: command-list.h:67
 msgid "Ensures that a reference name is well formed"
@@ -23854,9 +24888,8 @@
 msgstr ""
 
 #: command-list.h:71
-#, fuzzy
 msgid "Remove untracked files from the working tree"
-msgstr "Remover ficheiros da árvore de trabalho e do índice"
+msgstr ""
 
 #: command-list.h:72
 msgid "Clone a repository into a new directory"
@@ -23869,16 +24902,15 @@
 
 #: command-list.h:74
 msgid "Record changes to the repository"
-msgstr "Gravar alterações no repositório"
+msgstr "Gravar alterações para o repositório"
 
 #: command-list.h:75
 msgid "Write and verify Git commit-graph files"
 msgstr ""
 
 #: command-list.h:76
-#, fuzzy
 msgid "Create a new commit object"
-msgstr "falha ao escrever objeto de commit"
+msgstr ""
 
 #: command-list.h:77
 msgid "Get and set repository or global options"
@@ -23926,14 +24958,12 @@
 "Mostrar alterações entre commits, entre commit e árvore de trabalho, etc"
 
 #: command-list.h:88
-#, fuzzy
 msgid "Compares files in the working tree and the index"
-msgstr "Remover ficheiros da árvore de trabalho e do índice"
+msgstr ""
 
 #: command-list.h:89
-#, fuzzy
 msgid "Compare a tree to the working tree or index"
-msgstr "caminho para a árvore de trabalho"
+msgstr ""
 
 #: command-list.h:90
 msgid "Compares the content and mode of blobs found via two tree objects"
@@ -23953,12 +24983,11 @@
 
 #: command-list.h:94
 msgid "Download objects and refs from another repository"
-msgstr "Transferir objetos e referências doutro repositório"
+msgstr "Download objectos e refs de outro repositório"
 
 #: command-list.h:95
-#, fuzzy
 msgid "Receive missing objects from another repository"
-msgstr "Transferir objetos e referências doutro repositório"
+msgstr ""
 
 #: command-list.h:96
 #, fuzzy
@@ -23966,14 +24995,12 @@
 msgstr "  Ramo remoto:%s"
 
 #: command-list.h:97
-#, fuzzy
 msgid "Produce a merge commit message"
-msgstr "editar a mensagem de commit"
+msgstr ""
 
 #: command-list.h:98
-#, fuzzy
 msgid "Output information on each ref"
-msgstr "atualizar informação de stat no ficheiro de índice"
+msgstr ""
 
 #: command-list.h:99
 msgid "Run a Git command on a list of repositories"
@@ -23984,9 +25011,8 @@
 msgstr ""
 
 #: command-list.h:101
-#, fuzzy
 msgid "Verifies the connectivity and validity of the objects in the database"
-msgstr "escrever o objeto na base de dados de objetos"
+msgstr ""
 
 #: command-list.h:102
 msgid "Cleanup unnecessary files and optimize the local repository"
@@ -24017,14 +25043,12 @@
 msgstr ""
 
 #: command-list.h:109
-#, fuzzy
 msgid "Download from a remote Git repository via HTTP"
-msgstr "Transferir objetos e referências doutro repositório"
+msgstr ""
 
 #: command-list.h:110
-#, fuzzy
 msgid "Push objects over HTTP/DAV to another repository"
-msgstr "Transferir objetos e referências doutro repositório"
+msgstr ""
 
 #: command-list.h:111
 msgid "Send a collection of patches from stdin to an IMAP folder"
@@ -24066,9 +25090,8 @@
 msgstr "repositório de referência"
 
 #: command-list.h:120
-#, fuzzy
 msgid "List the contents of a tree object"
-msgstr "imprimir apenas as tags do objeto"
+msgstr ""
 
 #: command-list.h:121
 msgid "Extracts patch and authorship from a single e-mail message"
@@ -24119,7 +25142,7 @@
 
 #: command-list.h:132
 #, fuzzy
-msgid "Creates a tag object"
+msgid "Creates a tag object with extra validation"
 msgstr "outro objeto tag"
 
 #: command-list.h:133
@@ -24137,21 +25160,20 @@
 #: command-list.h:136
 #, fuzzy
 msgid "Add or inspect object notes"
-msgstr "o objeto esperado %s não foi recebido"
+msgstr "Adicionar ou inspecionar notas de objeto"
 
 #: command-list.h:137
 msgid "Import from and submit to Perforce repositories"
 msgstr ""
 
 #: command-list.h:138
-#, fuzzy
 msgid "Create a packed archive of objects"
-msgstr "ignorar objetos compactados"
+msgstr ""
 
 #: command-list.h:139
 #, fuzzy
 msgid "Find redundant pack files"
-msgstr "não é possível invocar pread sobre o ficheiro de pacote"
+msgstr "Encontrar ficheiros de pacote redundantes"
 
 #: command-list.h:140
 msgid "Pack heads and tags for efficient repository access"
@@ -24162,9 +25184,8 @@
 msgstr ""
 
 #: command-list.h:142
-#, fuzzy
 msgid "Prune all unreachable objects from the object database"
-msgstr "escrever o objeto na base de dados de objetos"
+msgstr ""
 
 #: command-list.h:143
 msgid "Remove extra objects that are already in pack files"
@@ -24188,9 +25209,8 @@
 msgstr ""
 
 #: command-list.h:148
-#, fuzzy
 msgid "Reads tree information into the index"
-msgstr "atualizar informação de stat no ficheiro de índice"
+msgstr ""
 
 #: command-list.h:149
 msgid "Reapply commits on top of another base tip"
@@ -24199,7 +25219,7 @@
 #: command-list.h:150
 #, fuzzy
 msgid "Receive what is pushed into the repository"
-msgstr "Gravar alterações no repositório"
+msgstr "Receber para o repositório, o que foi atirado"
 
 #: command-list.h:151
 #, fuzzy
@@ -24207,14 +25227,12 @@
 msgstr "mostrar informação de resolver-desfazer"
 
 #: command-list.h:152
-#, fuzzy
 msgid "Manage set of tracked repositories"
-msgstr "Gravar alterações no repositório"
+msgstr ""
 
 #: command-list.h:153
-#, fuzzy
 msgid "Pack unpacked objects in a repository"
-msgstr "--cached fora de um repositório"
+msgstr ""
 
 #: command-list.h:154
 #, fuzzy
@@ -24241,12 +25259,11 @@
 #: command-list.h:159
 #, fuzzy
 msgid "Revert some existing commits"
-msgstr "não é possível emendar commit não-existente"
+msgstr "Reverter algumas memórias existentes"
 
 #: command-list.h:160
-#, fuzzy
 msgid "Lists commit objects in reverse chronological order"
-msgstr "mostrar commits em ordem topológica"
+msgstr ""
 
 #: command-list.h:161
 #, fuzzy
@@ -24255,16 +25272,15 @@
 
 #: command-list.h:162
 msgid "Remove files from the working tree and from the index"
-msgstr "Remover ficheiros da árvore de trabalho e do índice"
+msgstr ""
 
 #: command-list.h:163
 msgid "Send a collection of patches as emails"
 msgstr ""
 
 #: command-list.h:164
-#, fuzzy
 msgid "Push objects over Git protocol to another repository"
-msgstr "Transferir objetos e referências doutro repositório"
+msgstr ""
 
 #: command-list.h:165
 msgid "Restricted login shell for Git-only SSH access"
@@ -24290,7 +25306,7 @@
 #: command-list.h:170
 #, fuzzy
 msgid "List references in a local repository"
-msgstr "o repositório de referência '%s' não é um repositório local."
+msgstr "Lista referências num repositório local"
 
 #: command-list.h:171
 msgid "Git's i18n setup code for shell scripts"
@@ -24353,9 +25369,8 @@
 msgstr ""
 
 #: command-list.h:185
-#, fuzzy
 msgid "Register file contents in the working tree to the index"
-msgstr "Remover ficheiros da árvore de trabalho e do índice"
+msgstr ""
 
 #: command-list.h:186
 msgid "Update the object name stored in a ref safely"
@@ -24380,38 +25395,38 @@
 #: command-list.h:191
 #, fuzzy
 msgid "Check the GPG signature of commits"
-msgstr "assinar o commit com GPG"
+msgstr "Verifica assinatura GPG de memórias"
 
 #: command-list.h:192
 #, fuzzy
 msgid "Validate packed Git archive files"
-msgstr "não foi possível criar o ficheiro de arquivo '%s'"
+msgstr "Validar ficheiros pacote de arquivo Git"
 
 #: command-list.h:193
 msgid "Check the GPG signature of tags"
-msgstr ""
+msgstr "Verifica assinatura GPG de tags"
 
 #: command-list.h:194
 msgid "Git web interface (web frontend to Git repositories)"
-msgstr ""
+msgstr "Interface web de Git (frontend web para repositórios Git)"
 
 #: command-list.h:195
 msgid "Show logs with difference each commit introduces"
-msgstr ""
+msgstr "Mostrar logs com diferenças que cada memória introduz"
 
 #: command-list.h:196
 #, fuzzy
 msgid "Manage multiple working trees"
-msgstr "caminho para a árvore de trabalho"
+msgstr "Gerir múltiplas working trees"
 
 #: command-list.h:197
 #, fuzzy
 msgid "Create a tree object from the current index"
-msgstr "ler o objeto da entrada padrão"
+msgstr "Criar um objeto tree a partir de index atual"
 
 #: command-list.h:198
 msgid "Defining attributes per path"
-msgstr "Definir atributos por caminho"
+msgstr "Definir atributos por path"
 
 #: command-list.h:199
 msgid "Git command-line interface and conventions"
@@ -24445,7 +25460,7 @@
 #: command-list.h:206
 #, fuzzy
 msgid "A Git Glossary"
-msgstr "Um Glossário do Git"
+msgstr "Um Glossário de Git"
 
 #: command-list.h:207
 msgid "Hooks used by Git"
@@ -24454,74 +25469,60 @@
 #: command-list.h:208
 msgid "Specifies intentionally untracked files to ignore"
 msgstr ""
-"Especificar ficheiros não controlados para serem intencionalmente ignorados"
+"Especificar ficheiros por monitorizar intencionalmente, para serem ignorados"
 
 #: command-list.h:209
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr ""
+
+#: command-list.h:210
 msgid "Defining submodule properties"
 msgstr "Definir propriedades de submódulos"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Git namespaces"
 msgstr ""
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "Helper programs to interact with remote repositories"
 msgstr ""
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "Git Repository Layout"
 msgstr ""
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "Specifying revisions and ranges for Git"
 msgstr "Especificar revisões e intervalos do Git"
 
-#: command-list.h:214
+#: command-list.h:215
 msgid "Mounting one repository inside another"
 msgstr ""
 
-#: command-list.h:215
+#: command-list.h:216
 #, fuzzy
 msgid "A tutorial introduction to Git: part two"
 msgstr "Uma introdução ao Git (versão 1.5.1 ou mais recente)"
 
-#: command-list.h:216
+#: command-list.h:217
 #, fuzzy
 msgid "A tutorial introduction to Git"
 msgstr "Uma introdução ao Git (versão 1.5.1 ou mais recente)"
 
-#: command-list.h:217
+#: command-list.h:218
 msgid "An overview of recommended workflows with Git"
 msgstr "Uma descrição geral dos fluxos de trabalho recomendados para o Git"
 
-#: git-bisect.sh:48
-#, sh-format
-msgid "Bad rev input: $arg"
-msgstr "Revisão incorreta na entrada: $arg"
-
-#: git-bisect.sh:82
-msgid "No logfile given"
-msgstr "Nenhum ficheiro de log fornecido"
-
-#: git-bisect.sh:83
-#, sh-format
-msgid "cannot read $file for replaying"
-msgstr "não é possível ler $file para reproduzir"
-
-#: git-bisect.sh:105
-msgid "?? what are you talking about?"
-msgstr "?? do que é que está a falar?"
-
-#: git-bisect.sh:115
+#: git-bisect.sh:68
 msgid "bisect run failed: no command provided."
 msgstr ""
 
-#: git-bisect.sh:120
+#: git-bisect.sh:73
 #, sh-format
 msgid "running $command"
-msgstr "a executar $command"
+msgstr "executando $command"
 
-#: git-bisect.sh:127
+#: git-bisect.sh:80
 #, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24530,11 +25531,11 @@
 "bissetar impossível:\n"
 "exit code $res de '$command' é < 0 ou >= 128"
 
-#: git-bisect.sh:152
+#: git-bisect.sh:105
 msgid "bisect run cannot continue any more"
-msgstr "não é possível continuar a bissetar"
+msgstr "bisseção incapaz de continuar"
 
-#: git-bisect.sh:158
+#: git-bisect.sh:111
 #, fuzzy, sh-format
 msgid ""
 "bisect run failed:\n"
@@ -24543,14 +25544,10 @@
 "bisseção impossível:\n"
 "'bisect_state $state' retornou código $res de erro"
 
-#: git-bisect.sh:165
+#: git-bisect.sh:118
 msgid "bisect run success"
 msgstr "bissecção concluída com sucesso"
 
-#: git-bisect.sh:173
-msgid "We are not bisecting."
-msgstr "Estamos bissetando nada."
-
 #: git-merge-octopus.sh:46
 msgid ""
 "Error: Your local changes to the following files would be overwritten by "
@@ -24561,7 +25558,7 @@
 
 #: git-merge-octopus.sh:61
 msgid "Automated merge did not work."
-msgstr "A integração automática não funcionou."
+msgstr "Junção automática falhou."
 
 #: git-merge-octopus.sh:62
 msgid "Should not be doing an octopus."
@@ -24589,7 +25586,7 @@
 
 #: git-merge-octopus.sh:102
 msgid "Simple merge did not work, trying automatic merge."
-msgstr "A integração simples não funcionou, a tentar integração automática."
+msgstr "Junção simples falhou, tentando junção automática."
 
 #: git-submodule.sh:179
 msgid "Relative path can only be used from the toplevel of the working tree"
@@ -24610,142 +25607,102 @@
 #: git-submodule.sh:211
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
-msgstr "'$sm_path' já existe no índicee não é um submódulo"
+msgstr "'$sm_path' já existe no index e é submódulo nenhum"
 
 #: git-submodule.sh:218
 #, fuzzy, sh-format
 msgid "'$sm_path' does not have a commit checked out"
-msgstr "o caminho '%s' não tem a versão deles"
+msgstr "'$sm_path' tem memória nenhuma checked out"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "A adicionar repositório existente em '$sm_path' ao índice"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' já existe e não é uma repositório git válido"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-"Um diretório git de '$sm_name' foi encontrado localmente com os remotos:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Se queres reutilizar esta past git local, em vez de voltares a clonar\n"
-"  $realrepo\n"
-"usa a opção --force. Se a pasta git local é o repo incorreto ou\n"
-"se tens pouca certeza sobre o que isto significa, podes mudar o nome com a "
-"opção '--name'."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "A reativar o diretório git local do submódulo '$sm_name'."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Incapaz de checkout submódulo '$sm_path'"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Falha ao adicionar o submódulo '$sm_path'"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
-msgstr "Falha ao registar o submódulo '$sm_path'"
+msgstr "Falha ao registar submódulo '$sm_path'"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Incapaz encontrar revisão atual em path de submódulo '$displaypath'"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Incapaz de buscar em path de submódulo '$sm_path'"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
-msgstr "Incapaz de encontrar revisão atual ${remote_name}/${branch} em path de "
+msgstr ""
+"Incapaz de encontrar revisão atual ${remote_name}/${branch} em path de "
 "submódulo '$sm_path'"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, fuzzy, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
-msgstr "Incapaz de buscar em path de submódulo '$displaypath'; tentando "
-"buscar $sha1 directamente:"
+msgstr ""
+"Incapaz de buscar em path de submódulo '$displaypath'; tentando buscar $sha1 "
+"directamente:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr ""
-"Obteve-se no caminho de submódulo '$displaypath', mas não continha $sha1. "
-"Falha ao obter aquele commit diretamente."
+"Buscado na path de submódulo '$displaypath', mas continha nenhum $sha1. "
+"Falha ao buscar aquela memória diretamente."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Incapaz de checkout '$sha1' no path de submódulo '$displaypath'"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
-msgstr "Caminho de submódulo '$displaypath': '$sha1' extraído"
+msgstr "Path de submódulo '$displaypath': '$sha1' checked out"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Incapaz de rebasear '$sha1' em path de submódulo '$displaypath'"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
-msgstr "Caminho de submódulo '$displaypath': rebase concluído em '$sha1'"
+msgstr "Path de submódulo '$displaypath': rebaseado em '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Incapaz juntar '$sha1' em path de submódulo '$displaypath'"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Caminho de submódulo '$displaypath': integrado em '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Falha ao executar '$command $sha1' no caminho de submódulo '$displaypath'"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Caminho de submódulo '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falha ao percorrer o caminho de submódulo '$displaypath'"
@@ -24835,7 +25792,7 @@
 #: git-rebase--preserve-merges.sh:285
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
-msgstr "$sha1: não é um commit que se possa apanhar"
+msgstr "$sha1: é memória nenhuma que possa ser escolhida"
 
 #: git-rebase--preserve-merges.sh:324
 #, sh-format
@@ -24844,12 +25801,12 @@
 
 #: git-rebase--preserve-merges.sh:354
 msgid "Cannot write current commit's replacement sha1"
-msgstr "Incapaz escrever sha1 substituto de commit"
+msgstr "Incapaz escrever sha1 substituto atual de commit"
 
 #: git-rebase--preserve-merges.sh:405
 #, sh-format
 msgid "Fast-forward to $sha1"
-msgstr "Avanço-rápido para $sha1"
+msgstr "Avanço para $sha1"
 
 #: git-rebase--preserve-merges.sh:407
 #, sh-format
@@ -24879,12 +25836,12 @@
 #: git-rebase--preserve-merges.sh:457
 #, sh-format
 msgid "This is the commit message #${n}:"
-msgstr "Esta é a mensagem de commit nº${n}:"
+msgstr "Esta é a mensagem de memória #${n}:"
 
 #: git-rebase--preserve-merges.sh:462
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
-msgstr "A mensagem de commit nº${n} será ignorada:"
+msgstr "Mensagem de memória #${n} será ignorada:"
 
 #: git-rebase--preserve-merges.sh:473
 #, sh-format
@@ -25068,11 +26025,11 @@
 
 #: git-rebase--preserve-merges.sh:945
 msgid "Note that empty commits are commented out"
-msgstr "Note que commits vazios são comentados"
+msgstr "Note que memórias vazias são comentadas"
 
 #: git-rebase--preserve-merges.sh:987 git-rebase--preserve-merges.sh:992
 msgid "Could not init rewritten commits"
-msgstr "Incapaz inicializar commits reescritos"
+msgstr "Incapaz inicializar memórias reescritas"
 
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
@@ -25082,12 +26039,12 @@
 #: git-sh-setup.sh:191
 #, sh-format
 msgid "Cannot chdir to $cdup, the toplevel of the working tree"
-msgstr "Incapaz chdir para $cdup, o topo da working tree"
+msgstr "Incapaz chdir para $cdup, o topo da árvore de trabalho"
 
 #: git-sh-setup.sh:200 git-sh-setup.sh:207
 #, sh-format
 msgid "fatal: $program_name cannot be used without a working tree."
-msgstr "fatal: $program_name não pode ser usado sem uma árvore de trabalho."
+msgstr "fatal: $program_name apenas pode ser usado com uma árvore de trabalho."
 
 #: git-sh-setup.sh:221
 msgid "Cannot rebase: You have unstaged changes."
@@ -25108,20 +26065,20 @@
 
 #: git-sh-setup.sh:243
 msgid "Cannot rebase: Your index contains uncommitted changes."
-msgstr "Incapaz rebasear: Teu index contém alterações por commitar."
+msgstr "Incapaz rebasear: Teu index contém alterações por memorizar."
 
 #: git-sh-setup.sh:246
 msgid "Cannot pull with rebase: Your index contains uncommitted changes."
-msgstr "Incapaz agarrar com rebase: Teu index contém alterações por commitar."
+msgstr "Incapaz agarrar com rebase: Teu index contém alterações por memorizar."
 
 #: git-sh-setup.sh:249
 #, sh-format
 msgid "Cannot $action: Your index contains uncommitted changes."
-msgstr "Incapaz $action: Teu index contém alterações por commitar."
+msgstr "Incapaz $action: Teu index contém alterações por memorizar."
 
 #: git-sh-setup.sh:253
 msgid "Additionally, your index contains uncommitted changes."
-msgstr "Além disso, o índice contém alterações não submetidas."
+msgstr "Além disso, teu index contém alterações por memorizar."
 
 #: git-sh-setup.sh:373
 msgid "You need to run this command from the toplevel of the working tree."
@@ -25184,14 +26141,13 @@
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr ""
-"Se patch aplica-se corretamente, a edição do hunk será marcada\n"
-"imediatamente como descartada."
+"Se patch aplica-se corretamente, o pedaço editado será marcado\n"
+"imediatamente como descartado."
 
 #: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
-msgstr ""
-"não foi possível abrir o ficheiro de edição do excerto para escrita: %s"
+msgstr "falha a abrir ficheiro de edição do pedaço para escrita: %s"
 
 #: git-add--interactive.perl:1121
 #, perl-format
@@ -25209,8 +26165,7 @@
 #: git-add--interactive.perl:1143
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
-msgstr ""
-"não foi possível abrir o ficheiro de edição do excerto para leitura: %s"
+msgstr "falha a abrir ficheiro de edição do pedaço para leitura: %s"
 
 #: git-add--interactive.perl:1251
 msgid ""
@@ -25220,11 +26175,11 @@
 "a - stage this hunk and all later hunks in the file\n"
 "d - do not stage this hunk or any of the later hunks in the file"
 msgstr ""
-"y - preparar este excerto\n"
-"n - não preparar este excerto\n"
-"q - sair; não preparar este excerto nem os restantes\n"
-"a - preparar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não preparar este excerto nem os excertos seguintes no ficheiro"
+"y - preparar este pedaço\n"
+"n - despreparar este pedaço\n"
+"q - sair; despreparar este pedaço e os restantes\n"
+"a - preparar este pedaço e os próximos deste ficheiro\n"
+"d - despreparar este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1257
 msgid ""
@@ -25234,11 +26189,11 @@
 "a - stash this hunk and all later hunks in the file\n"
 "d - do not stash this hunk or any of the later hunks in the file"
 msgstr ""
-"y - esconder este excerto\n"
-"n - não esconder este excerto\n"
-"q - sair; não esconder este excerto nem os restantes\n"
-"a - esconder este excerto e todos os seguintes no ficheiro\n"
-"d - não esconder este excerto nem os excertos seguintes no ficheiro"
+"y - arrumar este pedaço\n"
+"n - deixar este pedaço fora dos arrumos\n"
+"q - sair; deixar este pedaço e os restantes fora dos arrumos\n"
+"a - arrumar este pedaço e os próximos deste ficheiro\n"
+"d - deixar este pedaço e os próximos deste ficheiro fora dos arrumos"
 
 #: git-add--interactive.perl:1263
 msgid ""
@@ -25248,11 +26203,11 @@
 "a - unstage this hunk and all later hunks in the file\n"
 "d - do not unstage this hunk or any of the later hunks in the file"
 msgstr ""
-"y - despreparar este excerto\n"
-"n - não despreparar este excerto\n"
-"q - sair; não despreparar este excerto nem outros restantes\n"
-"a - despreparar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não despreparar este excerto nem os excertos seguintes no ficheiro"
+"y - despreparar este pedaço\n"
+"n - preparar este pedaço\n"
+"q - sair; preparar este pedaço e os restantes\n"
+"a - despreparar este pedaço e os próximos deste ficheiro\n"
+"d - preparar este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1269
 msgid ""
@@ -25262,11 +26217,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este excerto ao índice\n"
-"n - não aplicar este excerto ao índice\n"
-"q - sair; não aplicar este excerto nem os restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço ao index\n"
+"n - deixar este pedaço de fora do index\n"
+"q - sair; deixar de fora este pedaço e os restantes\n"
+"a - submeter este pedaço e os próximos deste ficheiro\n"
+"d - deixar de fora este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1275 git-add--interactive.perl:1293
 msgid ""
@@ -25276,11 +26231,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
-"y - descartar este excerto da árvore de trabalho\n"
-"n - não descartar este excerto da árvore de trabalho\n"
-"q - sair; não descartar este excerto nem os restantes\n"
-"a - descartar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não descartar este excerto nem os excertos seguintes no ficheiro"
+"y - descartar este pedaço da árvore de trabalho\n"
+"n - manter este pedaço na árvore de trabalho\n"
+"q - sair; considerar este pedaço e os restantes\n"
+"a - descartar este pedaço e os os próximos deste ficheiro\n"
+"d - manter este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1281
 msgid ""
@@ -25290,11 +26245,11 @@
 "a - discard this hunk and all later hunks in the file\n"
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
-"y - descartar este pedaço de index e worktree\n"
-"n - manter este pedeço no index e worktree\n"
-"q - sair; manter este pedaço e qualquer outro restante\n"
-"a - descartar este pedaço e qualquer próximo deste ficheiro\n"
-"d - manter este pedaço e qualquer próximo deste ficheiro"
+"y - descartar este pedaço de index e árvore de trabalho\n"
+"n - manter este pedaço no index e árvore de trabalho\n"
+"q - sair; manter este pedaço e os restante\n"
+"a - descartar este pedaço e os próximos deste ficheiro\n"
+"d - manter este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1287
 msgid ""
@@ -25304,11 +26259,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este excerto ao índice e à árvore de trabalho\n"
-"n - não aplicar este excerto ao índice e à árvore de trabalho\n"
-"q - sair; não aplicar este excerto ou restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço ao index e à árvore de trabalho\n"
+"n - deixar este pedaço fora de índice e à árvore de trabalho\n"
+"q - sair; deixar de fora este pedaço e restantes\n"
+"a - submeter este pedaço e os próximos deste ficheiro\n"
+"d - deixar de fora este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1299
 #, fuzzy
@@ -25319,11 +26274,11 @@
 "a - apply this hunk and all later hunks in the file\n"
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
-"y - aplicar este excerto ao índice e à árvore de trabalho\n"
-"n - não aplicar este excerto ao índice e à árvore de trabalho\n"
-"q - sair; não aplicar este excerto ou restantes\n"
-"a - aplicar este excerto e todos os excertos seguintes no ficheiro\n"
-"d - não aplicar este excerto nem os excertos seguintes no ficheiro"
+"y - submeter este pedaço à árvore de trabalho\n"
+"n - deixar este pedaço de fora da árvore de trabalho\n"
+"q - sair; deixar de fora este pedaço e restantes\n"
+"a - submeter este pedaço e os próximos deste ficheiro\n"
+"d - deixar de fora este pedaço e os próximos deste ficheiro"
 
 #: git-add--interactive.perl:1314
 msgid ""
@@ -25337,24 +26292,24 @@
 "e - manually edit the current hunk\n"
 "? - print help\n"
 msgstr ""
-"g - selecionar um excerto para ir\n"
-"/ - procurar por um excerto correspondendo à regex dada\n"
-"j - deixar este excerto indecidido, ver excerto seguinte indecidido\n"
-"J - deixar este excerto indecidido, ver excerto seguinte\n"
-"k - deixar este excerto indecidido, ver excerto anterior indecidido\n"
-"K - deixar este excerto indecidido, ver excerto anterior\n"
-"s - dividir o excerto atual em excertos mais pequenos\n"
-"e - editar manualmente o excerto atual\n"
+"g - selecionar um pedaço para ir\n"
+"/ - procurar por um pedaço correspondendo à regex dada\n"
+"j - deixar este pedaço indecidido, ver pedaço seguinte indecidido\n"
+"J - deixar este pedaço indecidido, ver pedaço seguinte\n"
+"k - deixar este pedaço indecidido, ver pedaço anterior indecidido\n"
+"K - deixar este pedaço indecidido, ver pedaço anterior\n"
+"s - dividir o pedaço atual em pedaços mais pequenos\n"
+"e - editar manualmente o pedaço atual\n"
 "? - imprimir ajuda\n"
 
 #: git-add--interactive.perl:1345
 msgid "The selected hunks do not apply to the index!\n"
-msgstr "Os excertos selecionados não aplicam ao índice!\n"
+msgstr "Os pedaços selecionados ficam de fora de index!\n"
 
 #: git-add--interactive.perl:1360
 #, perl-format
 msgid "ignoring unmerged: %s\n"
-msgstr "ignorado não integrado: %s\n"
+msgstr "ignorando por juntar: %s\n"
 
 #: git-add--interactive.perl:1479
 #, fuzzy, perl-format
@@ -25379,7 +26334,7 @@
 #, fuzzy, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
-"Aplicar este excerto ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
+"Aplicar este pedaço ao índice e à árvore de trabalho [y,n,q,a,d,/%s,?]? "
 
 #: git-add--interactive.perl:1599
 msgid "No other hunks to goto\n"
@@ -25394,8 +26349,8 @@
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
-msgstr[0] "Lamento, apenas %d excerto disponível.\n"
-msgstr[1] "Lamento, apenas %d excertos disponíveis.\n"
+msgstr[0] "Lamento, apenas %d pedaço disponível.\n"
+msgstr[1] "Lamento, apenas %d pedaços disponíveis.\n"
 
 #: git-add--interactive.perl:1657
 msgid "No other hunks to search\n"
@@ -25408,15 +26363,15 @@
 
 #: git-add--interactive.perl:1684
 msgid "No hunk matches the given pattern\n"
-msgstr "Nenhum excerto corresponde ao padrão fornecido\n"
+msgstr "Nenhum pedaço corresponde ao padrão fornecido\n"
 
 #: git-add--interactive.perl:1696 git-add--interactive.perl:1718
 msgid "No previous hunk\n"
-msgstr "Nenhum excerto anterior\n"
+msgstr "Nenhum pedaço anterior\n"
 
 #: git-add--interactive.perl:1705 git-add--interactive.perl:1724
 msgid "No next hunk\n"
-msgstr "Nenhum excerto seguinte\n"
+msgstr "Nenhum pedaço seguinte\n"
 
 #: git-add--interactive.perl:1730
 msgid "Sorry, cannot split this hunk\n"
@@ -25426,8 +26381,8 @@
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
-msgstr[0] "Dividir em %d excerto.\n"
-msgstr[1] "Dividir em %d excertos.\n"
+msgstr[0] "Dividir em %d pedaço.\n"
+msgstr[1] "Dividir em %d pedaços.\n"
 
 #: git-add--interactive.perl:1746
 msgid "Sorry, cannot edit this hunk\n"
@@ -25445,14 +26400,14 @@
 "add untracked - add contents of untracked files to the staged set of "
 "changes\n"
 msgstr ""
-"status        - mostrar caminhos com alterações\n"
+"status        - mostrar paths com alterações\n"
 "update        - adicionar o estado da árvore de trabalho ao conjunto de "
 "alterações preparadas\n"
 "revert        - reverter conjunto de alterações preparadas de volta à versão "
-"de HEAD\n"
-"patch         - escolher excertos e atualizar seletivamente\n"
-"diff          - ver diff entre HEAD e índice\n"
-"add untracked - adicionar conteúdos de ficheiros não controlados ao conjunto "
+"HEAD\n"
+"patch         - escolher pedaços e atualizar seletivamente\n"
+"diff          - ver diff entre HEAD e index\n"
+"add untracked - adicionar conteúdos de ficheiros por monitorizar ao conjunto "
 "de alterações preparadas\n"
 
 #: git-add--interactive.perl:1828 git-add--interactive.perl:1840
@@ -25472,81 +26427,86 @@
 msgid "invalid argument %s, expecting --"
 msgstr "argumento inválido %s, esperava-se --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
-msgstr "a zona local difere de GMT por um intervalo não arrendado ao minuto\n"
+msgstr "zona local difere de GMT por um intervalo diferente de minuto\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "a diferença de tempo local é maior ou igual a 24 horas\n"
 
-#: git-send-email.perl:223 git-send-email.perl:229
+#: git-send-email.perl:214
+#, perl-format
+msgid "fatal: command '%s' died with exit code %d"
+msgstr ""
+
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "o editor saiu com erros, abortar tudo"
 
-#: git-send-email.perl:312
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "'%s' contém uma versão intermédia do e-mail que esteve a compor.\n"
 
-#: git-send-email.perl:317
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' contém o e-mail composto.\n"
 
-#: git-send-email.perl:410
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases incompatível com outras opções\n"
 
-#: git-send-email.perl:484
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
 "Set sendemail.forbidSendmailVariables to false to disable this check.\n"
 msgstr ""
 
-#: git-send-email.perl:489 git-send-email.perl:691
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Incapaz executar git format-patch fora de um repositório\n"
 
-#: git-send-email.perl:492
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr ""
 
-#: git-send-email.perl:505
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Campo de --suppress-cc desconhecido: '%s'\n"
 
-#: git-send-email.perl:536
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Definidição --confirm desconhecida: '%s'\n"
 
-#: git-send-email.perl:564
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
-msgstr "aviso: sendmail alias com aspas não é suportado: %s\n"
+msgstr "aviso: alias sendmail com aspas é insustentado: %s\n"
 
-#: git-send-email.perl:566
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
-msgstr "aviso: `:include:` não suportado: %s\n"
+msgstr "aviso: `:include:` insustentado: %s\n"
 
-#: git-send-email.perl:568
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
-msgstr "aviso: `/file` ou redireção `|pipe` não suportado: %s\n"
+msgstr "aviso: `/file` ou redireção `|pipe` é insustentado: %s\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
-msgstr "aviso: linha sendmail não é reconhecida: %s\n"
+msgstr "aviso: linha sendmail está por reconhecer: %s\n"
 
-#: git-send-email.perl:657
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25561,21 +26521,12 @@
 "    * Dizendo \"./%s\" se pretende um ficheiro; ou\n"
 "    * Passando a opção --format-patch se pretende um intervalo de commits.\n"
 
-#: git-send-email.perl:678
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Falha ao abrir diretório %s: %s"
 
-#: git-send-email.perl:702
-#, perl-format
-msgid ""
-"fatal: %s: %s\n"
-"warning: no patches were sent\n"
-msgstr ""
-"fatal: %s: %s\n"
-"aviso: enviado patch nenhum\n"
-
-#: git-send-email.perl:713
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -25585,17 +26536,17 @@
 "Nenhum ficheiro patch especificado!\n"
 "\n"
 
-#: git-send-email.perl:726
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Nenhum linha de assunto em %s?"
 
-#: git-send-email.perl:736
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Falha ao abrir %s para escrita: %s"
 
-#: git-send-email.perl:747
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -25605,43 +26556,43 @@
 msgstr ""
 "Linhas começadas com \"GIT:\" serão removidos.\n"
 "Considere incluir um diffstat geral ou tabela de conteúdos\n"
-"do patch que está a escrever.\n"
+"para o patch que está a escrever.\n"
 "\n"
-"Apague o conteúdo do corpo se não deseja enviar um sumário.\n"
+"Apague o conteúdo do corpo se deseja enviar um sumário nenhum.\n"
 
-#: git-send-email.perl:771
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Falha ao abrir %s: %s"
 
-#: git-send-email.perl:788
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Falha ao abrir %s.final: %s"
 
-#: git-send-email.perl:831
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "O e-mail de sumário está vazio, saltá-lo à frente\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:866
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Tem a certeza que quer usar <%s> [y/N]? "
 
-#: git-send-email.perl:921
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr ""
-"Os seguintes ficheiros são 8bit, mas não declaram um Content-Transfer-"
-"Encoding.\n"
+"Os seguintes ficheiros são 8bit, mas declaram Content-Transfer-Encoding "
+"nenhum.\n"
 
-#: git-send-email.perl:926
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Que codificação 8bit se deve declarar [UTF-8]? "
 
-#: git-send-email.perl:934
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -25654,39 +26605,39 @@
 "tem o assunto modelo '*** SUBJECT HERE ***'. Passe --force se pretende mesmo "
 "enviar.\n"
 
-#: git-send-email.perl:953
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "Para quem devem ser enviados os e-mails (se alguém)?"
 
-#: git-send-email.perl:971
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "fatal: alias '%s' expande para si próprio\n"
 
-#: git-send-email.perl:983
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "Message-ID para ser usado como In-Reply-To para o primeiro e-mail (se "
 "algum)? "
 
-#: git-send-email.perl:1041 git-send-email.perl:1049
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
-msgstr "erro: não é possível extrair um endereço válido de: %s\n"
+msgstr "erro: incapaz extrair endereço válido de: %s\n"
 
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1053
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "O que fazer com este endereço? ([q]uit|[d]rop|[e]dit): "
 
-#: git-send-email.perl:1370
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
-msgstr "O caminho de CA '%s' não existe"
+msgstr "Path CA \"%s\" é inexistente"
 
-#: git-send-email.perl:1453
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25713,1058 +26664,145 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1468
+#: git-send-email.perl:1544
 #, fuzzy
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "Enviar este e-mail? ([y]es|[n]o|[q]uit|[a]ll): "
 
-#: git-send-email.perl:1471
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "É necessária resposta se deseja enviar este e-mail"
 
-#: git-send-email.perl:1499
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
-msgstr "O servidor SMTP necessário não está definido corretamente."
+msgstr "O servidor SMTP necessário está definido incorretamente."
 
-#: git-send-email.perl:1546
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
-msgstr "O servidor não suporta STARTTLS! %s"
+msgstr "O servidor insustenta STARTTLS! %s"
 
-#: git-send-email.perl:1551 git-send-email.perl:1555
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
-msgstr ""
+msgstr "Falhou STARTTLS! %s"
 
-#: git-send-email.perl:1564
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
-msgstr "Incapaz inicializar SMTP devidamente. Verifica configuração e usa --smtp-debug."
+msgstr ""
+"Incapaz inicializar SMTP devidamente. Verifica configuração e usa --smtp-"
+"debug."
 
-#: git-send-email.perl:1582
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Falha ao enviar %s\n"
 
-#: git-send-email.perl:1585
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Simulado-Enviado %s\n"
 
-#: git-send-email.perl:1585
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Enviado %s\n"
 
-#: git-send-email.perl:1587
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Simulado-OK. O registo diz:\n"
 
-#: git-send-email.perl:1587
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. O registo diz:\n"
 
-#: git-send-email.perl:1599
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Resultado: "
 
-#: git-send-email.perl:1602
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Resultado: OK\n"
 
-#: git-send-email.perl:1620
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
-msgstr "não é possível abrir o ficheiro %s"
+msgstr "incapaz abrir ficheiro %s"
 
-#: git-send-email.perl:1667 git-send-email.perl:1687
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Adicionar cc: %s da linha '%s'\n"
 
-#: git-send-email.perl:1673
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Adicionar para: %s da linha '%s'\n"
 
-#: git-send-email.perl:1730
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Adicionar cc: %s da linha '%s'\n"
 
-#: git-send-email.perl:1765
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Adicionar cc: %s da linha '%s'\n"
 
-#: git-send-email.perl:1876
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Incapaz executar '%s'"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Adicionar %s: %s de: '%s'\n"
 
-#: git-send-email.perl:1887
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) falha ao fechar pipe para '%s'"
 
-#: git-send-email.perl:1917
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
-msgstr "não é possível enviar mensagem como 7bit"
+msgstr "incapaz enviar mensagem como 7bit"
 
-#: git-send-email.perl:1925
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "codificação de transferência inválida"
 
-#: git-send-email.perl:1966 git-send-email.perl:2018 git-send-email.perl:2028
+#: git-send-email.perl:2051
+#, fuzzy, perl-format
+msgid ""
+"fatal: %s: rejected by sendemail-validate hook\n"
+"%s\n"
+"warning: no patches were sent\n"
+msgstr ""
+"fatal: %s: %s\n"
+"aviso: enviado patch nenhum\n"
+
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
-msgstr "não é possível abrir %s: %s\n"
+msgstr "incapaz abrir %s: %s\n"
 
-#: git-send-email.perl:1969
-#, perl-format
-msgid "%s: patch contains a line longer than 998 characters"
-msgstr "%s: o patch contém uma linha mais longa que 998 carateres"
+#: git-send-email.perl:2064
+#, fuzzy, perl-format
+msgid ""
+"fatal: %s:%d is longer than 998 characters\n"
+"warning: no patches were sent\n"
+msgstr ""
+"fatal: %s: %s\n"
+"aviso: enviado patch nenhum\n"
 
-#: git-send-email.perl:1986
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "Saltar %s com sufixo de backup '%s'.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1990
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Deseja mesmo enviar %s? [y|N]: "
-
-#~ msgid "store only"
-#~ msgstr "armazenar apenas"
-
-#~ msgid "compress faster"
-#~ msgstr "compressão rápida"
-
-#~ msgid "compress better"
-#~ msgstr "compressão ótima"
-
-#, fuzzy, c-format
-#~ msgid "unexpected duplicate commit id %s"
-#~ msgstr "não foi possível analisar o commit %s"
-
-#, fuzzy, c-format
-#~ msgid "%s: not a valid OID"
-#~ msgstr "'%s' não é uma referência válida."
-
-#, fuzzy, c-format
-#~ msgid "invalid committer '%s'"
-#~ msgstr "commit inválido %s"
-
-#, fuzzy, c-format
-#~ msgid "invalid committer: %s"
-#~ msgstr "commit inválido %s"
-
-#, fuzzy
-#~ msgid "git bisect--helper --next-all"
-#~ msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#, fuzzy
-#~ msgid "git bisect--helper --bisect-clean-state"
-#~ msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#, fuzzy
-#~ msgid "git bisect--helper --bisect-autostart"
-#~ msgstr "git bisect--helper --next-all [--no-checkout]"
-
-#~ msgid "perform 'git bisect next'"
-#~ msgstr "executar 'git bisect next'"
-
-#, fuzzy
-#~ msgid "--write-terms requires two arguments"
-#~ msgstr "--abort não leva argumentos"
-
-#, fuzzy
-#~ msgid "--bisect-clean-state requires no arguments"
-#~ msgstr "--continue não leva argumentos"
-
-#, fuzzy
-#~ msgid "--bisect-autostart does not accept arguments"
-#~ msgstr "%%(subject) não leva argumentos"
-
-#~ msgid "n,m"
-#~ msgstr "n,m"
-
-#~ msgid "Process line range n,m in file, counting from 1"
-#~ msgstr "processar intervalo de linhas n,m, a contar a partir de 1"
-
-#~ msgid "name of output directory is too long"
-#~ msgstr "o nome do diretório de saída é demasiado longo"
-
-#~ msgid "standard output, or directory, which one?"
-#~ msgstr "saída padrão, ou diretório, qual deles?"
-
-#, c-format
-#~ msgid "failed to remove '%s'"
-#~ msgstr "falha ao remover '%s'"
-
-#, sh-format
-#~ msgid "Bad rev input: $bisected_head"
-#~ msgstr "Revisão incorreta na entrada: $bisected_head"
-
-#, sh-format
-#~ msgid "Bad rev input: $rev"
-#~ msgstr "Revisão incorreta na entrada: $rev"
-
-#, sh-format
-#~ msgid "See git-${cmd}(1) for details."
-#~ msgstr "Consulte git-${cmd}(1) para obter mais detalhes."
-
-#, c-format
-#~ msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
-#~ msgstr ""
-#~ "valor '%s' de core.untrackedCache desconhecido; usar 'keep' valor por "
-#~ "omissão"
-
-#~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
-#~ msgstr "git fetch-pack: esperava-se ACK/NAK, obteve-se EOF"
-
-#~ msgid "Server supports multi_ack_detailed"
-#~ msgstr "O servidor suporta multi_ack_detailed"
-
-#~ msgid "Server supports no-done"
-#~ msgstr "O servidor suporta no-done"
-
-#~ msgid "Server supports multi_ack"
-#~ msgstr "O servidor suporta muilti_ack"
-
-#~ msgid "Server supports side-band-64k"
-#~ msgstr "O servidor suporta side-band-64k"
-
-#~ msgid "Server supports allow-tip-sha1-in-want"
-#~ msgstr "O servidor suporta allow-tip-sha1-in-want"
-
-#~ msgid "Server supports allow-reachable-sha1-in-want"
-#~ msgstr "O servidor suporta allow-reachable-sha1-in-want"
-
-#, c-format
-#~ msgid "in %0.1f seconds automatically..."
-#~ msgstr "automaticamente em %0.1f..."
-
-#~ msgid "error building trees"
-#~ msgstr "erro ao construir árvores"
-
-#, c-format
-#~ msgid "Renaming %s to %s and %s to %s instead"
-#~ msgstr "A mudar o nome de %s para %s e de %s para %s, em alternativa"
-
-#~ msgid ""
-#~ "empty strings as pathspecs will be made invalid in upcoming releases. "
-#~ "please use . instead if you meant to match all paths"
-#~ msgstr ""
-#~ "cadeias de caracteres vazias como especificadores de caminho tornar-se-ão "
-#~ "inválidas nas próximas versões. Use . para corresponder a todos os "
-#~ "caminhos"
-
-#, c-format
-#~ msgid "Could not open '%s' for writing"
-#~ msgstr "Incapaz abrir '%s' para escrita"
-
-#, c-format
-#~ msgid "positive value expected objectname:short=%s"
-#~ msgstr "valor positivo esperado objectname:short=%s"
-
-#, c-format
-#~ msgid "(HEAD detached at %s)"
-#~ msgstr "(HEAD destacada em %s)"
-
-#, c-format
-#~ msgid "(HEAD detached from %s)"
-#~ msgstr "(HEAD destacada de %s)"
-
-#~ msgid "Internal error"
-#~ msgstr "Erro interno"
-
-#, c-format
-#~ msgid "dup2(%d,%d) failed"
-#~ msgstr "dup2(%d,%d) falhou"
-
-#, c-format
-#~ msgid ""
-#~ "invalid 1st line of squash message:\n"
-#~ "\n"
-#~ "\t%.*s"
-#~ msgstr ""
-#~ "1ª linha inválida da mensagem de squash:\n"
-#~ "\n"
-#~ "\t%.*s"
-
-#, c-format
-#~ msgid "mainline was specified but commit %s is not a merge."
-#~ msgstr ""
-#~ "a linha principal foi especificada mas o commit %s não é uma integração."
-
-#~ msgid "BUG: returned path string doesn't match cwd?"
-#~ msgstr "BUG: returned path string doesn't match cwd?"
-
-#, c-format
-#~ msgid ""
-#~ "Cannot update sparse checkout: the following entries are not up-to-date:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Impossível actualizar sparse checkout: estas entradas estão "
-#~ "desactualizadas:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid ""
-#~ "The following working tree files would be overwritten by sparse checkout "
-#~ "update:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Os seguintes ficheiros na árvore de trabalho seriam substituídos ao "
-#~ "atualizar a extração esparsa:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid ""
-#~ "The following working tree files would be removed by sparse checkout "
-#~ "update:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Os seguintes ficheiros na árvore de trabalho seriam removidos ao "
-#~ "atualizar a extração esparsa:\n"
-#~ "%s"
-
-#, c-format
-#~ msgid "submodule update strategy not supported for submodule '%s'"
-#~ msgstr "não foi possível procurar pelo submódulo '%s'"
-
-#, c-format
-#~ msgid "could not close %s"
-#~ msgstr "não foi possível fechar %s"
-
-#~ msgid "Initial commit on "
-#~ msgstr "Commit inicial em "
-
-#~ msgid "(+/-)x"
-#~ msgstr "(+/-)x"
-
-#, c-format
-#~ msgid "Use -f if you really want to add them.\n"
-#~ msgstr "Use -f se deseja mesmo adicioná-los.\n"
-
-#~ msgid "Patch is empty. Was it split wrong?"
-#~ msgstr "O patch está vazio. Foi dividido incorretamente?"
-
-#~ msgid "cannot be interactive without stdin connected to a terminal."
-#~ msgstr ""
-#~ "não é possível entrar em modo interativo sem um entrada padrão conectada "
-#~ "a um terminal."
-
-#, c-format
-#~ msgid "The copy of the patch that failed is found in: %s"
-#~ msgstr "A cópia do patch que falhou encontra-se em: %s"
-
-#~ msgid ""
-#~ "You still have unmerged paths in your index.\n"
-#~ "Did you forget to use 'git add'?"
-#~ msgstr ""
-#~ "Ainda há caminhos não integrados no índice.\n"
-#~ "Esqueceu-se de usar 'git add'?"
-
-#~ msgid "update BISECT_HEAD instead of checking out the current commit"
-#~ msgstr "atualizar BISECT_HEAD em vez de extrair o commit atual"
-
-#~ msgid "Use an experimental heuristic to improve diffs"
-#~ msgstr "Usar um heurística experimental para melhorar diffs"
-
-#~ msgid "change upstream info"
-#~ msgstr "alterar a informação do ramo a montante"
-
-#~ msgid "it does not make sense to create 'HEAD' manually"
-#~ msgstr "não faz sentido criar 'HEAD' manualmente"
-
-#, c-format
-#~ msgid ""
-#~ "\n"
-#~ "If you wanted to make '%s' track '%s', do this:\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Se quer que '%s' siga '%s', faça:\n"
-#~ "\n"
-
-#, c-format
-#~ msgid ""
-#~ "Cannot update paths and switch to branch '%s' at the same time.\n"
-#~ "Did you intend to checkout '%s' which can not be resolved as commit?"
-#~ msgstr ""
-#~ " possível atualizar os caminho e mudar para o ramo '%s' ao mesmo tempo.\n"
-#~ "Pretendia extrair '%s' o qual não pode ser resolvido como commit?"
-
-#, c-format
-#~ msgid "failed to stat %s\n"
-#~ msgstr "falha ao invocar stat de %s\n"
-
-#~ msgid ""
-#~ "If you wish to skip this commit, use:\n"
-#~ "\n"
-#~ "    git reset\n"
-#~ "\n"
-#~ "Then \"git cherry-pick --continue\" will resume cherry-picking\n"
-#~ "the remaining commits.\n"
-#~ msgstr ""
-#~ "Se deseja ignorar este commit, use:\n"
-#~ "\n"
-#~ "    git reset\n"
-#~ "\n"
-#~ "Depois \"git cherry-pick --continue\" irá retomar o cherry-pick\n"
-#~ "dos restantes commits.\n"
-
-#~ msgid "Explicit paths specified without -i or -o; assuming --only paths..."
-#~ msgstr "Caminhos explícitos especificados sem -i ou -o; assumindo --only..."
-
-#~ msgid "default"
-#~ msgstr "predefinição"
-
-#, c-format
-#~ msgid "annotated tag %s has no embedded name"
-#~ msgstr "tag anotada %s falta o nome incorporado"
-
-#~ msgid "<command>"
-#~ msgstr "<comando>"
-
-#~ msgid "default mode for recursion"
-#~ msgstr "modo recursivo por omissão"
-
-#, c-format
-#~ msgid "Don't know how to fetch from %s"
-#~ msgstr "Desconheço como buscar de %s"
-
-#, c-format
-#~ msgid "Can't stat %s"
-#~ msgstr "não é possível invocar stat sobre %s"
-
-#~ msgid "basename"
-#~ msgstr "nomebase"
-
-#~ msgid "Everyday Git With 20 Commands Or So"
-#~ msgstr "Diário Git com mais ou menos 20 Comandos"
-
-#~ msgid "Error in object"
-#~ msgstr "Erro no objeto"
-
-#~ msgid "print only names (no SHA-1)"
-#~ msgstr "imprimir apenas nomes (sem SHA-1)"
-
-#~ msgid "--[no-]autostash option is only valid with --rebase."
-#~ msgstr "a opção --[no-]autostash só é válida com --rebase."
-
-#~ msgid "abort rebase"
-#~ msgstr "abortar rebase"
-
-#~ msgid "push|fetch"
-#~ msgstr "push|fetch"
-
-#~ msgid "w[,i1[,i2]]"
-#~ msgstr "w[,i1[,i2]]"
-
-#~ msgid "submodule--helper subcommand must be called with a subcommand"
-#~ msgstr "o subcomando submodule--helper deve ser invocado com um subcomando"
-
-#~ msgid "tag: tagging "
-#~ msgstr "tag: a colocar tag"
-
-#~ msgid "commit object"
-#~ msgstr "objeto commit"
-
-#~ msgid "blob object"
-#~ msgstr "objeto blob"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: not a valid directory"
-#~ msgstr "A remover worktrees/%s: diretório inválido"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-#~ msgstr "A remover worktrees/%s: não é possível ler o ficheiro gitdir (%s)"
-
-#, c-format
-#~ msgid "Removing worktrees/%s: invalid gitdir file"
-#~ msgstr "A remover worktrees/%s: ficheiro gitdir inválido"
-
-#, sh-format
-#~ msgid "unrecognised option: '$arg'"
-#~ msgstr "opção não reconhecida: '$arg'"
-
-#, sh-format
-#~ msgid "'$invalid' is not a valid commit"
-#~ msgstr "'$invalid' não é um commit válido"
-
-#, sh-format
-#~ msgid "invalid upstream $upstream_name"
-#~ msgstr "$upstream_name a montante inválido"
-
-#, sh-format
-#~ msgid "$onto_name: there are more than one merge bases"
-#~ msgstr "$onto_name: há mais do que uma base de integração"
-
-#, sh-format
-#~ msgid "$onto_name: there is no merge base"
-#~ msgstr "$onto_name: há base de junção nenhuma"
-
-#, sh-format
-#~ msgid "fatal: no such branch: $branch_name"
-#~ msgstr "fatal: ramo inexistente: $branch_name"
-
-#, sh-format
-#~ msgid "Fast-forwarded $branch_name to $onto_name."
-#~ msgstr "$branch_name avançado rapidamente para $onto_name."
-
-#~ msgid "Cannot remove temporary index (can't happen)"
-#~ msgstr "Incapaz remover index temporário (pode acontecer de maneira nenhuma)"
-
-#, sh-format
-#~ msgid ""
-#~ "error: unknown option for 'stash save': $option\n"
-#~ "       To provide a message, use git stash save -- '$option'"
-#~ msgstr ""
-#~ "erro: desconheço opção de 'stash save': $option\n"
-#~ "       Fornecendo mensagem, usa git stash save -- '$option'"
-
-#, sh-format
-#~ msgid "unknown option: $opt"
-#~ msgstr "opção desconhecido: $opt"
-
-#, sh-format
-#~ msgid "$reference is not a valid reference"
-#~ msgstr "$reference não é uma referência válida"
-
-#~ msgid "Cannot unstage modified files"
-#~ msgstr "Incapaz despreparar ficheiros modificado"
-
-#~ msgid "(To restore them type \"git stash apply\")"
-#~ msgstr "(Para os restaurar execute \"git stash apply\")"
-
-#, sh-format
-#~ msgid ""
-#~ "The following path is ignored by one of your .gitignore files:\n"
-#~ "$sm_path\n"
-#~ "Use -f if you really want to add it."
-#~ msgstr ""
-#~ "O seguinte caminho foi ignorado por um ficheiro .gitignore:\n"
-#~ "$sm_path\n"
-#~ "Use -f se pretende mesmo adicioná-lo."
-
-#, sh-format
-#~ msgid "Entering '$displaypath'"
-#~ msgstr "A entrar em '$displaypath'"
-
-#, sh-format
-#~ msgid "Stopping at '$displaypath'; script returned non-zero status."
-#~ msgstr ""
-#~ "Interrompido em '$displaypath'; o script retornou um valor diferente de "
-#~ "zero."
-
-#, sh-format
-#~ msgid "pathspec and --all are incompatible"
-#~ msgstr "especificador de caminho e --all são incompatíveis"
-
-#, sh-format
-#~ msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
-#~ msgstr ""
-#~ "O registo do submódulo '$name' ($url) foi removido do caminho "
-#~ "'$displaypath'"
-
-#~ msgid "The --cached option cannot be used with the --files option"
-#~ msgstr "A opção --cached não pode ser usada com a opção --files"
-
-#, sh-format
-#~ msgid "  Warn: $display_name doesn't contain commit $sha1_src"
-#~ msgstr "  Aviso: $display_name não contém o commit $sha1_src"
-
-#, sh-format
-#~ msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
-#~ msgstr "  Warn: $display_name não contém o commit $sha1_dst"
-
-#, sh-format
-#~ msgid ""
-#~ "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
-#~ msgstr "  Warn: $display_name contém os commits $sha1_src e $sha1_dst"
-
-#, sh-format
-#~ msgid "Failed to recurse into submodule path '$sm_path'"
-#~ msgstr "Falha ao percorrer recursivamente o caminho de submódulo '$sm_path'"
-
-#, sh-format
-#~ msgid ""
-#~ "Warning: the SHA-1 is missing or isn't a commit in the following line:\n"
-#~ " - $line"
-#~ msgstr ""
-#~ "Aviso: falta o SHA-1 ou a seguinte linha não tem um commit:\n"
-#~ " - $line"
-
-#, sh-format
-#~ msgid ""
-#~ "Warning: the command isn't recognized in the following line:\n"
-#~ " - $line"
-#~ msgstr ""
-#~ "Aviso: o comando não é reconhecido na seguinte linha:\n"
-#~ " - $line"
-
-#~ msgid "Or you can abort the rebase with 'git rebase --abort'."
-#~ msgstr "Ou pode abortar o rebase com 'git rebase --abort'."
-
-#~ msgid "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"
-#~ msgstr "Os campos To/Cc/Bcc não são interpretados ainda, foram ignorados\n"
-
-#~ msgid ""
-#~ "There is nothing to exclude from by :(exclude) patterns.\n"
-#~ "Perhaps you forgot to add either ':/' or '.' ?"
-#~ msgstr ""
-#~ "Há nada a excluir de acordo com a pattern :(exclude).\n"
-#~ "Talvez tenhas-te esquecido de acrescentar ':/' ou '.' ?"
-
-#~ msgid "unrecognized format: %%(%s)"
-#~ msgstr "formato não reconhecido: %%(%s)"
-
-#~ msgid "ref '%s' does not have %ld components to :strip"
-#~ msgstr "a referência '%s' não tem %ld componentes como se indica em :strip"
-
-#~ msgid "[%s: gone]"
-#~ msgstr "[%s: desaparecido]"
-
-#~ msgid "[%s: behind %d]"
-#~ msgstr "[%s: atrás %d]"
-
-#~ msgid "[%s: ahead %d]"
-#~ msgstr "[%s: à frente %d]"
-
-#~ msgid "[%s: ahead %d, behind %d]"
-#~ msgstr "[%s: à frente %d, atrás %d]"
-
-#~ msgid " **** invalid ref ****"
-#~ msgstr " **** referências inválida ****"
-
-#~ msgid "insanely long object directory %.*s"
-#~ msgstr "diretório de objetos demasiado longo %.*s"
-
-#~ msgid "git merge [<options>] <msg> HEAD <commit>"
-#~ msgstr "git merge [<opções>] <msg> HEAD <commit>"
-
-#~ msgid "tag name too long: %.*s..."
-#~ msgstr "o nome da tag é demasiado longo: %.*s..."
-
-#~ msgid "tag header too big."
-#~ msgstr "cabeçalho da tag demasiado longo."
-
-#~ msgid ""
-#~ "If the patch applies cleanly, the edited hunk will immediately be\n"
-#~ "marked for discarding"
-#~ msgstr ""
-#~ "Se o patch se aplicar corretamente, o excerto editado será marcado\n"
-#~ "para ser descartado imediatamente."
-
-#~ msgid "Use an experimental blank-line-based heuristic to improve diffs"
-#~ msgstr ""
-#~ "Usar uma heurística experimental baseada em linhas brancas para melhorar "
-#~ "diffs"
-
-#~ msgid "Clever... amending the last one with dirty index."
-#~ msgstr "Inteligente... a emendar o último commit com o índice sujo."
-
-#~ msgid ""
-#~ "the following submodule (or one of its nested submodules)\n"
-#~ "uses a .git directory:"
-#~ msgid_plural ""
-#~ "the following submodules (or one of their nested submodules)\n"
-#~ "use a .git directory:"
-#~ msgstr[0] ""
-#~ "o submódulo seguinte (ou um dos seus submódulos aninhados)\n"
-#~ "usa um diretório .git:"
-#~ msgstr[1] ""
-#~ "os submódulos seguintes (ou um dos seus submódulos)\n"
-#~ "usam um diretório .git:"
-
-#~ msgid ""
-#~ "\n"
-#~ "(use 'rm -rf' if you really want to remove it including all of its "
-#~ "history)"
-#~ msgstr ""
-#~ "\n"
-#~ "(use 'rm -rf' se pretende mesmo removê-lo, incluindo todo o seu histórico)"
-
-#~ msgid "Could not write to %s"
-#~ msgstr "Incapaz escrever em %s"
-
-#~ msgid "Error wrapping up %s."
-#~ msgstr "Erro ao rematar %s."
-
-#~ msgid "Your local changes would be overwritten by cherry-pick."
-#~ msgstr "As suas alterações locais serão substituídas por cherry-pick."
-
-#~ msgid "Cannot revert during another revert."
-#~ msgstr "Incapaz reverter durante outra reversão."
-
-#~ msgid "Cannot cherry-pick during another cherry-pick."
-#~ msgstr "Incapaz apanhar durante outra apanha."
-
-#~ msgid "Could not open %s"
-#~ msgstr "Incapaz abrir %s"
-
-#~ msgid "Could not format %s."
-#~ msgstr "Incapaz formatar %s."
-
-#~ msgid "You need to set your committer info first"
-#~ msgstr "Primeiro tem de definir a sua informação de committer"
-
-#~ msgid "bad numeric config value '%s' for '%s': invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto: unidade inválida"
-
-#~ msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade "
-#~ "inválida"
-
-#~ msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: "
-#~ "unidade inválida"
-
-#~ msgid ""
-#~ "bad numeric config value '%s' for '%s' in standard input: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto na entrada padrão: "
-#~ "unidade inválida"
-
-#~ msgid ""
-#~ "bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: "
-#~ "unidade inválida"
-
-#~ msgid ""
-#~ "bad numeric config value '%s' for '%s' in command line %s: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto na linha de comandos "
-#~ "%s: unidade inválida"
-
-#~ msgid "bad numeric config value '%s' for '%s' in %s: invalid unit"
-#~ msgstr ""
-#~ "valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida"
-
-#~ msgid "This is the 2nd commit message:"
-#~ msgstr "Esta é a 2ª mensagem de commit:"
-
-#~ msgid "This is the 3rd commit message:"
-#~ msgstr "Esta é a 3ª mensagem de commit:"
-
-#~ msgid "This is the 4th commit message:"
-#~ msgstr "Esta é a 4ª mensagem de commit:"
-
-#~ msgid "This is the 5th commit message:"
-#~ msgstr "Esta é a 5ª mensagem de commit:"
-
-#~ msgid "This is the 6th commit message:"
-#~ msgstr "Esta é a 6ª mensagem de commit:"
-
-#~ msgid "This is the 7th commit message:"
-#~ msgstr "Esta é a 7ª mensagem de commit:"
-
-#~ msgid "This is the 8th commit message:"
-#~ msgstr "Esta é a 8ª mensagem de commit:"
-
-#~ msgid "This is the 9th commit message:"
-#~ msgstr "Esta é a 9ª mensagem de commit:"
-
-#~ msgid "This is the 10th commit message:"
-#~ msgstr "Esta é a 10ª mensagem de commit:"
-
-#~ msgid "This is the ${n}th commit message:"
-#~ msgstr "Esta é a ${n}ª mensagem de commit:"
-
-#~ msgid "This is the ${n}st commit message:"
-#~ msgstr "Está é a ${n}ª mensagem de commit:"
-
-#~ msgid "This is the ${n}nd commit message:"
-#~ msgstr "Esta é a ${n}ª mensagem de commit:"
-
-#~ msgid "This is the ${n}rd commit message:"
-#~ msgstr "Esta é a ${n}ª mensagem de commit:"
-
-#~ msgid "The 1st commit message will be skipped:"
-#~ msgstr "A 1ª mensagem de commit será ignorada:"
-
-#~ msgid "The 2nd commit message will be skipped:"
-#~ msgstr "A 2ª mensagem de commit será ignorada:"
-
-#~ msgid "The 3rd commit message will be skipped:"
-#~ msgstr "A 3ª mensagem de commit será ignorada:"
-
-#~ msgid "The 4th commit message will be skipped:"
-#~ msgstr "A 4ª mensagem de commit será ignorada:"
-
-#~ msgid "The 5th commit message will be skipped:"
-#~ msgstr "A 5ª mensagem de commit será ignorada:"
-
-#~ msgid "The 6th commit message will be skipped:"
-#~ msgstr "A 6ª mensagem de commit será ignorada:"
-
-#~ msgid "The 7th commit message will be skipped:"
-#~ msgstr "A 7ª mensagem de commit será ignorada:"
-
-#~ msgid "The 8th commit message will be skipped:"
-#~ msgstr "A 8ª mensagem de commit será ignorada:"
-
-#~ msgid "The 9th commit message will be skipped:"
-#~ msgstr "A 9ª mensagem de commit será ignorada:"
-
-#~ msgid "The 10th commit message will be skipped:"
-#~ msgstr "A 10ª mensagem de commit será ignorada:"
-
-#~ msgid "The ${n}th commit message will be skipped:"
-#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#~ msgid "The ${n}st commit message will be skipped:"
-#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#~ msgid "The ${n}nd commit message will be skipped:"
-#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#~ msgid "The ${n}rd commit message will be skipped:"
-#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#~ msgid "could not run gpg."
-#~ msgstr "não foi possível executar gpg."
-
-#~ msgid "gpg did not accept the data"
-#~ msgstr "gpg não aceitou os dados"
-
-#~ msgid "unsupported object type in the tree"
-#~ msgstr "tipo de objeto sem suporte encontrado na árvore"
-
-#~ msgid "Fatal merge failure, shouldn't happen."
-#~ msgstr "Falha de integração fatal, não devia acontecer."
-
-#~ msgid "Unprocessed path??? %s"
-#~ msgstr "Caminho não processado??? %s"
-
-#~ msgid "Cannot %s during a %s"
-#~ msgstr "Incapaz %s durante %s"
-
-#~ msgid "Can't cherry-pick into empty head"
-#~ msgstr "Incapaz apanhar para uma head vazia"
-
-#~ msgid "could not write branch description template"
-#~ msgstr "não foi possível escrever o modelo da descrição do ramo"
-
-#~ msgid "corrupt index file"
-#~ msgstr "ficheiro de índice corrompido"
-
-#~ msgid "detach the HEAD at named commit"
-#~ msgstr "destacar HEAD no commit indicado"
-
-#~ msgid "Checking connectivity... "
-#~ msgstr "A verificar a conectividade... "
-
-#~ msgid "  (unable to update local ref)"
-#~ msgstr "  (não é possível atualizar a referência local)"
-
-#~ msgid "Reinitialized existing"
-#~ msgstr "existente reinicializado"
-
-#~ msgid "Initialized empty"
-#~ msgstr "vazio inicializado"
-
-#~ msgid " shared"
-#~ msgstr " partilhado"
-
-#~ msgid "Verify that the named commit has a valid GPG signature"
-#~ msgstr "verificar se o commit tem uma assinatura GPG válida"
-
-#~ msgid "Writing SQUASH_MSG"
-#~ msgstr "A escrever SQUASH_MSG"
-
-#~ msgid "Finishing SQUASH_MSG"
-#~ msgstr "A concluir SQUASH_MSG"
-
-#~ msgid "   and with remote"
-#~ msgstr "   e com o remoto"
-
-#~ msgid "removing '%s' failed"
-#~ msgstr "falha ao remover '%s'"
-
-#~ msgid ""
-#~ "If you want to reuse this local git directory instead of cloning again "
-#~ "from"
-#~ msgstr ""
-#~ "Se deseja reutilizar este diretório git local em vez de clonar de novo de"
-
-#~ msgid ""
-#~ "use the '--force' option. If the local git directory is not the correct "
-#~ "repo"
-#~ msgstr ""
-#~ "use a opção '--force'. Se o diretório git local não é o repositório "
-#~ "correto"
-
-#~ msgid ""
-#~ "or you are unsure what this means choose another name with the '--name' "
-#~ "option."
-#~ msgstr ""
-#~ "ou se não tem a certeza do que isto significa, escolha outro nome com a "
-#~ "opção '--name'."
-
-#~ msgid "Submodule work tree '$displaypath' contains a .git directory"
-#~ msgstr ""
-#~ "A árvore de trabalho do submódulo '$displaypath' contém um diretório .git"
-
-#~ msgid ""
-#~ "(use 'rm -rf' if you really want to remove it including all of its "
-#~ "history)"
-#~ msgstr ""
-#~ "(use 'rm -rf' se pretende mesmo removê-lo, incluindo todo o seu histórico)"
-
-#~ msgid "'%s': %s"
-#~ msgstr "'%s': %s"
-
-#~ msgid "    git branch -d %s\n"
-#~ msgstr "    git branch -d %s\n"
-
-#~ msgid "    git branch --set-upstream-to %s\n"
-#~ msgstr "    git branch --set-upstream-to %s\n"
-
-#~ msgid "cannot open %s: %s\n"
-#~ msgstr "não é possível abrir %s: %s\n"
-
-#~ msgid "Please, stage your changes to .gitmodules or stash them to proceed"
-#~ msgstr ""
-#~ "Prepare as suas alterações em .gitmodules ou esconda-as (stash) para "
-#~ "prosseguir"
-
-#~ msgid "failed to remove: %s"
-#~ msgstr "falha ao remover: %s"
-
-#~ msgid "The --exec option must be used with the --interactive option"
-#~ msgstr "A opção --exec deve ser usada com a opção --interactive"
-
-#~ msgid ""
-#~ "Submodule path '$displaypath' not initialized\n"
-#~ "Maybe you want to use 'update --init'?"
-#~ msgstr ""
-#~ "Submódulo em '$displaypath' não inicializado\n"
-#~ "Talvez queira usar 'update --init'?"
-
-#~ msgid "improper format entered align:%s"
-#~ msgstr "formato impróprio introduzido align:%s"
-
-#~ msgid ""
-#~ "push.default is unset; its implicit value has changed in\n"
-#~ "Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
-#~ "and maintain the traditional behavior, use:\n"
-#~ "\n"
-#~ "  git config --global push.default matching\n"
-#~ "\n"
-#~ "To squelch this message and adopt the new behavior now, use:\n"
-#~ "\n"
-#~ "  git config --global push.default simple\n"
-#~ "\n"
-#~ "When push.default is set to 'matching', git will push local branches\n"
-#~ "to the remote branches that already exist with the same name.\n"
-#~ "\n"
-#~ "Since Git 2.0, Git defaults to the more conservative 'simple'\n"
-#~ "behavior, which only pushes the current branch to the corresponding\n"
-#~ "remote branch that 'git pull' uses to update the current branch.\n"
-#~ "\n"
-#~ "See 'git help config' and search for 'push.default' for further "
-#~ "information.\n"
-#~ "(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode\n"
-#~ "'current' instead of 'simple' if you sometimes use older versions of Git)"
-#~ msgstr ""
-#~ "push.default não está definido; o seu valor implícito foi alterado\n"
-#~ "no Git 2.0 de 'matching' para 'simple'. Para suprimir esta mensagem\n"
-#~ "e manter o comportamento tradicional, use:\n"
-#~ "\n"
-#~ "  git config --global push.default matching\n"
-#~ "\n"
-#~ "Para suprimir esta mensagem e adotar o novo comportamento, use:\n"
-#~ "\n"
-#~ "  git config --global push.default simple\n"
-#~ "\n"
-#~ "Quando push.default está definido como 'matching', o Git publica\n"
-#~ "os ramos locais nos ramos remotos que já existam com o mesmo nome.\n"
-#~ "\n"
-#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo "
-#~ "'simple',\n"
-#~ "publicando só o ramo atual no ramo remoto correspondente, que é usado\n"
-#~ "para atualizar o ramo atual com 'git pull'.\n"
-#~ "Consulte 'git help config' e procure por 'push.default' para mais "
-#~ "informações.\n"
-#~ "(o modo 'simple' foi introduzido no Git 1.7.11. Use o modo semelhante\n"
-#~ "'current' em vez de 'simple' se por vezes usa versões anteriores do Git)"
-
-#~ msgid "check|on-demand|no"
-#~ msgstr "check|on-demand|no"
-
-#~ msgid "Could not append '%s'"
-#~ msgstr "Incapaz acrescentar '%s'"
-
-#~ msgid "Testing "
-#~ msgstr "A testar "
-
-#~ msgid "Forward-port local commits to the updated upstream head"
-#~ msgstr ""
-#~ "Migrar commits locais para a cabeça atualizada em relação ao ramo a "
-#~ "montante"
-
-#~ msgid " %d file changed"
-#~ msgid_plural " %d files changed"
-#~ msgstr[0] " %d ficheiro modificado"
-#~ msgstr[1] " %d ficheiros modificados"
-
-#~ msgid ", %d insertion(+)"
-#~ msgid_plural ", %d insertions(+)"
-#~ msgstr[0] ", %d adição(+)"
-#~ msgstr[1] ", %d adições(+)"
-
-#~ msgid ", %d deletion(-)"
-#~ msgid_plural ", %d deletions(-)"
-#~ msgstr[0] ", %d eliminado(-)"
-#~ msgstr[1] ", %d eliminados(-)"
-
-#~ msgid "You do not have a valid HEAD"
-#~ msgstr "Você não tem uma HEAD válida"
-
-#~ msgid "bug"
-#~ msgstr "erro"
-
-#~ msgid "copied:     %s -> %s"
-#~ msgstr "copiado:     %s -> %s"
-
-#~ msgid "modified:   %s"
-#~ msgstr "modificado:   %s"
-
-#~ msgid "renamed:    %s -> %s"
-#~ msgstr "mudado de nome:    %s -> %s"
-
-#~ msgid ", behind "
-#~ msgstr ", atrás "
-
-#~ msgid "no files added"
-#~ msgstr "adicionado ficheiro nenhum"
-
-#~ msgid "Could not extract email from committer identity."
-#~ msgstr "Incapaz extrair email apartir identidade committer."
-
-#~ msgid "option %s does not accept negative form"
-#~ msgstr "opção %s não aceita formato negativo"
-
-#~ msgid "Applying: $FIRSTLINE"
-#~ msgstr "Aplicando: $FIRSTLINE"
-
-#~ msgid "--"
-#~ msgstr "--"
-
-#~ msgid "Please enter the commit message for your changes."
-#~ msgstr "Por favor insira a mensagem de commit das suas alterações."
diff --git a/po/sv.po b/po/sv.po
index 4a9f2f3..7e08824 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 2.32.0\n"
+"Project-Id-Version: git 2.33.0\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-20 13:31+0100\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 21:14+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -23,8 +23,8 @@
 msgid "Huh (%s)?"
 msgstr "Vadå (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "kunde inte läsa indexet"
@@ -53,7 +53,7 @@
 msgid "could not stage '%s'"
 msgstr "kunde inte köa \"%s\""
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "kunde inte skriva indexet"
 
@@ -111,12 +111,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignorerar ej sammanslagen: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Endast binära filer ändrade.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Inga ändringar.\n"
@@ -193,11 +193,11 @@
 msgid "(empty) select nothing"
 msgstr "(tomt) markera ingenting"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Kommandon ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Vad nu"
 
@@ -209,12 +209,13 @@
 msgid "unstaged"
 msgstr "ej köad"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "sökväg"
@@ -223,7 +224,7 @@
 msgid "could not refresh index"
 msgstr "kunde inte uppdatera indexet"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Hej då.\n"
@@ -524,34 +525,34 @@
 "a - applicera stycket och alla följande i filen\n"
 "d - applicera inte stycket eller något av de följande i filen\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "kunde inte tolka styckehuvudet \"%.*s\""
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "kunde inte tolka färgat styckehuvud \"%.*s\""
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "kunde inte tolka diff"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "kunde inte tolka färgad diff"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "misslyckades att köra \"%s\""
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "omaka utdata från interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -559,7 +560,7 @@
 "Alla rader i indata måste ha en motsvarande rad i utdata från\n"
 "ditt filter."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -568,7 +569,7 @@
 "förväntade sammanhangsrad %d i\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -581,11 +582,11 @@
 "\tavslutas inte med:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Manuellt styckeredigeringsläge -- se nederst för snabbguide.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -599,7 +600,7 @@
 "Rader som börjar med %c kommer att tas bort.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -609,11 +610,11 @@
 "redigera den igen. Om alla rader i ett stycke tas bort avbryts\n"
 "redigeringen och stycket lämnas oförändrat.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "kunde inte tolka styckehuvud"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "\"git apply --cached\" misslyckades"
 
@@ -629,26 +630,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Ditt redigerade stycke kan inte appliceras. Redigera igen (\"nej\" kastar!) "
 "[y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Markerade stycken kan inte appliceras på indexet!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Applicera dem på arbetskatalogen trots det? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Ingenting applicerades.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -670,69 +671,69 @@
 "e - redigera aktuellt stycke manuellt\n"
 "? - visa hjälp\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Inget föregående stycke"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Inget följande stycke"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Inga andra stycken att gå till"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "gå till vilket stycke (<ret> för att se fler)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "gå till vilket stycke? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Ogiltigt siffervärde: \"%s\""
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Beklagar, det finns bara %d stycke."
 msgstr[1] "Beklagar, det finns bara %d stycken."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Inga andra stycken att söka efter"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "sök efter reguljärt uttryck? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Felaktigt format på reguljärt sökuttryck %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Inga stycken motsvarar givet mönster"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Beklagar, kan inte dela stycket"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Dela i %d stycken."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Beklagar, kan inte redigera stycket"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "\"git apply\" misslyckades"
 
@@ -797,7 +798,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Avslutar på grund av olöst konflikgt."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Du har inte avslutat sammanslagningen (MERGE_HEAD finns)."
 
@@ -1189,8 +1190,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s har typen %o, förväntade %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "ogiltig sökväg \"%s\""
@@ -1280,7 +1281,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "kan inte lägga till cachepost för %s"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "misslyckades skriva till \"%s\""
@@ -1370,7 +1371,7 @@
 msgstr[0] "%d rad applicerade efter att ha rättat fel i blanksteg."
 msgstr[1] "%d rader applicerade efter att ha rättat fel i blanksteg."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Kunde inte skriva ny indexfil"
 
@@ -1382,7 +1383,7 @@
 msgid "apply changes matching the given path"
 msgstr "tillämpa ändringar som motsvarar given sökväg"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "antal"
 
@@ -1448,9 +1449,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "se till att åtminstone <n> rader sammanhang är lika"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "åtgärd"
@@ -1480,8 +1481,8 @@
 msgstr "tillåt överlappande stycken"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "var pratsam"
 
@@ -1493,7 +1494,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "lite inte på antalet linjer i styckehuvuden"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "rot"
 
@@ -1535,7 +1536,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "sökvägen för lång (%d tecken, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "fel i deflate (%d)"
@@ -1570,13 +1571,13 @@
 msgstr "kan inte läsa %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "sökvägsangivelsen \"%s\" motsvarade inte några filer"
@@ -1618,7 +1619,7 @@
 msgid "archive format"
 msgstr "arkivformat"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "prefix"
 
@@ -1629,7 +1630,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1660,7 +1661,8 @@
 msgstr "visa understödda arkivformat"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "arkiv"
 
@@ -1668,7 +1670,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "hämta arkivet från fjärrarkivet <arkiv>"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "kommando"
@@ -1855,11 +1857,11 @@
 "--reverse och --first-parent tillsammans kräver att du anger senaste "
 "incheckningen"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "misslyckades skapa revisionstraversering"
 
@@ -2023,118 +2025,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD i arbetskatalogen %s har inte uppdaterats"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "okänd hashningsalgoritm för paket (bundle): \"%s\""
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "okänd kapabilitet \"%s\""
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' ser inte ut som en v2- eller v3-paket-fil (bundle)"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "okänt huvud: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "kunde inte öppna \"%s\""
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Arkivet saknar dessa nödvändiga incheckningar:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "behöver ett arkiv för att verifiera ett paket (bundle)."
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Paketet (bundlen) innehåller denna referens:"
 msgstr[1] "Paketet (bundlen) innehåller dessa %d referenser:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Paketet (bundlen) beskriver en komplett historik."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Paketet (bundlen) kräver denna referens:"
 msgstr[1] "Paketet (bundlen) kräver dessa %d referenser:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "kan inte duplicera pakethandtag"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Kunde inte starta pack-objects"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects misslyckades"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referensen \"%s\" exkluderas av argumenten till rev-list"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "version %d för paket (bundle) stöds ej"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "kan inte skriva paket (bundle) med version %d med algoritmen %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "okänt argument: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Vägrar skapa ett tomt paket (bundle)."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kan inte skapa \"%s\""
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack dog"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "avslutande stycke-id förekommer tidigare än förväntat"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "felaktigt stycke-offset %<PRIx64> och %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "dubblerat stycke-ID %<PRIx32> upptäckt"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "avslutande stycke har id %<PRIx32> som inte är noll"
@@ -2202,12 +2204,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "incheckningsgraf kräver spillgenerationsdata, men har ingen"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "kunde inte tolka incheckningen %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "kunde inte hämta typ för objektet %s"
@@ -2269,7 +2271,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "kunde inte skriva korrekt antal bas-graf-id:n"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "kunde inte skapa inledande kataloger för %s"
@@ -2319,59 +2321,60 @@
 msgid "too many commits to write graph"
 msgstr "för många incheckningar för att skriva graf"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
-"filen med incheckningsgraf har felaktig checksumma och är troligtvis trasig"
+"filen med incheckningsgraf har felaktig kontrollsumma och är troligtvis "
+"trasig"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "incheckningsgrafen har felaktig OID-ordning: %s så %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "incheckningsgrafen har felaktig utbredningsvärde: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "kunde inte tolka incheckning %s från incheckningsgraf"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Bekräftar incheckningar i incheckningsgrafen"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "misslyckades tolka incheckning %s från objektdatabasen för incheckningsgraf"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "rot-trädets OID för incheckningen %s i incheckningsgrafen är %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "incheckningsgrafens föräldralista för incheckningen %s är för lång"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "incheckningsgrafens förälder för %s är %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "incheckningsgrafens föräldralista för incheckningen %s avslutas för tidigt"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2379,7 +2382,7 @@
 "incheckningsgrafen har generationsnummer noll för incheckningen %s, men icke-"
 "noll på annan plats"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2387,22 +2390,22 @@
 "incheckningsgrafen har generationsnummer skilt från noll för incheckningen "
 "%s, men noll på annan plats"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 "incheckningsgrafens generation för incheckningen %s är %<PRIuMAX> < "
 "%<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "incheckningsdatumet för incheckningen %s i incheckningsgrafen är %<PRIuMAX> !"
 "= %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "kunde inte tolka %s"
@@ -2693,7 +2696,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "måste vara en av nothing, matching, simple, upstream eller current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "felaktig paketkomprimeringsgrad %d"
@@ -2713,110 +2716,111 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "kan inte slå upp konfigurerings-bloben \"%s\""
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "kunde inte tolka %s"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "kan inte tolka kommandoradskonfiguration"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "okänt fel uppstod vid läsning av konfigurationsfilerna"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Felaktigt %s: \"%s\""
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
-msgstr "värdet \"%d\" för splitIndex.maxPercentage borde vara mellan 0 och 100"
+msgstr ""
+"värdet \"%d\" för splitIndex.maxPercentChange borde vara mellan 0 och 100"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "kunde inte tolka värdet \"%s\" från kommandoradskonfiguration"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "felaktig konfigurationsvariabel \"%s\" i filen \"%s\" på rad %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "felaktigt sektionsnamn \"%s\""
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s har flera värden"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "kan inte skriva nya konfigurationsfilen \"%s\""
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "kunde inte låsa konfigurationsfilen %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "öppnar %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "ogiltigt mönster: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "ogiltig konfigurationsfil: \"%s\""
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat misslyckades på %s"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "kunde inte utföra mmap på \"%s\""
+msgid "unable to mmap '%s'%s"
+msgstr "kunde inte utföra mmap på \"%s\"%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod misslyckades på %s"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "kunde inte skriva konfigurationsfilen %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "kunde inte ställa in \"%s\" till \"%s\""
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "kunde inte ta bort inställning för \"%s\""
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "felaktigt namn på stycke: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "värde saknas för \"%s\""
@@ -2995,7 +2999,7 @@
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Kontrollerar konnektivitet"
 
@@ -3116,7 +3120,7 @@
 msgid "path name too long for external filter"
 msgstr "sökvägen för lång för externt filter"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3125,16 +3129,16 @@
 "externt filter \"%s\" är inte längre tillgängligt trots att alla sökvägar "
 "inte har filtrerats"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false är inte giltig teckenkodning för arbetskatalogen"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: \"clean\"-filtret \"%s\" misslyckades"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: \"smudge\"-filtret \"%s\" misslyckades"
@@ -3259,36 +3263,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "Markerade %d öar, klar.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "okänt värde för --diff-merges: %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base fungerar inte med intervall"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base fungerar bara med incheckningar"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "kan inte hämta HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "ingen sammanslagningsbas hittades"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "flera sammanslagningsbaser hittades"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<flaggor>] <sökväg> <sökväg>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3312,7 +3316,7 @@
 "'dimmed-zebra', 'plain'"
 msgstr ""
 "färginställningen för flyttade block måste vara en av \"no\", \"default\", "
-"\"blocks\", \"zebra\", \"dimmed_zebra\", \"plain\""
+"\"blocks\", \"zebra\", \"dimmed-zebra\", \"plain\""
 
 #: diff.c:325
 #, c-format
@@ -3346,35 +3350,50 @@
 "Hittade fel i konfigurationsvariabeln \"diff.dirstat\":\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "extern diff dog, stannar vid %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
-msgstr "--name-only, --name-status, -check och -s är ömsesidigt uteslutande"
+msgstr "--name-only, --name-status, --check och -s är ömsesidigt uteslutande"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S och --find-object är ömsesidigt uteslutande"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G och --pickaxe-regex är ömsesidigt uteslutande, använd --pickaxe-regex med "
+"-S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all och --find-object är ömsesidigt uteslutande, använd --pickaxe-"
+"all med -G och -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow kräver exakt en sökvägsangivelse"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "ogiltigt värde för --stat: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s förväntar ett numeriskt värde"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3383,42 +3402,42 @@
 "Misslyckades tolka argument till flaggan --dirstat/-X;\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "okänd ändringsklass \"%c\" i --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "okänt värde efter ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "kunde inte slå upp \"%s\""
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s förväntar formen <n>/<m>"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s förväntar ett tecken, fick \"%s\""
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "felaktigt argument till --color-moved: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "ogiltigt läge %s\" i --color-moved-ws"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3426,154 +3445,154 @@
 "flaggan diff-algorithm godtar\"myers\", \"minimal\", \"patience\" och "
 "\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "ogiltigt argument för %s"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "ogiltigt reguljärt uttryck angavs för -I: \"%s\""
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "misslyckades tolka argument till flaggan --submodule: \"%s\""
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "felaktigt argument --word-diff: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Formatflaggor för diff-utdata"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "skapar patch"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "undertryck diff-utdata"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "skapa diffar med <n> rader sammanhang"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "generera diff i råformat"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "synonym till \"-p --raw\""
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "synonym till \"-p --stat\""
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "maskinläsbar --stat"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "skriv bara ut den sista raden för --stat"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "skriv ut distributionen av relativa mängder ändringar för varje underkatalog"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonym för --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonym för --dirstat=filer,param1,param2..."
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "varna om ändringar introducerar konfliktmarkörer eller blankstegsfel"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "kortfattad summering såsom skapade, namnbyten och ändrade lägen"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "visa endast namnen på ändrade filer"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "visa endast namn och status för ändrade filer"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<bredd>[,<namn-bredd>[,<antal>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "skapa diffstat"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<bredd>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "generera en diffstat med given bredd"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "generera en diffstat med given namnbredd"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "generera en diffstat med given grafbredd"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<antal>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "generera diffstat med begränsade rader"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "skapa kompakt översikt i diffstat"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "skapa en binärdiff som kan appliceras"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "visa fullständiga objektnamn i \"index\"-rader för läget både före och efter"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "visa färgad diff"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<typ>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3581,7 +3600,7 @@
 "ljusmarkera blankstegsfel i \"context\" (sammanhang), \"old\" (gamla) eller "
 "\"new\" (nya) rader i diffen"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3589,87 +3608,87 @@
 "skriv inte om sökvägsnamn och använd NUL-tecken som fältseparerare i --raw "
 "eller --numstat"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<prefix>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "visa givet källprefix istället för \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "visa givet målprefix istället för \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "lägg till ytterligare prefix på alla rader i utdata"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "visa inte käll- eller målprefix"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "visa sammnhang mellan diff-stycken upp till angivet antal rader"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<tecken>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "ange tecken för att ange ny rad istället för \"+\""
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "ange tecken för att ange gammal rad istället för \"-\""
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "ange tecken för att ange sammanhang istället för \" \""
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Diff-namnbytesflaggor"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "dela upp kompletta omskrivningar till ta bort och skapa-par"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "detektera namnändringar"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "ta bort för-version för borttagningar"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "detektera kopior"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "använd oförändrade som källa för att hitta kopior"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "inaktivera detektering av namnbyten"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "använd tomma blob:ar som namnändringskälla"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "fortsätt lista historiken för en fil bortom namnändringar"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3677,163 +3696,163 @@
 "förhindra namnbyte/kopie-detektering om antalet namnbyten/kopior överskriver "
 "given gräns"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Alternativ för diff-algoritm"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "skapa minsta möjliga diff"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorera blanktecken vid radjämförelse"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorera ändringar i antal blanktecken vid radjämförelse"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorera blanktecken vid radslut"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "ignorera CR-tecken vid radslut"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorera ändringar i rader som är helt blanka"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<reguttr>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "ignorera ändringar där samtliga rader motsvarar <reguttr>"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heuristik för att flytta diff-gränser för lättare läsning"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"patience diff\""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"histogram diff\""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<algoritm>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "välj en diff-algoritm"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<text>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"anchored diff\""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<läge>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "visa orddiff, där <läge> avgränsar ändrade ord"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "använd <reguttr> för att bestämma vad som är ett ord"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "motsvarar --word-diff=color --word-diff-regex=<reguttr>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "flyttade kodrader färgas på annat sätt"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "hur blanktecken ignoreras i --color-moved"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Andra diff-flaggor"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "vid start från underkatalog, uteslut ändringar utanför och visa relativa "
 "sökvägar"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "hantera alla filer som text"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "växla två indatafiler, vänd diffen"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "avsluta med 1 vid ändringar, annars 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "slå av alla utdata från programmet"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "tillåt köra en extern diff-hjälpare"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr "kör externt textkonverteringsfiler när binärfiler jämförs"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<när>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorera ändringar i undermoduler när diffen skapas"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "ange hur ändringar i undermoduler visas"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "dölj \"git add -N\"-poster från indexet"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "tolka \"git add -N\"-poster som äkta i indexet"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<sträng>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "se efter ändringar som ändrar antalet förekomster av angiven sträng"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3841,66 +3860,66 @@
 "se efter ändringar som ändrar antalet förekomster av angivet reguljärt "
 "uttryck"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "visa alla ändringar i ändringsuppsättningen med -S eller -G"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "tolka <sträng> i -S som utökade POSIX-reguljära uttryck"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "styr ordningen i vilken filer visas i utdata"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<sökväg>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "visa ändringen i angiven sökväg först"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "hoppa över utdata fram till angiven sökväg"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<objekt-id>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "se efter ändringar som ändrar antalet förekomster av angivet objekt"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "välj filter efter diff-typ"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<fil>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Skriv utdata till en specifik fil"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"onöjaktig namnbytesdetektering utfördes inte på grund av för många filer."
+"uttömmande namnbytesdetektering hoppades över på grund av för många filer."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr "hittade bara kopior från ändrade sökvägar på grund av för många filer."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3912,7 +3931,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "kunde inte läsa orderfilen \"%s\""
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Utför onöjaktig namnbytesdetektering"
 
@@ -3921,61 +3940,61 @@
 msgid "No such path '%s' in the diff"
 msgstr "Sökvägen \"%s\" finns inte i diffen"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "sökvägsangivelsen \"%s\" motsvarade inte några av git kända filer"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "okänt mönster: %s"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "okänt negativt mönster: %s"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "din \"sparse-checkout\"-fil kan ha problem: mönstret \"%s\" förekommer flera "
 "gånger"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "inaktiverar konmönstermatchning"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "kan inte använda %s som exkluderingsfil"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "kunde inte öppna katalogen \"%s\""
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "misslyckades hämta kärnans namn och information"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "ospårad cache är inaktiverad på systemet eller platsen"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "indexfilen trasig i arkivet %s"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "kunde inte skapa kataloger för %s"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "kunde inte migrera git-katalog från \"%s\" till \"%s\""
@@ -3985,11 +4004,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "tips: Väntar på att textredigeringsprogrammet ska stänga filen...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Filtrerar innehåll"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "kunde inte ta status på filen \"%s\""
@@ -3999,7 +4018,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "felaktig git-namnrymdssökväg \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "kunde inte ställa in GIT_DIR till \"%s\""
@@ -4164,9 +4183,9 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "källarkivet är grunt, tillåter inte kloning."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
-msgstr "git fetch-patch: hämtning misslyckades."
+msgstr "git fetch-pack: hämtning misslyckades."
 
 #: fetch-pack.c:1242
 #, c-format
@@ -4186,7 +4205,7 @@
 msgid "Server supports filter"
 msgstr "Servern stöder filter"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "kunde inte skriva anrop till fjärren"
 
@@ -4243,24 +4262,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: förväntade svarsavslutningspaket"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "inget motsvarande fjärrhuvud"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "fjärren sände inte alla nödvändiga objekt"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "oväntat \"ready\" från fjärr"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "ingen sådan fjärreferens: %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Servern tillåter inte förfrågan om ej tillkännagivet objekt %s"
@@ -4280,8 +4299,8 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
-msgstr "ignorera felaktig färg \"%.*s\" i log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "ignorerade felaktig färg \"%.*s\" i log.graphColors"
 
 #: grep.c:531
 msgid ""
@@ -4291,18 +4310,18 @@
 "angivet mönster innehåller NULL-byte (via -f <fil>). Detta stöds endast med -"
 "P under PCRE v2"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "\"%s\" kunde inte läsa %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "misslyckades ta status på \"%s\""
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "\"%s\": kort läsning"
@@ -4541,7 +4560,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "\"%s\" för \"object:type=<typ>\" är inte en giltig objekttyp"
 
 #: list-objects-filter-options.c:124
@@ -4586,7 +4605,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "posten \"%s\" i trädet %s har blob-läge, men är inte en blob"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "kunde inte läsa in rot-trädet för incheckningen %s"
@@ -4634,34 +4653,34 @@
 msgid "bad action '%s' for '%s'"
 msgstr "felaktig funktion \"%s\" för \"%s\""
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Misslyckades slå ihop undermodulen %s (ej utcheckad)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Misslyckades slå ihop undermodulen %s (incheckningar saknas)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 "Misslyckades slå ihop undermodulen %s (incheckningar följer inte "
 "sammanslagningsbasen)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Obs: Snabbspolar undermodulen %s till %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "Misslyckades slå ihop undermodulen %s"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4670,7 +4689,7 @@
 "Misslyckades slå ihop undermodulen %s, men en möjlig lösning finns:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4687,7 +4706,7 @@
 "\n"
 "vilket godtar lösningen.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4697,21 +4716,21 @@
 "finns:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Misslyckades exekvera intern sammanslagning"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Kunde inte lägga till %s till databasen"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Slår ihop %s automatiskt"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4720,7 +4739,7 @@
 "KONFLIKT (implicit nämnändrad kat): Befintlig fil/kat vid %s är i vägen för "
 "implicit namnändrad(e) katalog(er) som lägger dit följande sökväg(ar): %s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4729,7 +4748,7 @@
 "KONFLIKT (implicit namnändrad kat): Kan inte koppla mer än en sökväg till "
 "%s; implicita katalognamnändringar försökte lägga följande sökvägar där: %s"
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4740,7 +4759,7 @@
 "den har namnbytts till flera andra kataloger, utan att någon destination "
 "fick en majoritet av filerna."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4749,7 +4768,7 @@
 "VARNING: Undviker att applicera namnändring %s -> %s på %s, då %s själv har "
 "bytt namn."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4758,7 +4777,7 @@
 "Uppdaterad sökväg: %s lade till %s inuti en katalog som bytte namn i %s; "
 "flyttar den till %s."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4767,7 +4786,7 @@
 "Uppdaterad sökväg: %s bytte namn till %s i %s, inuti en katalog som bytte "
 "namn i %s; flyttar den till %s."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4776,7 +4795,7 @@
 "KONFLIKT (filplacering): %s lade till %s inuti en katalog som bytte namn i "
 "%s, föreslår att den bör flyttas till%s."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4785,13 +4804,13 @@
 "KONFLIKT (filplacering): %s bytte namn till %s i %s, inuti en katalog som "
 "bytte namn i %s; flyttar den till %s."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "KONFLIKT (namnbyte/namnbyte): %s namnbytt till %s i %s och till %s i %s."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4802,23 +4821,23 @@
 "innehållskonflikter OCH krockar med en annan sökväg; detta kan leda till "
 "nästlade konfliktmarkörer."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "KONFLIKT (namnbyte/radera): %s namnbytt till %s i %s, men borttagen i %s."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "kan inte läsa objektet %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objektet %s är inte en blob"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -4827,7 +4846,7 @@
 "KONFLIKT (fil/katalog): katalogen är i vägen för %s från %s; flyttar den "
 "till %s istället."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -4836,7 +4855,7 @@
 "KONFLIKT (olika typer): %s hade olika typer på varje sida; namnbytte bägge "
 "så att de kan protokollföras någonstans."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -4845,24 +4864,24 @@
 "KONFLIKT (olika typer): %s hade olika typer på varje sida; namnbytte den ena "
 "så att de kan protokollföras någonstans."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "innehåll"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "tillägg/tillägg"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "undermodul"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "KONFLIKT (%s): Sammanslagningskonflikt i %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4871,7 +4890,7 @@
 "KONFLIKT (ändra/radera): %s raderad i %s och ändrad i %s. Versionen %s av %s "
 "lämnad i trädet."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4883,12 +4902,12 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "samling av sammanslagningsinfo misslyckades för träden %s, %s, %s"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4898,109 +4917,109 @@
 "sammanslagning:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Redan à jour."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(felaktig incheckning)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr ""
-"add_cahceinfo misslyckades för sökvägen \"%s\"; avslutar sammanslagningen."
+"add_cacheinfo misslyckades för sökvägen \"%s\"; avslutar sammanslagningen."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 "add_cacheinfo misslyckades uppdatera för sökvägen \"%s\"; avslutar "
 "sammanslagningen."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "misslyckades skapa sökvägen \"%s\"%s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Tar bort %s för att göra plats för underkatalog\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": kanske en K/F-konflikt?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "vägrar förlora ospårad fil vid \"%s\""
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "kan inte läsa objektet %s: \"%s\""
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "blob förväntades för %s \"%s\""
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "misslyckades öppna \"%s\": %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "misslyckades skapa symboliska länken \"%s\": %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "vet inte hur %06o %s \"%s\" ska hanteras"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Snabbspolar undermodulen %s till följande incheckning:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Snabbspolar undermodulen %s"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "Misslyckades slå ihop undermodulen %s (sammanslagning efter incheckningar "
 "hittades inte)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Misslyckades slå ihop undermodulen %s (ej snabbspolning)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Hittade en möjlig lösning av sammanslagning för undermodulen:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr ""
 "Misslyckades slå ihop undermodulen %s (flera sammanslagningar hittades)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr "Fel: Vägrar förlora ospårad fil vid %s; skriver till %s istället."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5009,7 +5028,7 @@
 "KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
 "i trädet."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5018,7 +5037,7 @@
 "KONFLIKT (%s/radera): %s raderad i %s och %s till %s i %s. Versionen %s av "
 "%s lämnad i trädet."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5027,7 +5046,7 @@
 "KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
 "i trädet vid %s."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5036,40 +5055,40 @@
 "KONFLIKT (%s/radera): %s raderad i %s och %s till %s i %s. Versionen %s av "
 "%s lämnad i trädet vid %s."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "namnbyte"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "namnbytt"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Vägrar förlora lortig fil vid \"%s\""
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr "Vägrar förlora ospårad fil vid %s, trots att den är i vägen."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr "KONFLIKT (namnbyte/tillägg): Namnbyte %s->%s i %s. Lade till %s i %s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s är en katalog i %s lägger till som %s istället"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr "Vägrar förlora ospårad fil vid %s; lägger till som %s istället"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5078,17 +5097,17 @@
 "KONFLIKT (namnbyte/namnbyte): Namnbyte \"%s\"->\"%s\" på grenen \"%s\" "
 "namnbyte \"%s\"->\"%s\" i \"%s\"%s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (lämnad olöst)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbyte %s->%s i %s. Namnbyte %s->%s i %s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5099,7 +5118,7 @@
 "katalogen %s bytte namn till flera andra kataloger, utan att någon "
 "destination fick en majoritet av filerna."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5108,79 +5127,79 @@
 "KONFLIKT (namnbyte/namnbyte): Namnbytt katalog %s->%s i %s. Namnbytt katalog "
 "%s->%s i %s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "ändra"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "ändrad"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Hoppade över %s (sammanslagen samma som befintlig)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Lägger till som %s istället"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "Tar bort %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "fil/katalog"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "katalog/fil"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "KONFLIKT (%s): Det finns en katalog med namnet %s i %s. Lägger till %s som %s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "Lägger till %s"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "KONFLIKT (tillägg/tillägg): Sammanslagningskonflikt i %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "sammanslagning av träden %s och %s misslyckades"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Slår ihop:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "hittade %u gemensam förfader:"
 msgstr[1] "hittade %u gemensamma förfäder:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "sammanslagningen returnerade ingen incheckning"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Kunde inte tolka objektet \"%s\""
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Kunde inte skriva indexet."
@@ -5189,8 +5208,8 @@
 msgid "failed to read the cache"
 msgstr "misslyckades läsa cachen"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "kunde inte skriva ny indexfil"
@@ -5264,107 +5283,115 @@
 msgid "failed to locate object %d in packfile"
 msgstr "misslyckades hitta objekt %d i paketfilen"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "kan inte spara reverse-index-fil"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "ignorerar befintlig multi-pack-index; felaktig kontrollsumma"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Lägger till paketfiler till multi-pack-index"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "såg inte paketfilen %s som skulle kastas"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "okänt föredraget paket: %s"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "föredraget paket \"%s\" har löpt ut"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "inga paketfiler att indexera."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "misslyckades ta bort %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "misslyckades städa multi-pack-index på %s"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-indexfilen finns, men kunde inte tolkas"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "felaktig kontrollsumma"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Ser efter refererade packfiler"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr ""
 "oid-utbredning i fel ordning: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "midx saknar oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Bekräftar OID-ordning i multi-pack-index"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid-uppslagning i fel ordning: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Sorterar objekt efter packfil"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Bekräftar offset för objekt"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "misslyckades läsa paketpost för oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "misslyckades läsa paketindex för paketfil %s"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "felaktigt objekt-offset för oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Räknar refererade objekt"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Ser efter och tar bort orefererade packfiler"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "kunde inte starta pack-objects"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "kunde inte avsluta pack-objects"
 
@@ -5428,266 +5455,267 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr "objektkatalogen %s finns inte; se .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "kunde inte normalisera supplerande objektsökväg: %s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s: ignorerar supplerande objektlager, för djup nästling"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "kan inte normalisera objektkatalogen: %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "kan inte utföra \"fdopen\" på suppleantlåsfil"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "kan inte läsa \"alternates\"-filen"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "kan inte flytta ny \"alternates\"-fil på plats"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "sökvägen \"%s\" finns inte"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "referensarkivet \"%s\" som en länkad utcheckning stöds inte ännu."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "referensarkivet \"%s\" är inte ett lokalt arkiv."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "referensarkivet \"%s\" är grunt"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "referensarkivet \"%s\" är ympat"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "felaktig rad vid tolkning av supplerande referenser: %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "försök att utföra \"mmap\" på %<PRIuMAX> över gränsen %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap misslyckades"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap misslyckades%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "objektfilen %s är tom"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "trasigt löst objekt \"%s\""
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "skräp i slutet av löst objekt \"%s\""
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "felaktig objekttyp"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "kan inte packa upp %s-huvud med --allow-unknown-type"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "kan inte packa upp %s-huvudet"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "kan inte tolka %s-huvud med --allow-unknown-type"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "kan inte tolka %s-huvud"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "misslyckades läsa objektet %s"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "ersättningen %s hittades inte för %s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "löst objekt %s (lagrat i %s) är trasigt"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "packat objekt %s (lagrat i %s) är trasigt"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "kunde inte skriva filen %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "kan inte sätta behörigheten till \"%s\""
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "fel vid skrivning av fil"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "fel vid stängning av fil för löst objekt"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 "otillräcklig behörighet för att lägga till objekt till arkivdatabasen %s"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "kan inte skapa temporär fil"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "kunde inte skriva fil för löst objekt"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "kan inte utföra \"deflate\" på nytt objekt %s (%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "\"deflateend\" på objektet %s misslyckades (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "förvirrad av instabil objektkälldata för %s"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "\"utime()\" misslyckades på %s"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "kan inte läsa objekt för %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "trasik incheckning"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "trasig tagg"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "läsfel vid indexering av %s"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "för lite lästes vid indexering av %s"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s: misslyckades lägga in i databasen"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s: filtypen stöds ej"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s är inte ett giltigt objekt"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s är inte ett giltigt \"%s\"-objekt"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "kan inte öppna %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "hash stämmer inte för %s (förväntade %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "kan inte utföra \"mmap\" för %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "kan inte packa upp huvud för %s"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "kan inte tolka huvud för %s"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "kan inte tolka innehåll i %s"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "kort objekt-ID %s är tvetydigt"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Kandidaterna är:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5709,22 +5737,22 @@
 "Undersök referenserna och ta kanske bort dem. Stäng av meddelandet\n"
 "genom att köra \"git config advice.objectNameWarning false\""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "loggen för \"%.*s\" räcker bara tillbaka till %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "loggen för \"%.*s\" har bara %d poster"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "Sökvägen \"%s\" finns på disken, men inte i \"%.*s\""
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5733,12 +5761,12 @@
 "sökvägen \"%s\" finns, men inte i \"%s\"\n"
 "tips: Menade du \"%.*s:%s\", även känd som \"%.*s:./%s\"?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "sökvägen \"%s\" finns inte i \"%.*s\""
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5747,7 +5775,7 @@
 "sökvägen \"%s\" finns i indexet men inte i etapp %d\n"
 "tips: Menade du \":%d:%s\"?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5756,21 +5784,21 @@
 "sökvägen \"%s\" finns i indexet, men inte i \"%s\"\n"
 "tips: Menade du \":%d:%s\", även känd som \":%d:./%s\"?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "sökvägen \"%s\" finns på disk, men inte i indexet"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "sökvägen \"%s\" finns inte (varken i disken eller i indexet)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "relativ sökväg kan inte användas utanför arbetskatalogen"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "felaktigt objektnamn \"%.*s\"."
@@ -5785,27 +5813,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "objektet %s är en %s, inte en %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "objektet %s har okänd typ-id %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "kunde inte tolka objektet: %s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "hashvärde stämmer inte överens %s"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "kan inte hämta storlek på %s"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "kan inte hämta diskanvändning för %s"
@@ -5858,12 +5886,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset före slutet av packfilen (trasig .idx?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "paketfilen %s kunde inte kopplas%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "offset före slutet av packindex för %s (trasigt index?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "offset borton slutet av packindex för %s (trunkerat index?)"
@@ -6068,8 +6101,8 @@
 msgstr "kan inte skriva delim-paket"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "kan inte skriva tillståndslöst avdelarpaket"
+msgid "unable to write response end packet"
+msgstr "kunde inte skriva svarsavslutningspaket"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6128,20 +6161,20 @@
 msgid "unable to parse --pretty format"
 msgstr "kunde inte tolka format för --pretty"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote: kunde inte starta (fork) underprocessen för fetch"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "promisor-remote: kunde skriva till underprocessen för fetch"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 "promisor-remote: kunde inte stänga standard in för underprocessen för fetch"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "kontraktsfjärr kan inte börja med \"/\": %s"
@@ -6162,7 +6195,7 @@
 msgid "could not read `log` output"
 msgstr "kunde inte läsa utdata från \"log\""
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "kunde inte tolka incheckningen \"%s\""
@@ -6181,64 +6214,64 @@
 msgid "could not parse git header '%.*s'"
 msgstr "kunde inte tolka git-huvudet \"%.*s\""
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "misslyckades skapa diff"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only och --right-only är ömsesidigt uteslutande"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "kunde inte tolka loggen för \"%s\""
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "lägger inte till filalias \"%s\" (\"%s\" finns redan i indexet)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "kan inte skapa tom blob i objektdatabasen"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 "%s: kan bara lägga till vanliga filer, symboliska länkar och git-kataloger"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "\"%s\" har inte någon utcheckad incheckning"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "kan inte indexera filen \"%s\""
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "kan inte lägga till \"%s\" till indexet"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "kan inte ta status på \"%s\""
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "\"%s\" finns både som en fil och en katalog"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Uppdatera indexet"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6247,7 +6280,7 @@
 "index.version satt, men värdet är ogiltigt.\n"
 "Använder version %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6256,143 +6289,143 @@
 "GIT_INDEX_VERSION satt, men värdet är ogiltigt.\n"
 "Använder version %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "felaktig signatur 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "felaktig indexversion %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "felaktig sha1-signatur för indexfil"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "index använder filtillägget %.4s, vilket vi inte förstår"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "ignorerar filtillägget %.4s"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "okänt format 0x%08x på indexpost"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "felformat namnfält i indexet, nära sökvägen \"%s\""
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "osorterade köposter i index"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "flera köposter för den sammanslagna filen \"%s\""
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "osorterade köposter för \"%s\""
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "indexfilen trasig"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
-msgstr "kunde inte läsa in cache_entries-tråden: %s"
+msgstr "kunde inte skapa tråd för load_cache_entries: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
-msgstr "kunde inte utföra join på cache_entries-tråden: %s"
+msgstr "kunde inte ansluta till tråden för load_cache_entries: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: öppning av indexfilen misslyckades"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: kan inte ta startus på det öppna indexet"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: indexfilen mindre än förväntat"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: kan inte koppla indexfilen"
+msgid "%s: unable to map index file%s"
+msgstr "%s: kan inte koppla indexfilen%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "kunde inte skapa load_index_extensions-tråden: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "kunde inte utföra join på load_index_extensions-tråden: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "kunde inte uppdatera delat index \"%s\""
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "trasigt index, förväntade %s i %s, fick %s"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "kunde inte stänga \"%s\""
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "misslyckades omvandla till glest index"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "kunde inte ta status på \"%s\""
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "kunde inte öppna git-katalog: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "misslyckades ta bort länken: %s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "kan inte rätta behörighetsbitar på \"%s\""
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: kan inte återgå till kö 0"
@@ -6516,8 +6549,8 @@
 "Ombaseringen kommer dock att avbrytas om du tar bort allting.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "kunde inte skriva \"%s\""
@@ -6564,7 +6597,7 @@
 msgid "could not read '%s'."
 msgstr "kunde inte läsa \"%s\"."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "försvunnen"
 
@@ -6583,248 +6616,248 @@
 msgid "ahead %d, behind %d"
 msgstr "före %d, bakom %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "förväntat format: %%(color:<color>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "okänd färg: %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Heltalsvärde förväntades refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Heltalsvärde förväntades refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "okänt %%(%s)-argument: %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) tar inte argument"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "okänt %%(objectsize)-argument: %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) tar inte argument"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) tar inte argument"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "okänt %%(subject)-argument: %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "förvändate %%(trailers:nyckel=<värde>)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "okänt %%(trailers)-argument: %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "positivt värde förväntat contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "okänt %%(contents)-argument: %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "positivt värde förväntat \"%s\" i %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "okänt argument \"%s\" i %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "okänd e-postalternativ: %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "förväntat format: %%(align:<bredd>,<position>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "okänd position:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "okänd bredd:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "okänt %%(align)-argument: %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "positiv bredd förväntad med atomen %%(align)"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "okänt %%(if)-argument: %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "felformat fältnamn: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "okänt fältnamn: %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 "inte ett git-arkiv, men fältet \"%.*s\" kräver tillgång till objektdata"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "format: atomen %%(if) använd utan en %%(then)-atom"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "format: atomen %%(then) använd utan en %%(if)-atom"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "format: atomen %%(then) använd mer än en gång"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "format: atomen %%(then) använd efter %%(else)"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "format: atomen %%(else) använd utan en %%(if)-atom"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "format: atomen %%(else) använd utan en %%(then)-atom"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "format: atomen %%(else) använd mer än en gång"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "format: atomen %%(end) använd utan motsvarande atom"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "felformad formatsträng %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(ingen gren, ombaserar %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(ingen gren, ombaserar frånkopplat HEAD %s)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(ingen gren, \"bisect\" startad på %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD frånkopplat vid %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD frånkopplat från %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(ingen gren)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "objektet %s saknas för %s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer misslyckades på %s för %s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "felformat objekt vid \"%s\""
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorerar referens med trasigt namn %s"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorerar trasig referens %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "format: atomen %%(end) saknas"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "felformat objektnamn %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "flaggan \"%s\" måste peka på en incheckning"
@@ -6854,7 +6887,7 @@
 "\n"
 "\tgit config --global init.defaultBranch <namn>\n"
 "\n"
-"Namn som ofta används instället för \"master\" är \"main\", \"trunk\" och\n"
+"Namn som ofta används istället för \"master\" är \"main\", \"trunk\" och\n"
 "\"development\". Den nyskapade grenen kan ges nytt namn med kommandot:\n"
 "\n"
 "\tgit branch -m <namn>\n"
@@ -7280,8 +7313,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "Sparade förhandsbild för \"%s\""
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
@@ -7319,38 +7352,38 @@
 msgid "could not determine HEAD revision"
 msgstr "kunde inte bestämma HEAD-revision"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "kunde inte hitta trädet för %s."
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<paketfil> stöds inte längre"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "din nuvarande gren verkar vara trasig"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "din nuvarande gren \"%s\" innehåller ännu inte några incheckningar"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L stöder ännu inte andra diff-format än -p och -s"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "misslyckades öppna /dev/null"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "kan inte skapa asynkron tråd: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7385,15 +7418,15 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "sänd-förhandling misslyckades; fortsätter ändå med sändningen"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "mottagarsidan stöder inte arkivets hashningsalgoritm"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr "mottagarsidan stöder inte push med --signed"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -7401,11 +7434,11 @@
 "sänder inte push-certifikat eftersom mottagarsidan inte stlder push med --"
 "signed"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "mottagarsidan stöder inte push med --atomic"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "mottagarsidan stöder inte push-flaggor"
 
@@ -7465,7 +7498,7 @@
 msgstr "kunde inte låsa \"%s\""
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "kunde inte skriva till \"%s\""
@@ -7476,7 +7509,7 @@
 msgstr "kunde inte skriva radslut till \"%s\""
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "misslyckades färdigställa \"%s\""
@@ -7526,8 +7559,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "kan inte ta bort citering av värdet \"%s\""
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "kunde inte öppna \"%s\" för läsning"
@@ -7675,7 +7708,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s är inte en incheckning!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "kunde inte tolka HEAD:s incheckning"
 
@@ -7683,7 +7716,7 @@
 msgid "unable to parse commit author"
 msgstr "kunde inte tolka incheckningens författare"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree misslyckades skriva ett träd"
 
@@ -7701,12 +7734,13 @@
 msgid "corrupt author: missing date information"
 msgstr "trasig författare: saknar datuminformation"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "kunde inte skriva incheckningsobjekt"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "kunde inte uppdatera %s"
@@ -7758,7 +7792,7 @@
 msgid "need a HEAD to fixup"
 msgstr "behöver en HEAD-incheckning att rätta"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "kunde inte läsa HEAD"
 
@@ -7899,7 +7933,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "trasigt manus: \"%s\""
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "den angivna uppsättningen incheckningar är tom"
 
@@ -7930,7 +7964,7 @@
 msgid "could not lock HEAD"
 msgstr "kunde inte låsa HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "ingen \"cherry-pick\" eller \"revert\" pågår"
 
@@ -7942,7 +7976,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "kan inte avbryta från en gren som ännu inte är född"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "kan inte öppna \"%s\""
@@ -7992,7 +8026,7 @@
 "har du redan checkat in?\n"
 "testa \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "kan inte läsa HEAD"
 
@@ -8076,90 +8110,90 @@
 "\tgit rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "ogiltigt etikettnamn: \"%.*s\""
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "skriver fejkad rotincheckning"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "skriver squash-onto"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "kunde inte upplösa \"%s\""
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "kan inte slå ihop utan en aktuell incheckning"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "kan inte tolka \"%.*s\""
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "inget att slå samman: \"%.*s\""
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "\"octopus\"-sammanslagning kan inte köras ovanpå en [ny rot]"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "kunde inte läsa incheckningsmeddelande för \"%s\""
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "kunde inte ens försöka slå ihop \"%.*s\""
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "sammanslagning: Kunde inte skriva ny indexfil"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Kan inte utföra \"autostash\""
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Oväntat svar från stash: \"%s\""
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Kunde inte skapa katalog för \"%s\""
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Skapade autostash: %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "kunde inte utföra \"reset --hard\""
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Tillämpade autostash.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "kan inte spara %s"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8170,29 +8204,29 @@
 "Dina ändringar är säkra i stashen.\n"
 "Du kan när som helst använda \"git stash pop\" eller \"git stash drop\".\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "Tillämpning av autostash gav konflikter."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Autostash finns; skapar ny stash-post."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "kunde inte koppla från HEAD"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Stoppade på HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Stoppade på %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8213,58 +8247,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Ombaserar (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Stoppade på %s... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "okänt kommando %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "kunde inte läsa orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "kunde inte läsa \"onto\""
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "kunde inte uppdatera HEAD till %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Lyckades ombasera och uppdatera %s.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "kan inte ombasera: Du har oköade ändringar."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "kan inte lägga till incheckning som inte finns"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "ogiltig fil: \"%s\""
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "ogiltigt innehåll: \"%s\""
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8274,50 +8308,50 @@
 "Du har ändringar i arbetskatalogen som inte checkats in. Checka in dem\n"
 "först och kör sedan \"git rebase --continue\" igen."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "kunde inte skriva fil: \"%s\""
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "kunde inte ta bort CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "kunde inte checka in köade ändringar."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: kan inte göra \"cherry-pick\" på typen \"%s\""
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: felaktig revision"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "kan inte ångra som första incheckning"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: flaggor som inte stöds"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script: fel när revisioner skulle förberedas"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "inget att göra"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "kunde inte hoppa över onödiga \"pick\"-kommandon"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "skriptet har redan omordnats."
 
@@ -8368,92 +8402,96 @@
 msgid "unable to set up work tree using invalid config"
 msgstr "kan inte skapa arbetskatalog med felaktig konfiguration"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "funktionen måste köras i en arbetskatalog"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Förväntade git-arkivversion <= %d, hittade %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "okända arkivutökningar hittades:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "okänd arkivutökning hittades:"
+msgstr[1] "okända arkivutökningar hittades:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "arkivversionen är 0, men utökningar som bara finns i v1 upptäcktes:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "arkivversionen är 0, men utökning som bara finns i v1 upptäcktes:"
+msgstr[1] "arkivversionen är 0, men utökningar som bara finns i v1 upptäcktes:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "fel vid öppning av \"%s\""
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "för stor för att vara en .git-fil: \"%s\""
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "fel vid läsning av %s"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "ogiltigt gitfilformat: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "ingen sökväg i gitfil: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "inte ett git-arkiv: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "\"$%s\" för stor"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "inte ett git-arkiv: \"%s\""
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "kan inte byta katalog (chdir) till \"%s\""
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "misslyckades ta status på \"%*ss%s%s\""
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Kan inte läsa aktuell arbetskatalog"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "kan inte byta till \"%s\""
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "inte ett git-arkiv (eller någon av föräldrakatalogerna): %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8463,7 +8501,7 @@
 "monteringspunkten %s)\n"
 "Stoppar vid filsystemsgräns (GIT_DISCOVERY_ACROSS_FILESYSTEM är inte satt)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8472,27 +8510,27 @@
 "problem med filläges-värdet i core.sharedRepository (0%.3o).\n"
 "Ägaren av filerna måste alltid ha läs- och skrivbehörighet."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "misslyckades öppna /dev/null eller \"dup\""
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "\"fork\" misslyckades"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "\"setsid\" misslyckades"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "försöker använda glest index utan \"cone\"-läge"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "kan inte uppdatera cacheträd, behåller fullt läge"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "indexposten är en katalog, men inte gles (%08x)"
@@ -8549,7 +8587,7 @@
 msgstr[0] "%u byte/s"
 msgstr[1] "%u bytes/s"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8619,7 +8657,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "felaktigt argument till --ignore-submodules: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8628,12 +8666,12 @@
 "Undermodulen i incheckning %s på sökvägen: \"%s\" krockar med en undermodul "
 "med samma namn. Hoppar över den."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "undermodulposten \"%s\" (%s) är en %s, inte en incheckning"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8642,36 +8680,36 @@
 "kunde inte köra \"git rev-list <incheckningar> --not --remotes -n 1\" i "
 "undermodulen \"%s\""
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "process för undermodulen \"%s\" misslyckades"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Misslyckades slå upp HEAD som giltig referens."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Sänder undermodulen \"%s\"\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Kunde inte sända undermodulen \"%s\"\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Hämtar undermodulen %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Kunde inte komma åt undermodulen \"%s\"\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8680,61 +8718,61 @@
 "Fel vid hämtning av undermodul:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "\"%s\" känns inte igen som ett git-arkiv"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Kunde inte köra \"git status --porcelain=2\" i undermodulen \"%s\""
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "\"git status --porcelain=2\" misslyckades i undermodulen \"%s\""
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "kunde inte starta \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "kunde inte köra \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Kunde inte ta bort inställningen core.worktree i undermodulen \"%s\""
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "kunde inte rekursera in i undermodulen \"%s\""
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "kunde inte återställa indexet i undermodul"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "undermodulen \"%s\" har ett smutsigt index"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Undermoduler \"%s\" kunde inte uppdateras."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "undermodul-gitkatalogen \"%s\" är inuti gitkatalogen \"%.*s\""
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8742,17 +8780,17 @@
 "relocate_gitdir för undermodulen \"%s\", som har mer än en arbetskatalog, "
 "stöds ej"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "kunde inte slå upp namnet för undermodulen \"%s\""
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "vägrar flytta \"%s\" till en befintlig gitkatalog"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8763,11 +8801,11 @@
 "\"%s\" till\n"
 "\"%s\"\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "kunde inte starta ls-files i .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree returnerade en oväntad returkod %d"
@@ -8804,7 +8842,7 @@
 msgid "could not read input file '%s'"
 msgstr "kunde inte läsa indatafilen \"%s\""
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "kunde inte läsa från standard in"
 
@@ -8896,7 +8934,7 @@
 msgid "invalid remote service path"
 msgstr "felaktig sökväg till fjärrtjänst"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "funktionen stöds inte av protokollet"
 
@@ -8905,7 +8943,7 @@
 msgid "can't connect to subservice %s"
 msgstr "kan inte ansluta till undertjänsten %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only kräver protokoll v2"
 
@@ -9038,46 +9076,46 @@
 msgid "could not read bundle '%s'"
 msgstr "kunde inte läsa paketet (bundlen) \"%s\""
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: ogiltig flagga för depth: \"%s\""
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "se protocol.version i \"git help config\" för mer information"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "serverflaggor kräver protokollversion 2 eller senare"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "servern stöder inte wait-for-done"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "kunde inte tolka inställningen för transport.color.*"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "stöd för protokoll v2 ännu ej implementerat"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "okänt värde för inställningen \"%s\": %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transporten \"%s\" tillåts inte"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync stöds inte längre"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9086,7 +9124,7 @@
 "Följande undermodulsökvägar innehåller ändringar som\n"
 "inte kan hittas av fjärrarna:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9113,11 +9151,11 @@
 "för att sända dem till fjärren.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Avbryter."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "kunde inte sända alla nödvändiga undermoduler"
 
@@ -9392,11 +9430,11 @@
 "sökvägar på ett okänsligt filsystem) och endast en från samma\n"
 "kollisionsgrupp finns i arbetskatalogen:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "Uppdaterar indexflaggor"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr "arbetskatalog och ospårad incheckning har dublettposter: %s"
@@ -9438,99 +9476,99 @@
 msgid "Fetching objects"
 msgstr "Hämtar objekt"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "misslyckades läsa \"%s\""
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "\"%s\" i huvudarbetskatalogen är inte arkivkatalogen"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "filen \"%s\" innehåller inte absolut sökväg till arbetskatalogen"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" finns inte"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "\"%s\" är inte en .git-fil, felkod %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "\"%s\" pekar inte tillbaka till \"%s\""
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "inte en katalog"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git är inte en fil"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ".git-filen är trasig"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ".git-filen är felaktig"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "inte en giltig sökväg"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "hittar inte arkivet; .git är inte en fil"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "hittar inte arkivet; .git-filen hänvisar inte till ett arkiv"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "hittar inte arkivet; .git-filen är trasig"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir är oläsbar"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir är felaktig"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "inte i en giltig katalog"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "gitdir-filen existerar inte"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "kunde inte läsa gitdir-filen (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "kort läsning (förväntade %<PRIuMAX> byte, läste %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "ogiltig gitdir-fil"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "gitdir-filen pekar på en ickeexisterande plats"
 
@@ -9579,11 +9617,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (använd \"git rm <fil>...\" för att ange lösning)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Ändringar att checka in:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Ändringar ej i incheckningskön:"
 
@@ -9686,22 +9724,22 @@
 msgid "untracked content, "
 msgstr "ospårat innehåll, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Stashen innehåller just nu %d post"
 msgstr[1] "Stashen innehåller just nu %d poster"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Undermoduler ändrade men inte uppdaterade:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Undermodulers ändringar att checka in:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9709,7 +9747,7 @@
 "Raden ovan får inte ändras eller tas bort.\n"
 "Allt under den kommer tas bort."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9720,107 +9758,107 @@
 "Det tog %.2f sekunder att räkna före/bakom-värden.\n"
 "Du kan använda \"--no-ahead-behind\" för undvika detta.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Du har ej sammanslagna sökvägar."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (rätta konflikter och kör \"git commit\")"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (använd \"git merge --abort\" för att avbryta sammanslagningen)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Alla konflikter har rättats men du är fortfarande i en sammanslagning."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (använd \"git commit\" för att slutföra sammanslagningen)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Du är i mitten av en körning av \"git am\"."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Aktuell patch är tom."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git am --continue\")"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (använd \"git am --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (använd \"git am --abort\" för att återställa ursprungsgrenen)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo saknas."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Inga kommandon utförda."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Sista kommandot utfört (%d kommando utfört):"
 msgstr[1] "Sista kommandot utfört (%d kommandon utfört):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (se fler i filen %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Inga kommandon återstår."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Nästa kommando att utföra (%d kommando återstår):"
 msgstr[1] "Följande kommandon att utföra (%d kommandon återstår):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (använd \"git rebase --edit-todo\" för att visa och redigera)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Du håller på att ombasera grenen \"%s\" ovanpå \"%s\"."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Du håller på med en ombasering."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git rebase --continue\")"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (använd \"git rebase --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (använd \"git rebase --abort\" för att checka ut ursprungsgrenen)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9828,155 +9866,159 @@
 "Du håller på att dela upp en incheckning medan du ombaserar grenen \"%s\" "
 "ovanpå \"%s\"."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Du håller på att dela upp en incheckning i en ombasering."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (Så fort din arbetskatalog är ren, kör \"git rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Du håller på att redigera en incheckning medan du ombaserar grenen \"%s\" "
 "ovanpå \"%s\"."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Du håller på att redigera en incheckning under en ombasering."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (använd \"git commit --amend\" för att lägga till på aktuell incheckning)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (använd \"git rebase --continue\" när du är nöjd med dina ändringar)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick pågår."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Du håller på med en \"cherry-pick\" av incheckningen %s."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (kör \"git cherry-pick --continue\" för att fortsätta)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git cherry-pick --continue\")"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (använd \"git cherry-pick --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (använd \"git cherry-pick --abort\" för att avbryta \"cherry-pick\"-"
 "operationen)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Ångring pågår."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Du håller på med att ångra incheckningen %s."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (kör \"git revert --continue\" för att fortsätta)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git revert --continue\")"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (använd \"git revert --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (använd \"git revert --abort\" för att avbryta ångrandet)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Du håller på med en \"bisect\", startad från grenen \"%s\"."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Du håller på med en \"bisect\"."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (använd \"git bisect reset\" för att komma tillbaka till ursprungsgrenen)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Du är i en gles utcheckning."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "Du är i en gles utcheckning med %d%% spårade filer på plats."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "På grenen "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "interaktiv ombasering pågår; ovanpå "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "ombasering pågår; ovanpå "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD frånkopplad vid "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD frånkopplad från "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Inte på någon gren för närvarande."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Första incheckning"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Inga incheckningar ännu"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Ospårade filer"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Ignorerade filer"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9988,32 +10030,32 @@
 "lägga till nya filer själv (se \"git help status\")."
 
 # %s är nästa sträng eller tom.
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Ospårade filer visas ej%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (använd flaggan -u för att visa ospårade filer)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Inga ändringar"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "inga ändringar att checka in (använd \"git add\" och/eller \"git commit -a"
 "\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "inga ändringar att checka in\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10022,80 +10064,80 @@
 "inget köat för incheckning, men ospårade filer finns (spåra med \"git add"
 "\")\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "inget köat för incheckning, men ospårade filer finns\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "inget att checka in (skapa/kopiera filer och spåra med \"git add\")\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "inget att checka in\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "inget att checka in (använd -u för att visa ospårade filer)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "inget att checka in, arbetskatalogen ren\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Inga incheckningar ännu på "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (ingen gren)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "olika"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "efter "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "före "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "kan inte %s: Du har oköade ändringar."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "dessutom innehåller dit index ändringar som inte har checkats in."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "kan inte %s: Ditt index innehåller ändringar som inte checkats in."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "kunde inte sända IPC-kommando"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "kunde inte läsa IPC-svar"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "kunde inte ta status \"accept_thread\" \"%s\""
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "kunde inte starta \"worker[0]\" för \"%s\""
@@ -10132,7 +10174,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Oköade ändringar efter att ha uppdaterat indexet:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Kunde inte läsa indexet"
 
@@ -10167,8 +10209,8 @@
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Följande sökvägar ignoreras av en av dina .gitignore-filer:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "testkörning"
@@ -10177,7 +10219,7 @@
 msgid "interactive picking"
 msgstr "plocka interaktivt"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "välj stycken interaktivt"
 
@@ -10306,15 +10348,15 @@
 #: builtin/add.c:526
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
-msgstr "--chmod-parametern \"%s\" måste antingen vara -x eller +x"
+msgstr "--chmod parametern \"%s\" måste antingen vara -x eller +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file är inkompatibelt med sökvägsangivelsesparametrar"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul kräver --pathspec-from-file"
 
@@ -10333,109 +10375,109 @@
 "Slå av detta meddelande genom att köra\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "kunde inte tolka författarskript"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "\"%s\" togs bort av kroken applypatch-msg"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Felaktig indatarad: \"%s\"."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Misslyckades kopiera anteckningar från \"%s\" till \"%s\""
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "\"fseek\" misslyckades"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "kunde inte tolka patchen \"%s\""
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Endast en StGIT-patchserie kan tillämpas åt gången"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "ogiltig tidsstämpel"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "ogiltig \"Date\"-rad"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "ogiltig tidszons-offset"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Misslyckades detektera patchformat."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "misslyckades skapa katalogen \"%s\""
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Misslyckades dela patchar."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "När du har löst problemet, kör \"%s --continue\"."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Om du hellre vill hoppa över patchen, kör \"%s --skip\" i stället."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 "För att återgå till ursprunglig gren och sluta patcha, kör \"%s --abort\"."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 "Patch sänd med format=flowed; blanksteg på slut av rader kan ha tappats."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Patchen är tom."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "saknad \"author\"-rad i incheckningen %s"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "ogiltig ident-rad: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "Arkivet saknar objekt som behövs för att falla tillbaka på 3-"
 "vägssammanslagning."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "Använder indexinfo för att återskapa ett basträd..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10443,25 +10485,25 @@
 "Har du handredigerat din patch?\n"
 "Den kan inte tillämpas på blobbar som antecknats i dess index."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr ""
 "Faller tillbaka på att patcha grundversionen och trevägssammanslagning..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Misslyckades slå ihop ändringarna."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "tillämpar på en tom historik"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "kan inte återuppta: %s finns inte."
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Incheckningskroppen är:"
 
@@ -10469,41 +10511,41 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "Tillämpa? Y=ja/N=nej/E=redigera/V=visa patch/A=godta alla: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "kan inte skriva indexfil"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Smutsigt index: kan inte tillämpa patchar (smutsiga: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Tillämpar: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Inga ändringar -- Patchen har redan tillämpats."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Patch misslyckades på %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 "Använd \"git am --show-current-patch=diff\" för att se patchen som "
 "misslyckades"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10513,7 +10555,7 @@
 "Om det inte är något kvar att köa kan det hända att något annat redan\n"
 "introducerat samma ändringar; kanske du bör hoppa över patchen."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10525,17 +10567,17 @@
 "lösta.\n"
 "Du kan köra \"git rm\" för att godta \"borttagen av dem\" för den."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Kan inte tolka objektet \"%s\"."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "misslyckades städa upp indexet"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10543,90 +10585,90 @@
 "Du verkar ha flyttat HEAD sedan \"am\" sist misslyckades.\n"
 "Återställer inte till ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Felaktigt värde för --patch-format: %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Felaktigt värde för --show-current-patch: %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s är inkompatibelt med --show-current-patch=%s"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<flaggor>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<flaggor>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "kör interaktivt"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "historisk flagga -- no-op"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "tillåt falla tillbaka på trevägssammanslagning om nödvändigt"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "var tyst"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "lägg till \"Signed-off-by\"-släprad i incheckningsmeddelandet"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "koda om till utf8 (standard)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "sänd flaggan -k till git-mailinfo"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "sänd flaggan -b till git-mailinfo"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "sänd flaggan -m till git-mailinfo"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "sänd flaggan --keep-cr till git-mailsplit för mbox-formatet"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr "sänd inte flaggan --keep-cr till git-mailsplit oberoende av am.keepcr"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "ta bort allting före en saxlinje"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "sänd det genom git-mailinfo"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "sänd det genom git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10635,67 +10677,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "format"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "format för patch(ar)"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "överstyr felmeddelanden när patchfel uppstår"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "fortsätt applicera patchar efter att ha löst en konflikt"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "synonymer till --continue"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "hoppa över den aktuella grenen"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "återställ originalgrenen och avbryt patchningen"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "avbryt patchningen men behåll HEAD där det är"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "visa patchen som tillämpas"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "ljug om incheckningsdatum"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "använd nuvarande tidsstämpel för författardatum"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "nyckel-id"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "GPG-signera incheckningar"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(används internt av git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10703,16 +10745,16 @@
 "Flaggan -b/--binary har varit utan funktion länge, och\n"
 "kommer tas bort. Vi ber dig att inte använda den längre."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "misslyckades läsa indexet"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "tidigare rebase-katalog %s finns fortfarande, men mbox angavs."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10721,11 +10763,11 @@
 "Kvarbliven katalog %s hittades.\n"
 "Använd \"git am --abort\" för att ta bort den."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Lösningsoperation pågår inte, vi återupptar inte."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "interaktivt läge kräver patchar på kommandoraden"
 
@@ -10777,7 +10819,7 @@
 "git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 msgstr ""
-"git-bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
+"git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --"
 "term-new]"
 
 #: builtin/bisect--helper.c:26
@@ -10820,36 +10862,36 @@
 msgid "could not write to file '%s'"
 msgstr "kunde inte skriva till filen \"%s\""
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "\"%s\" är inte en giltig term"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "kan inte använda det inbyggda kommandot \"%s\" som term"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "kan inte ändra betydelsen av termen \"%s\""
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "termerna måste vara olika"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Vi utför ingen bisect för tillfället.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "\"%s\" är inte en giltig incheckning"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10857,27 +10899,27 @@
 "Kunde inte checka ut original-HEAD \"%s\". Försök \"git bisect reset "
 "<incheckning>\"."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Felaktigt argument till bisect_write: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "kan inte läsa oid för referensen \"%s\""
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "kunde inte öppna filen \"%s\""
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Ogiltigt kommando: du utför just nu en \"bisect\" med %s/%s."
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10886,7 +10928,7 @@
 "Du måste ange åtminstone en %s och en %s version.\n"
 "(Du kan använda \"git bisect %s\" och \"git bisect %s\" för detta.)"
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10897,7 +10939,7 @@
 "Du måste sedan ange åtminstone en %s och en %s version.\n"
 "(Du kan använda \"git bisect %s\" och \"git bisect %s\" för detta.)"
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "utför bisect med endast en %s incheckning"
@@ -10906,15 +10948,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Är du säker [Y=ja/N=nej]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "inga termer angivna"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10923,7 +10965,7 @@
 "Aktuella termer är %s för det gamla tillståndet\n"
 "och %s för det nya tillståndet.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10932,54 +10974,54 @@
 "ogiltigt argument %s för \"git bisect terms\".\n"
 "Flaggor som stöds är: --term-good|--term-old och --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "misslyckades starta revisionstraversering\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "kunde inte öppna \"%s\" för tillägg"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "\"\" är inte en giltig term"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "okänd flagga: %s"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "\"%s\" verkar inte vara en giltig revision"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "felaktigt HEAD - Jag behöver ett HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "misslyckades checka ut \"%s\". Försök \"git bisect reset <giltig_gren>\"."
 
 # cogito-relaterat
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "kör inte \"bisect\" på träd där \"cg-seek\" använts"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "felaktigt HEAD - konstig symbolisk referens"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ogiltig referens: \"%s\""
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Du måste starta med \"git bisect start\"\n"
 
@@ -10987,104 +11029,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Vill du att jag ska göra det åt dig [Y=ja/N=nej]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Anropa \"--bisect-state\" med minst ett argument."
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "\"git bisect %s\" kan bara ta ett argument."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Felaktig rev-indata: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Felaktig rev-indata (ej incheckning): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "Vi utför ingen bisect för tillfället."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "\"%s\"?? vad menar du?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "kan inte läsa filen \"%s\" för återuppspelning"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "återställ bisect-tillstånd"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "se efter om termer för rätt och fel finns"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "skriv ut termer för bisect"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "påbörja bisect-körningen"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "hitta nästa incheckning i bisect"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "markera tillståndet för en eller flera referenser"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "lista \"bisect\"-stegen som utförts så långt"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "spela upp \"bisect\"-processen från angiven fil"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "hoppa över ett par incheckningar"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "ingen logg för BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset kräver antingen inget argument eller en incheckning"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check kräver 2 eller 3 argument"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms kräver noll eller ett argument"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next kräver 0 argument"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log kräver 0 argument"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "ingen loggfil angiven"
 
@@ -11135,10 +11177,10 @@
 msgid "show work cost statistics"
 msgstr "visa statistik över arbetskostnad"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "tvinga förloppsrapportering"
 
@@ -11186,7 +11228,7 @@
 msgid "ignore whitespace differences"
 msgstr "ignorera ändringar i blanksteg"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "incheckning"
 
@@ -11492,7 +11534,7 @@
 
 #: builtin/branch.c:650
 msgid "Specific git-branch actions:"
-msgstr "Specifika git-branch-åtgärder:"
+msgstr "Specifika git-branch åtgärder:"
 
 #: builtin/branch.c:651
 msgid "list both remote-tracking and local branches"
@@ -11775,19 +11817,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fil> [<refnamn>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "visa inte förloppsindikator"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "visa förloppsindikator"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "visa förloppsindikator under objektskrivningsfasen"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "som --all-progress när förloppsindikatorn visas"
 
@@ -11799,29 +11841,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "Behöver ett arkiv för att skapa ett paket (bundle)."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "visa inte paketdetaljer"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s är okej\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Behöver ett arkiv för att packa upp ett paket (bundle)."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "var pratsam; måste skrivas före ett underkommando"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Okänt underkommando: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11829,7 +11871,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <typ> | --textconv | --filters) [--path=<sökväg>] <objekt>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11837,72 +11879,72 @@
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "endast en buntflagga kan anges"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<typ> kan vara en av: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "visa objekttyp"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "visa objektstorlek"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "avsluta med noll när det inte uppstått något fel"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "visa objektets innehåll snyggt"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "för blob-objekt, kör filter på objektets innehåll"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "för blob-objekt, kör filger på objektets innehåll"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "använd specifik sökväg för --textconv/--filters"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "låter -s och -t att fungera med trasiga/sönderskrivna objekt"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "buffra utdata från --batch"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "visa information och innehåll för objekt som listas på standard in"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "visa information för objekt som listas på standard in"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "följ symboliska länkar i trädet (använd med --batch eller --batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "visa alla objekt med --batch eller --batch-check"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "ordna inte --batch-all-objects output"
 
@@ -11930,8 +11972,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "avsluta in- och utdataposter med NUL-tecken"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "undertryck förloppsrapportering"
 
@@ -11989,9 +12031,11 @@
 msgstr "git checkout--worker [<flaggor>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "sträng"
 
@@ -12085,68 +12129,68 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Kunde inte lägga till sammanslagningsresultat för \"%s\""
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "Återskapade %d sammanslagningskonflikt"
 msgstr[1] "Återskapade %d sammanslagningskonflikter"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "Uppdaterade %d sökväg från %s"
 msgstr[1] "Uppdaterade %d sökvägar från %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "Uppdaterade %d sökväg från indexet"
 msgstr[1] "Uppdaterade %d sökvägar från indexet"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "\"%s\" kan inte användas vid uppdatering av sökvägar"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "\"%s\" kan inte användas med %s"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "Kan inte uppdatera sökvägar och växla till grenen \"%s\" samtidigt."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "varken \"%s\" eller \"%s\" har angivits"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "\"%s\" måste användas när \"%s\" inte anges"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "\"%s\" eller \"%s\" kan inte användas med %s"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "sökvägen \"%s\" har inte slagits ihop"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "du måste lösa ditt befintliga index först"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12155,50 +12199,50 @@
 "kan inte fortsätta med köade ändringar i följande filer:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kan inte skapa referenslogg för \"%s\": %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD är nu på"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "kan inte uppdatera HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Återställ gren \"%s\"\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Redan på \"%s\"\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Växlade till och nollställde grenen \"%s\"\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Växlade till en ny gren \"%s\"\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Växlade till grenen \"%s\"\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... och %d till.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12221,7 +12265,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12248,19 +12292,19 @@
 " git branch <nytt_grennamn> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "internt fel vid genomgång av revisioner (revision walk)"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "Tidigare position för HEAD var"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Du är på en gren som ännu inte är född"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12269,7 +12313,7 @@
 "\"%s\" kan vara både en lokal fil och en spårande gren.\n"
 "Använd -- (och möjligen --no-guess) för att göra otvetydig"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12289,51 +12333,51 @@
 "föredra en fjärr, t.ex fjärren \"origin\" kan du ställa in\n"
 "checkout.defaultRemote=origin i din konfiguration."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "\"%s\" motsvarar flera (%d) spårade fjärrgrenar"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "endast en referens förväntades"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "endast en referens förväntades, %d gavs."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "felaktig referens: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensen är inte ett träd: %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "förväntade gren, fick taggen \"%s\""
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "förväntade gren, fick fjärrgrenen \"%s\""
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "förväntade gren, fick \"%s\""
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "förväntade gren, fick incheckningen \"%s\""
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12341,7 +12385,7 @@
 "kan inte växla gren vid sammanslagning\n"
 "Överväg \"git merge --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12349,7 +12393,7 @@
 "kan inte växla gren mitt i en \"am\"-körning\n"
 "Överväg \"git am --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12357,7 +12401,7 @@
 "kan inte växla gren vid ombasering\n"
 "Överväg \"git rebase --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12365,7 +12409,7 @@
 "kan inte växla gren i en \"cherry-pick\"\n"
 "Överväg \"git cherry-pick --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12373,139 +12417,139 @@
 "kan inte växla gren i en \"revert\"\n"
 "Överväg \"git revert --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "då växlar grenar medan du gör en \"bisect\""
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "sökvägar kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "\"%s\" kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "\"%s\" kan inte användas med \"%s\""
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "\"%s\" kan inte ta <startpunkt>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kan inte växla gren till icke-incheckningen \"%s\""
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "saknar gren- eller incheckingsargument"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "utför en 3-vägssammanslagning för den nya grenen"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "konfliktstil (merge eller diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "koppla från HEAD vid namngiven incheckning"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "sätt uppströmsinformation för ny gren"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "tvinga utcheckning (kasta bort lokala ändringar)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "ny-gren"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "ny gren utan förälder"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "uppdatera ignorerade filer (standard)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "kontrollera inte om en annan arbetskatalog håller den angivna referensen"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "checka ut vår version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "checka ut deras version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "begränsa inte sökvägar till endast glesa poster"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c och --orphan är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p och --overlay är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track behöver ett namn på en gren"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "grennamn saknas; försök med -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "kunde inte upplösa %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "felaktig sökvägsangivelse"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 "\"%s\" är inte en incheckning och grenen \"%s\" kan inte skapas från den"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach tar inte en sökväg som argument \"%s\""
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file är inkompatibelt med --detach"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file är inkompatibelt med --patch"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12513,70 +12557,71 @@
 "git checkout: --ours/--theirs, --force och --merge är inkompatibla när\n"
 "du checkar ut från indexet."
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "du måste ange katalog(er) att återställa"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "gren"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "skapa och checka ut en ny gren"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "skapa/nollställ och checka ut en gren"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "skapa reflogg för ny gren"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "förutspå \"git checkout <gren-saknas>\" (förval)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "använd överläggsläge (standard)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "skapa och växla till en ny gren"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "skapa/nollställ och växla till en gren"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "förutspå \"git checkout <gren-saknas>\""
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "kasta bort lokala ändringar"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "vilken träd-igt att checka ut från"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "återställ indexet"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "återställ arbetskatalogen (förval)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "ignorera ej sammanslagna poster"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "använd överläggsläge"
 
@@ -12612,7 +12657,7 @@
 msgid "could not lstat %s\n"
 msgstr "kunde inte ta status (\"lstat\") på %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12625,7 +12670,7 @@
 "foo        - markera post baserad på unikt prefix\n"
 "           - (tomt) markera ingenting\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12646,33 +12691,33 @@
 "*          - välj alla poster\n"
 "           - (tomt) avsluta markering\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Vadå (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Ange ignoreringsmönster>>"
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "VARNING: Hittar inte poster som motsvarar: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Välj poster att ta bort"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Ta bort %s [Y=ja / N=nej]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12690,52 +12735,52 @@
 "help                - denna skärm\n"
 "?                   - hjälp för kommandoval"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Skulle ta bort följande post:"
 msgstr[1] "Skulle ta bort följande poster:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Inga fler filer att städa, avslutar."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "skriv inte ut namn på borttagna filer"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "tvinga"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "städa interaktivt"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "ta bort hela kataloger"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "mönster"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "lägg till <mönster> till ignoreringsregler"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "ta även bort ignorerade filer"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "ta endast bort ignorerade filer"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12743,7 +12788,7 @@
 "clean.requireForce satt till true, men varken -i, -n eller -f angavs; vägrar "
 "städa"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12751,7 +12796,7 @@
 "clean.requireForce har standardvärdet true och varken -i, -n eller -f "
 "angavs; vägrar städa"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x och -X kan inte användas samtidigt"
 
@@ -12767,7 +12812,7 @@
 msgid "don't create a checkout"
 msgstr "skapa inte någon utcheckning"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "skapa ett naket (\"bare\") arkiv"
 
@@ -12799,26 +12844,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "antal undermoduler som klonas parallellt"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "mallkatalog"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "katalog att använda mallar från"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "referensarkiv"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "använd --reference endast under kloningen"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "namn"
@@ -12835,7 +12880,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "djup"
@@ -12844,7 +12889,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "skapa en grund klon på detta djup"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tid"
@@ -12862,8 +12907,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "fördjupa historik för grund klon, exkludera revisionen"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "klona endast en gren, HEAD eller --branch"
 
@@ -12875,11 +12920,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "klonade undermoduler kommer vara grunda"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "gitkat"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "separera gitkatalogen från arbetskatalogen"
 
@@ -12892,24 +12937,24 @@
 msgstr "ställ in konfiguration i det nya arkivet"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "serverspecifik"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr ""
 "inget att checka in\n"
 "flagga att sända"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "använd endast IPv4-adresser"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "använd endast IPv6-adresser"
 
@@ -12972,7 +13017,7 @@
 msgstr ""
 "Klonen lyckades, men utcheckningen misslyckades.\n"
 "Du kan inspektera det som checkades ut med \"git status\"\n"
-"och försöka med \"git restore -source=HEAD :/\"\n"
+"och försöka med \"git restore --source=HEAD :/\"\n"
 
 #: builtin/clone.c:594
 #, c-format
@@ -13009,7 +13054,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "kunde inte ta bort temporär \"alternates\"-fil"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "För många argument."
 
@@ -13031,7 +13076,7 @@
 msgid "repository '%s' does not exist"
 msgstr "arkivet \"%s\" finns inte"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "djupet %s är inte ett positivt tal"
@@ -13052,7 +13097,7 @@
 msgstr "arbetsträdet \"%s\" finns redan."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
@@ -13109,12 +13154,16 @@
 msgid "--local is ignored"
 msgstr "--local ignoreras"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "fjärrtransport rapporterade fel"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Fjärrgrenen %s hittades inte i uppströmsarkivet %s"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Du verkar ha klonat ett tomt arkiv."
 
@@ -13172,7 +13221,7 @@
 msgstr "kunde inte hitta objektkatalog för %s"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "kat"
 
@@ -13248,7 +13297,7 @@
 
 #: builtin/commit-graph.c:255
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "använd som mest en av --reachable, --stdin-commit och --stdin-packs"
+msgstr "använd som mest en av --reachable, --stdin-commits och --stdin-packs"
 
 #: builtin/commit-graph.c:287
 msgid "Collecting commits from input"
@@ -13267,7 +13316,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "duplicerad förälder %s ignorerades"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "objektnamnet är inte giltigt: %s"
@@ -13295,13 +13344,13 @@
 msgid "id of a parent commit object"
 msgstr "id på ett förälderincheckningsobjekt"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "meddelande"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "incheckningsmeddelande"
 
@@ -13309,7 +13358,7 @@
 msgid "read commit log message from file"
 msgstr "läs incheckningsloggmeddelande från fil"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG-signera incheckning"
@@ -13458,7 +13507,7 @@
 "kunde inte välja ett kommentarstecken som inte använts\n"
 "i det befintliga incheckningsmeddelandet"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "kunde inte slå upp incheckningen %s"
@@ -13494,7 +13543,46 @@
 msgid "could not write commit template"
 msgstr "kunde inte skriva incheckningsmall"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
+"med \"%c\" kommer ignoreras.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
+"med \"%c\" kommer ignoreras, och ett tomt meddelande avbryter "
+"incheckningen.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
+"med \"%c\" kommer behållas; du kan själv ta bort dem om du vill.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
+"med \"%c\" kommer behållas; du kan själv ta bort dem om du vill.\n"
+"Ett tomt meddelande avbryter incheckningen.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13508,7 +13596,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13522,94 +13610,73 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
-"med \"%c\" kommer ignoreras, och ett tomt meddelande avbryter "
-"incheckningen.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Ange incheckningsmeddelandet för dina ändringar. Rader som inleds\n"
-"med \"%c\" kommer behållas; du kan själv ta bort dem om du vill.\n"
-"Ett tomt meddelande avbryter incheckningen.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sFörfattare: %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sDatum:      %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sIncheckare: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Kan inte läsa indexet"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "kan inte sända släprader till --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Fel vid byggande av träd"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Ange meddelandet en av flaggorna -m eller -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' är inte 'Namn <epost>' och motsvarar ingen befintlig författare"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Ogiltigt ignorerat läge \"%s\""
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Ogiltigt läge för ospårade filer: \"%s\""
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long och -z är inkompatibla"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Du är i mitten av en sammanslagning -- kan inte omformulera."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "Du är i mitten av en cherry-pick -- kan inte omformulera."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 "kan inte kombinera omformuleringsflaggor för --fixup med sökvägen \"%s\""
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
@@ -13617,101 +13684,101 @@
 "omformuleringsflaggan i --fixup är ömsesidigt uteslutande med --patch/--"
 "interactive/--all/--include/--only"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Kan inte använda både --reset-author och --author"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Du har inget att utöka."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Du är i mitten av en sammanslagning -- kan inte utöka."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Du är i mitten av en cherry-pick -- kan inte utöka."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "Du är i mitten av en ombasering -- kan inte utöka."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Flaggorna --squash och --fixup kan inte användas samtidigt"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Endast en av -c/-C/-F/--fixup kan användas."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Flaggan -m kan inte kombineras med -c/-C/-F."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author kan endast användas med -C, -c eller --amend."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Endast en av --include/--only/--all/--interactive/--patch kan användas."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "okänd flagga: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "sökvägarna \"%s ...\" med -a ger ingen mening"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "visa koncis status"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "visa information om gren"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "visa information om stash"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "beräkna fullständiga före-/efter-värden"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "maskinläsbar utdata"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "visa status i långt format (standard)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "terminera poster med NUL"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "läge"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "visa ospårade filer, valfria lägen: all, normal, no. (Standard: all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13719,11 +13786,11 @@
 "visa ignorerade filer, valfria lägen: traditional, matching, no (Standard: "
 "traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "när"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13731,194 +13798,194 @@
 "ignorera ändringar i undermoduler, valfritt när: all, dirty, untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "visa ospårade filer i spalter"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "detektera inte namnändringar"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "detektera namnändringar, möjligen sätt likhetsindex"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Kombinationen av argument för ignorerade och ospårade filer stöds ej"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "undertryck sammanfattning efter framgångsrik incheckning"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "visa diff i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Alternativ för incheckningsmeddelande"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "läs meddelande från fil"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "författare"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "överstyr författare för incheckningen"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "datum"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "överstyr datum för incheckningen"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "incheckning"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "återanvänd och redigera meddelande från angiven incheckning"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "återanvänd meddelande från angiven incheckning"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]incheckning"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att fixa/omformulera angiven "
 "incheckning"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att slå ihop med angiven "
 "incheckning"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "jag är nu författare av incheckningen (används med -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "släprad"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "använd skräddarsydd(a) släprad(er)"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "lägg till Signed-off-by-släprad"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "använd angiven mallfil"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "tvinga redigering av incheckning"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "inkludera status i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Alternativ för incheckningens innehåll"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "checka in alla ändrade filer"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "lägg till angivna filer till indexet för incheckning"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "lägg till filer interaktivt"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "lägg till ändringar interaktivt"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "checka endast in angivna filer"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "förbigå pre-commit- och commit-msg-krokar"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "visa vad som skulle checkas in"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "lägg till föregående incheckning"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "förbigå post-rewrite-krok"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "ok att registrera en tom ändring"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "ok att registrera en ändring med tomt meddelande"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Trasig MERGE_HEAD-fil (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "kunde inte läsa MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "kunde inte läsa incheckningsmeddelande: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Avbryter på grund av tomt incheckningsmeddelande.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Avbryter incheckning; meddelandet inte redigerat.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "Avbryter på grund av tom incheckningsmeddelandekropp.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14555,35 +14622,35 @@
 msgid "you may want to cleanup or recover these."
 msgstr "du kanske vill städa eller rädda dem."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "använd \"diff.guitool\" istället för \"diff.tool\""
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "utför diff för hela katalogen"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "fråga inte vid start av diff-verktyg"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "använd symboliska länkar i katalogdiffläge"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "verktyg"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "använd angivet diff-verktyg"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "visa en lista över diff-verktyg som kan användas med \"--tool\""
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14591,31 +14658,31 @@
 "låt \"git-difftool\" avbryta när ett anropat diff-verktyg ger returvärde "
 "skilt från noll"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "ange eget kommando för att visa diffar"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "sändes till \"diff\""
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool kräver en arbetskatalog eller --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff är inkompatibelt med --no-index"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool och --extcmd är ömsesidigt uteslutande"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "inget <verktyg> angavs för --tool=<verktyg>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "inget <kommando> angavs för --extcmd=<kommando>"
 
@@ -14707,7 +14774,7 @@
 msgid "skip output of blob data"
 msgstr "hoppa över skrivning av blob-data"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "referensspecifikation"
 
@@ -15027,8 +15094,8 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "avvisa %s då grunda rötter inte kan uppdateras"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "avvisade %s då grunda rötter inte tillåts uppdateras"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -15128,48 +15195,52 @@
 msgid "You need to specify a tag name."
 msgstr "Du måste ange namnet på en tagg."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only behöver en eller flera --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negativa djup stöds inte i --deepen"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen och --depth är ömsesidigt uteslutande"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth och --unshallow kan inte användas samtidigt"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow kan inte användas på ett komplett arkiv"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tar inte namnet på ett arkiv som argument"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kan inte anges med referensspecifikationer"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Fjärren eller fjärrgruppen finns inte: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Kan inte hämta från grupp och ange referensspecifikationer"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "måste ange fjärr när --negotiate-only anges"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Protokollet stöder inte --negotiate-only, avslutar."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15177,11 +15248,11 @@
 "--filter kan endast användas med fjärren konfigurerad i extensions."
 "partialclone"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic kan bara användas vid hämtning från en fjärr"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin kan bara användas vid hämtning fårn en fjärr"
 
@@ -15277,19 +15348,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<konfig> <kommandoargument>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "konfig"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "konfigurationsnyckel som innehåller en lista över arkivsökvägar"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "saknar --config=<konfig>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "okänd"
 
@@ -15305,16 +15376,16 @@
 msgid "warning in %s %s: %s"
 msgstr "varning i %s %s: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "trasig länk från %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "fel objekttyp i länk"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15323,215 +15394,215 @@
 "trasig länk från %7s %s\n"
 "            till %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "saknat %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "onåbart %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "hängande %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "kunde inte skapa lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "kunde inte avsluta \"%s\""
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Kontrollerar %s"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Kontrollerar konnektivitet (%d objekt)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Kontrollerar %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "trasiga länkar"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "roten %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "taggad %s %s (%s) i %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: objekt trasigt eller saknas"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: ogiltig reflog-post %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Kontrollerar reflog %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: ogiltig sha1-pekare %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: inte en incheckning!"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "obs: Inga förvalda referenser"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: objektet trasigt eller saknas: %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: objektet kunde inte tolkas: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "ogiltig sha1-fil: %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Kontrollerar objektkatalog"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Kontrollerar objektkataloger"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Kontrollerar %s-länk"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "ogiltigt %s"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s pekar på något konstigt (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: frånkopplat HEAD pekar på ingenting"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "obs: %s pekar på en ofödd gren (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Kontrollerar cacheträd"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: ogiltig sha1-pekare i cacheträd"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "icke-träd i cacheträd"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<flaggor>] [<objekt>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "visa onåbara objekt"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "visa dinglande objekt"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "rapportera taggar"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "rapportera rotnoder"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "gör indexojekt till huvudnoder"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "gör refloggar till huvudnoder (standard)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "ta även hänsyn till paket och supplerande objekt"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "kontrollera endast konnektivitet"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "aktivera striktare kontroll"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "skriv dinglande objekt i .git/lost-found"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "visa förlopp"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "visa ordrika namn för nåbara objekt"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Kontrollerar objekt"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: objekt saknas"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "ogiltig parameter: förväntade sha1, fick \"%s\""
@@ -15816,8 +15887,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "trådstöd saknas, ignorerar %s"
@@ -15832,242 +15903,242 @@
 msgid "unable to grep from object of type %s"
 msgstr "kunde inte \"grep\" från objekt av typen %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "flaggan \"%c\" antar ett numeriskt värde"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "sök i indexet istället för i arbetskatalogen"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "sök i innehåll som inte hanteras av git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "sök i både spårade och ospårade filer"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "ignorera filer angivna i \".gitignore\""
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "sök varje undermodul rekursivt"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "visa rader som inte träffas"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "skiftlägesokänslig sökning"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "träffa endast mönster vid ordgränser"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "hantera binärfiler som text"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "träffa inte mönster i binärfiler"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "hantera binärfiler med textconv-filter"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "sök i underkataloger (standard)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "gå som mest ned <djup> nivåer"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "använd utökade POSIX-reguljära uttryck"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "använd grundläggande POSIX-reguljära uttryck (standard)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "tolka mönster som fixerade strängar"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "använd Perlkompatibla reguljära uttryck"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "visa radnummer"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "visa kolumnnummer för första träff"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "visa inte filnamn"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "visa filnamn"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "visa filnamn relativa till toppkatalogen"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "visa endast filnamn istället för träffade rader"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "synonym för --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "visa endast namn på filer utan träffar"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "skriv NUL efter filnamn"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "visa endast träffade delar av rader"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "visa antal träffar istället för träffade rader"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "ljusmarkera träffar"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "skriv tomma rader mellan träffar från olika filer"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr "visa filnamn endast en gång ovanför träffar från samma fil"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "visa <n> rader sammanhang före och efter träffar"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "visa <n> rader sammanhang före träffar"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "visa <n> rader sammanhang efter träffar"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "använd <n> jobbtrådar"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "genväg för -C NUM"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "visa en rad med funktionsnamnet före träffen"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "visa den omkringliggande funktionen"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "läs mönster från fil"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "träffa <mönster>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "kombinera mönster som anges med -e"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "ange träff med slutstatuskod utan utdata"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr "visa endast träffar från filer som träffar alla mönster"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "bläddrare"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "visa träffade filer i filbläddraren"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "tillåt anropa grep(1) (ignoreras av detta bygge)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "inget mönster angavs"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index och --untracked kan inte användas med revisioner"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "kan inte slå upp revision: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked stöds inte med --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "ogiltig kombination av flaggor, ignorerar --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "trådstöd saknas, ignorerar --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "felaktigt antal trådar angivet (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager fungerar endast i arbetskatalogen"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached och --untracked kan inte användas med --no-index"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked kan inte användas med --cached"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard kan inte användas för spårat innehåll"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "både --cached och träd angavs"
 
@@ -16191,30 +16262,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "\"%s\": okänd man-visare."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "ingen man-visare hanterade förfrågan"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "ingen info-visare hanterade förfrågan"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "\"%s\" är ett alias för \"%s\""
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "felaktig alias.%s-sträng: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "användning: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "\"git help config\" för mer information"
 
@@ -16252,7 +16323,7 @@
 msgid "used more bytes than were available"
 msgstr "använde fler byte än tillgängligt"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "paket för stort för nuvarande definition av off_t"
 
@@ -16279,238 +16350,238 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "paketversion %<PRIu32> stöds ej"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paketet har felaktigt objekt vid index %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate returnerade %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "indexvärdespill för deltabasobjekt"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "deltabasindex utanför gränsen"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "okänd objekttyp %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "kan inte utföra \"pread\" på paketfil"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "för tidigt slut på paketfilen, %<PRIuMAX> byte saknas"
 msgstr[1] "för tidigt slut på paketfilen, %<PRIuMAX> byte saknas"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "allvarlig inflate-inkonsekvens"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1-KOLLISION UPPTÄCKT VID %s !"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "kunde inte läsa %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "kan inte läsa information om befintligt objekt %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "kan inte läsa befintligt objekt %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "ogiltigt blob-objekt %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "fsck-fel i packat objekt"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Inte alla barnobjekt för %s kan nås"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "misslyckades tillämpa delta"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Tar emot objekt"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Skapar index för objekt"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paketet är trasigt (SHA1 stämmer inte)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "kan inte utföra \"fstat\" på paketfil"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "paket har skräp i slutet"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "förvirrad bortom vanvett i parse_pack_objects()"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Analyserar delta"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kunde inte skapa tråd: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "förvirrad bortom vanvett"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "slutfördes med %d lokalt objekt"
 msgstr[1] "slutfördes med %d lokala objekt"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
-msgstr "Oväntad svanschecksumma för %s (trasig disk?)"
+msgstr "Oväntad svanskontrollsumma för %s (trasig disk?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paketet har %d oanalyserat delta"
 msgstr[1] "paketet har %d oanalyserade delta"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "kunde inte utföra \"deflate\" på tillagt objekt (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "lokalt objekt %s är trasigt"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "paketfilnamnet \"%s\" slutar inte med \".%s\""
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "kan inte ta skriva %s-fil \"%s\""
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "kan inte stänga skriven %s-fil \"%s\""
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "fel vid stängning av paketfil"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "kan inte spara paketfil"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "kan inte spara indexfil"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "felaktig pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kan inte öppna befintlig paketfil \"%s\""
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Kan inte öppna befintlig paket-idx-fil för \"%s\""
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "icke-delta: %d objekt"
 msgstr[1] "icke-delta: %d objekt"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "kedjelängd = %d: %lu objekt"
 msgstr[1] "kedjelängd = %d: %lu objekt"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "felaktig %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "okänd hashningsalgoritm \"%s\""
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin kräver ett git-arkiv"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify angavs utan paketfilnamn"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "fsck-fel i packat objekt"
 
@@ -16554,56 +16625,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "kopierade inte mallar från \"%s\": %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "ogiltigt namn på första gren: \"%s\""
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "kan inte hantera filtyp %d"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "kan inte flytta %s till %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "försöker initiera arkivet på nytt med annan hash"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s finns redan"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: ignorerade --initial-branch=%s"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Ominitierade befintligt delat Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Ominitierade befintligt Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Initierade tomt delat Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Initierade tomt Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16611,41 +16682,41 @@
 "git init [-q | --quiet] [--bare] [--template=<mallkatalog>] [--"
 "shared[=<behörigheter>]] [<katalog>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "behörigheter"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "ange att git-arkivet ska delas bland flera användare"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "överstyr namnet på första gren"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "ange hashningsalgoritm att använda"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir och --bare är ömsesidigt uteslutande"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "kan inte skapa katalogen (mkdir) %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "kan inte byta katalog (chdir) till %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -16654,14 +16725,14 @@
 "%s (eller --work-tree=<katalog>) inte tillåtet utan att ange %s (eller --git-"
 "dir=<katalog>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Kan inte komma åt arbetskatalogen \"%s\""
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
-msgstr "--separatebgit-dir är inkompatibelt med naket arkiv"
+msgstr "--separate-git-dir är inkompatibelt med naket arkiv"
 
 #: builtin/interpret-trailers.c:16
 msgid ""
@@ -16768,85 +16839,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<intervall>:<fil> kan inte användas med sökvägsspecifikation"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Slututdata: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: felaktig fil"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "kunde inte läsa objektet %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "okänd typ: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: ogiltigt omslag från beskrivningsläge"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers utan värde"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "kan inte öppna patchfilen %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "behöver precis ett intervall"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "inte ett intervall"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "omslagsbrevet behöver e-postformat"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "misslyckades skapa fil för omslagsbrev"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "tokigt in-reply-to: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<flaggor>] [<sedan> | <revisionsintervall>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "två utdatakataloger?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "okänd incheckning %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "misslyckades slå upp \"%s\" som en giltig referens"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "kunde inte hitta exakt sammanslagningsbas"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16856,288 +16927,288 @@
 "använd git branch --set-upstream-to för att spåra en fjärrgren.\n"
 "Eller så kan du ange basincheckning med --base=<bas-inchecknings-id> manuellt"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "kunde inte hitta exakt sammanslagningsbas"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "basincheckningen bör vara förfader till revisionslistan"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "basincheckningen bör inte vara i revisionslistan"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "kan inte hämta patch-id"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "misslyckades räkna ut intervalldiff-ursprung för aktuell serie"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "använd \"%s\" som intervalldiff-ursprung för aktuell serie"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "använd [PATCH n/m] även för en ensam patch"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "använd [PATCH] även för flera patchar"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "skriv patcharna på standard ut"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "generera ett följebrev"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "använd enkel nummersekvens för utdatafilnamn"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "använd <sfx> istället för \".patch\""
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "börja numrera patchar på <n> istället för 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "antal iterationer"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "markera serien som N:te försök"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "maximal längd för utdatafilnamn"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "använd [RFC PATCH] istället för [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-läge"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "skapa delar av omslagsbrevet baserat på grenbeskrivelsen"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "använd [<prefix>] istället för [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "spara filerna i <katalog>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "ta inte bort eller lägg till [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "skriv inte binära diffar"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "använd hashvärde med nollor i From-huvud"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "ta inte med patchar som motsvarar en uppströmsincheckning"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "visa patchformat istället för standard (patch + stat)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "E-post"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "huvud"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "lägg till e-posthuvud"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "epost"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "lägg till mottagarhuvud (\"To:\")"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "lägg till kopiehuvud (\"Cc:\")"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "ident"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "sätt Från-adress till <ident> (eller incheckare om ident saknas)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "meddelande-id"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "gör det första brevet ett svar till <meddelande-id>"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "gräns"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "bifoga patchen"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "gör patchen ett inline-objekt"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "aktivera brevtrådning, typer: shallow, deep"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "signatur"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "lägg till signatur"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "basincheckning"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "lägg till förhandskrävd trädinfo i patchserien"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "lägg till signatur från fil"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "visa inte filnamn för patchar"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "visa förloppsindikator medan patchar skapas"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "visa ändringar mot <rev> i omslagsbrev eller ensam patch"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "visa ändringar mot <refspec> i omslagsbrev eller ensam patch"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "procent som skapelse vägs med"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "ogiltig ident-rad: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n och -k kan inte användas samtidigt"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc och -k kan inte användas samtidigt"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "kan inte använda --name-only"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "kan inte använda --name-status"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "kan inte använda --check"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output, och --output-directory är ömsesidigt uteslutande"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff kräver --cover-letter eller ensam patch"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff mot v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor kräver --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff kräver --cover-letter eller ensam patch"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Intervall-diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Intervall-diff mot v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "kunde inte läsa signaturfil \"%s\""
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Skapar patchar"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "misslyckades skapa utdatafiler"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<uppström> [<huvud> [<gräns>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17352,7 +17423,7 @@
 
 #: builtin/mailinfo.c:64
 msgid "re-code metadata to i18n.commitEncoding"
-msgstr "koda om metadata till i18n.commmitEncoding"
+msgstr "koda om metadata till i18n.commitEncoding"
 
 #: builtin/mailinfo.c:67
 msgid "disable charset re-coding of metadata"
@@ -17502,14 +17573,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<flaggor>] [<incheckning>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "flaggan \"m\" behöver ett värde"
@@ -17652,38 +17715,38 @@
 msgid "'%s' does not point to a commit"
 msgstr "\"%s\" verkar inte peka på en incheckning"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Felaktig branch.%s.mergeoptions-sträng: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Hanterar inte något annat än en sammanslagning av två huvuden."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Felaktig flagga för merge-recursive: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "kunde inte skriva %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Kunde inte läsa från \"%s\""
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Checkar inte in sammanslagningen; använd \"git commit\" för att slutföra "
 "den.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17694,11 +17757,11 @@
 "temagren.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Ett tomt meddelande avbryter incheckningen.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17707,73 +17770,73 @@
 "Rader som inleds med \"%c\" kommer ignoreras, och ett tomt meddelande\n"
 "avbryter incheckningen.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Tomt incheckningsmeddelande."
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Underbart.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Kunde inte slå ihop automatiskt; fixa konflikter och checka in resultatet.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Inte på någon gren."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Ingen fjärr för aktuell gren."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Ingen standarduppström angiven för aktuell gren."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Ingen fjärrspårande gren för %s från %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Felaktigt värde \"%s\" i miljövariabeln \"%s\""
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "inte något vi kan slå ihop med %s: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "inte något vi kan slå ihop"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort tar inga argument"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning att avbryta (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit tar inga argument"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue tar inga argument"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning pågår (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17781,7 +17844,7 @@
 "Du har inte avslutat sammanslagningen (MERGE_HEAD finns).\n"
 "Checka in dina ändringar innan du slår ihop."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17789,88 +17852,88 @@
 "Du har inte avslutat din \"cherry-pick\" (CHERRY_PICK_HEAD finns).\n"
 "Checka in dina ändringar innan du slår ihop."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Du har inte avslutat din \"cherry-pick\" (CHERRY_PICK_HEAD finns)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Du kan inte kombinera --squash med --no-ff."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "Du kan inte kombinera --squash med --commit."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Ingen incheckning angiven och merge.defaultToUpstream är ej satt."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "Stöder inte en tillplattningsincheckning på ett tomt huvud ännu"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Icke-snabbspolad incheckning kan inte användas med ett tomt huvud"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - inte något vi kan slå ihop"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Kan endast slå ihop en enda incheckning i ett tomt huvud"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "vägrar slå samman orelaterad historik"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Uppdaterar %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Försöker riktigt enkel sammanslagning i indexet...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Nej.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Kan inte snabbspola, avbryter."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Återspolar trädet till orört...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Försöker sammanslagningsstrategin %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ingen sammanslagningsstrategi hanterade sammanslagningen.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Sammanslagning med strategin %s misslyckades.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Använder %s för att förbereda lösning för hand.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Använder strategin %s för att förbereda lösning för hand.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -17969,7 +18032,7 @@
 "vid ompackning, samla mindre paketfiler i en bunt som är större än denna "
 "storlek"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "okänt underkommando: %s"
@@ -18511,7 +18574,7 @@
 msgid "read object names from the standard input"
 msgstr "läs objektnamn från standard in"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "ta inte bort, bara visa"
 
@@ -18527,24 +18590,24 @@
 msgid "use notes from <notes-ref>"
 msgstr "använd anteckningar från <anteckningsref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "okänt underkommando: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<flaggor>...] [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<flaggor>...] <basnamn> [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18553,107 +18616,107 @@
 "write_reuse_object: kunde inte hitta %s, förväntat på position %<PRIuMAX> i "
 "paketet %s"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "felaktig CRC för packat objekt %s"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "trasigt packat objekt för %s"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "rekursivt delta upptäcktes för objektet %s"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "ordnade %u objekt, förväntade %<PRIu32>"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "förväntade objekt på position %<PRIuMAX> i paketet %s"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "inaktiverar skrivning av bitkarta, paket delas på grund av pack.packSizeLimit"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Skriver objekt"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "misslyckades ta status på %s"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "skrev %<PRIu32> objekt medan %<PRIu32> förväntades"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "inaktiverar skrivning av bitkarta då några objekt inte packas"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "deltabasoffset utanför gränsen i pack för %s"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "deltabasoffset utanför gränsvärden för %s"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Räknar objekt"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "kunde inte tolka objekthuvud för %s"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objektet %s kunde inte läsas"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "objektet %s har inkonsistent objektlängd (%<PRIuMAX> mot %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "icke-optimalt pack - minnet slut"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Deltakomprimering använder upp till %d trådar"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "kan inte packa objekt nåbara från taggen %s"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Komprimerar objekt"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "deltaräknaren är inkonsekvent"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18662,24 +18725,24 @@
 "värdet på uploadpack.blobpackfileuri måste vara på formen '<objekt-hash> "
 "<paket-hash> <uri>' (fick '%s')"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr ""
 "objektet redan konfigurerat i et annat uploadpack.blobpackfileuri (fick '%s)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "kunde inte hämta typ för objektet %s i paketet %s"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "kunde inte hitta paketet \"%s\""
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18688,7 +18751,7 @@
 "förväntade kant-objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18697,248 +18760,248 @@
 "förväntade objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "ogiltigt värde för --missing"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "kan inte öppna paketfilen"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "lösa objekt på %s kunde inte underökas"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "kan inte tvinga lösa objekt"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "inte en referens \"%s\""
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "felaktig revision \"%s\""
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "kan inte lägga till nya objekt"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "indexversionen %s stöds ej"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "felaktig indexversion \"%s\""
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<offset>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr "skriv paketindexfilen i angiven indexformatversion"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "maximal storlek på varje utdatapaketfil"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorera lånade objekt från supplerande objektlager"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "ignorera packade objekt"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "begränsa paketfönster efter objekt"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "begränsa paketfönster efter minne förutom objektgräns"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "maximal längd på deltakedja tillåten i slutligt paket"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "återanvänd befintliga delta"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "återanvänd befintliga objekt"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "använd OFS_DELTA-objekt"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "använd trådar vid sökning efter bästa deltaträffar"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "försök inte skapa tom paketutdata"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "läs revisionsargument från standard in"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "begränsa objekt till dem som ännu inte packats"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "inkludera objekt som kan nås från någon referens"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "inkludera objekt som refereras från referensloggposter"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "inkludera objekt som refereras från indexet"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "läs paket från standard in"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "skriv paket på standard ut"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "inkludera taggobjekt som refererar objekt som ska packas"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "behåll onåbara objekt"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "packa lösa onåbara objekt"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "packa upp onåbara objekt nyare än <tid>"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "använd gles-nåbarhetsalgoritmen"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "skapa tunna paket"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "skapa packfiler lämpade för grunda hämtningar"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorera paket som har tillhörande .keep-fil"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "ignorera detta paket"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "komprimeringsgrad för paket"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "göm inte incheckningar med ympningar (\"grafts\")"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "använd bitkartindex om tillgängligt för att räkna objekt snabbare"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "använd bitkartindex tillsammans med packindexet"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "skriv bitkartindex om möjligt"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "hantering av saknade objekt"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "packa inte objekt i kontraktspackfiler"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "respektera öar under deltakomprimering"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "protokoll"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "uteslut redan konfigurerade uploadpack.blobpackfileuri med detta protokoll"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "deltakedjedjupet %d är för djupt, påtvingar %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit är för högt, påtvingar %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size kan inte användas för att bygga ett paket som ska överföras"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "minsta packstorlek är 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin kan inte användas för att bygga ett indexerbart paket"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
-msgstr "--keep-unreachable och -unpack-unreachable kan inte användas samtidigt"
+msgstr "--keep-unreachable och --unpack-unreachable kan inte användas samtidigt"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "kan inte använda --filter utan --stdout"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "kan inte använda --filter med --stdin-packs"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "kan inte använda intern revisionslista med --stdin-packs"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Räknar upp objekt"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19158,19 +19221,19 @@
 "eller --ff-only på kommandoraden för att överstyra det konfigurerade\n"
 "förvalet vid körning.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Uppdaterar en ofödd gren med ändringar som lagts till i indexet."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "pull med ombasering"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "checka in eller använd \"stash\" på dem."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19181,7 +19244,7 @@
 "snabbspolar din arbetskatalog från\n"
 "incheckningen %s."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19198,15 +19261,15 @@
 "$ git reset --hard\n"
 "för att återgå."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Kan inte slå ihop flera grenar i ett tomt huvud."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Kan inte ombasera ovanpå flera grenar."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "kan inte ombasera med lokalt lagrade ändringar i undermoful"
 
@@ -19271,7 +19334,7 @@
 "\n"
 "    git push %s HEAD:<namn-på-fjärrgren>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19284,12 +19347,19 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Den aktuella grenen %s har flera uppströmsgrenar, vägrar sända."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Du angav inga referensspecifikationer att sända, och push.default är "
+"\"nothing\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19300,14 +19370,7 @@
 "aktuella grenen \"%s\", utan att tala om för mig vad som\n"
 "ska sändas för att uppdatera fjärrgrenen."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Du angav inga referensspecifikationer att sända, och push.default är "
-"\"nothing\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19319,7 +19382,7 @@
 "\"git pull ....\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19331,7 +19394,7 @@
 "\"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19345,11 +19408,11 @@
 "(t.ex. \"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forwards\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Uppdateringarna avvisades eftersom taggen redan finns på fjärren."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19360,7 +19423,7 @@
 "pekar på något som inte är en incheckning, utan att använda flaggan\n"
 "\"--force\".\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19372,103 +19435,103 @@
 "fjärrändringarna lokalt (t.ex \"git pull ....\") innan du\n"
 "tvingar en uppdatering.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Sänder till %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "misslyckades sända vissa referenser till \"%s\""
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "arkiv"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "sänd alla referenser"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "spegla alla referenser"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "ta bort referenser"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "sänd taggar (kan inte användas med --all eller --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "tvinga uppdateringar"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<refnamn>:<förvänta>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "kräv att ref:s tidigare värde är detta"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "kräv att fjärruppdateringar har integrerats lokalt"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "styr rekursiv insändning av undermoduler"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "använd tunna paket"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "program för att ta emot paket"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "ställ in uppström för git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "ta bort lokalt borttagna referenser"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "förbigå pre-push-krok"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "sänd in saknade men relevanta taggar"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "GPG-signera insändningen"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "begär atomiska transaktioner på fjärrsidan"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete är inkompatibel med --all, --mirror och --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete kan inte användas utan referenser"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "felaktigt arkiv \"%s\""
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19489,27 +19552,27 @@
 "\n"
 "    git push <namn>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all och --tags är inkompatibla"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all kan inte kombineras med referensspecifikationer"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror och --tags är inkompatibla"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror kan inte kombineras med referensspecifikationer"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all och --mirror är inkompatibla"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "push-flaggor kan inte innehålla radbrytning"
 
@@ -20087,7 +20150,7 @@
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "Åtgärden --edit-todo kan endast användas under interaktiv ombasering."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Kan inte läsa HEAD"
 
@@ -20195,8 +20258,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "ödesdigert: ingen sådan gren/incheckning: \"%s\""
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Ingen sådan referens: %s"
@@ -20265,7 +20328,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-katalog>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20295,7 +20358,7 @@
 "För att undvika detta meddelande och fortfarande behålla det\n"
 "normala beteendet, sätt \"receive.denyCurrentBranch\" till \"refuse\"."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20316,11 +20379,11 @@
 "\n"
 "För att undvika detta meddelande kan du sätta det till \"refuse\"."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "tyst"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Du måste ange en katalog."
 
@@ -21295,15 +21358,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "registrera rena lösningar i indexet"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "\"git rerere forget\" utan sökvägar är föråldrat"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "misslyckades skapa diff för \"%s\""
@@ -21456,19 +21519,19 @@
 msgid "Could not write new index file."
 msgstr "Kunde inte skriva ny indexfil."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "kan inte kombinera --exclude-promisor-objects och --missing"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "objektfiltrering kräver --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list stöder inte visning av anteckningar"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "markerad räkning är inkompatibelt med --objects"
 
@@ -21488,6 +21551,18 @@
 msgid "output in stuck long form"
 msgstr "utdata fast i lång form"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "för tidigt slut på indata"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "ingen användningssträng angavs före \"--\"-avdelaren"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Behövde ensam revision"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21503,6 +21578,50 @@
 "Kör \"git rev-parse --parseopt -h\" för mer information om den första "
 "varianten."
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir kräver ett argument"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "inte en gitkatalog \"%s\""
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path kräver ett argument"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n kräver ett argument"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format kräver ett argument"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "felaktigt argument till --path-format: %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default kräver ett argument"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix kräver ett argument"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "okänt läge för --abbrev-ref: %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "okänt läge för --show-object-format: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<flaggor>] <incheckning-igt>..."
@@ -21710,7 +21829,7 @@
 
 #: builtin/shortlog.c:123
 msgid "using multiple --group options with stdin is not supported"
-msgstr "mer än en --group-flagga stöds inte med standard in"
+msgstr "mer än en --group flagga stöds inte med standard in"
 
 #: builtin/shortlog.c:133
 msgid "using --group=trailer with stdin is not supported"
@@ -21991,37 +22110,37 @@
 msgid "failed to open '%s'"
 msgstr "misslyckades öppna \"%s\""
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "kunde inte normalisera sökvägen \"%s\""
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <mönster>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "kan inte ta bort citering av C-sträng \"%s\""
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "kunde inte läsa in existerande mönster för gles utcheckning"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "läs mönster från standard in"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "fel vid uppdatering av arbetskatalog"
 
@@ -22045,10 +22164,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <grennamn> [<stash>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22198,93 +22313,93 @@
 msgid "only show untracked files in the stash"
 msgstr "visa bara ospårade filer i \"stash\""
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Kan inte uppdatera %s med %s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "\"stash\"-meddelande"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" kräver ett <incheckning>-argument"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Inga ändringar valda"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Du har inte den första incheckningen ännu"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Kan inte spara aktuellt tillstånd för indexet"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Kan inte spara ospårade filer"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Kan inte spara aktuellt tillstånd för arbetskatalogen"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Kan inte registrera tillstånd för arbetskatalog"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Kan inte använda --patch och --include-untracked eller --all samtidigt"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Glömde du använda \"git add\"?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Inga lokala ändringar att spara"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Kan inte initiera \"stash\""
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Kan inte spara aktuell status"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Sparade arbetskatalogen och indexstatus %s"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Kan inte ta bort ändringar i arbetskatalogen"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "behåll indexet"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "\"stash\" i \"patch\"-läge"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "tyst läge"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "ta med ospårade filer i \"stash\""
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "ta med ignorerade filer"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22308,40 +22423,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "lägg in kommentarstecken och blanksteg först på varje rad"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Förväntade fullt referensnamn, fick %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote tar inga argument"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "kan inte ta bort en komponent från url:en \"%s\""
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "alternativa ankare för relativa sökvägar"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<sökväg>] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Hittade ingen url för undermodulsökvägen \"%s\" i .gitmodules"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Går in i \"%s\"\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22350,7 +22466,7 @@
 "run_command returnerade icke-nollstatus för %s\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22361,20 +22477,20 @@
 "undermoduler för %s\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "dölj utdata från för varje undermodulskommando som startas"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "rekursera in i nästlade undermoduler"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [--] [<kommando>]"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -22383,54 +22499,54 @@
 "kunde inte slå upp konfigurationen \"%s\". Antar att arkivet är sin eget "
 "officiella uppström."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Misslyckades registrera url för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Undermodulen \"%s\" (%s) registrerad för sökvägen \"%s\"\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "varning: kommandouppdateringsläge föreslogs för undermodulen \"%s\"\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Misslyckades registrera uppdateringsläge för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "dölj utdata från initiering av undermodul"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<flaggor>] [<sökväg>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "hittade ingen undermodulmappning i .gitmodules för sökvägen \"%s\""
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "kunde inte bestämma HEAD:s incheckning i undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "misslyckades rekursera in i undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "hindra statusutskrift för undermodul"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -22438,100 +22554,98 @@
 "visa incheckning från indexet istället för den som lagrats i undermodulens "
 "HEAD"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quitet] [--cached] [--recursive] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <sökväg>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodule)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodule)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "kunde inte hasha objekt från \"%s\""
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "okänt läge %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "använd incechkning lagrad i indexet istället för undermodulens HEAD"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr ""
-"för att jämföra incheckningen i indexet med den som lagrats i undermodulens "
-"HEAD"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "jämför incheckningen i indexet med den i undermodulens HEAD"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr ""
 "hoppa över undermoduler där värdet för \"ignore_config\" är satt till \"all\""
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "begränsa översiktsstorleken"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr ""
 "git submodule--helper summary [<flaggor>] [<incheckning>] [--] [<sökväg>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "kunde inte hämta en version för HEAD"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached och --files är ömsesidigt uteslutande"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Synkroniserar undermodul-url för \"%s\"\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "misslyckades registrera url för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "misslyckades hämta standardfjärr för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "misslyckades uppdatera fjärr för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "dölj utdata från synkronisering av undermodul-url"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<sökväg>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22540,7 +22654,7 @@
 "Undermodulsarbetskatalogen \"%s\" innehåller en .git-katalog (använd \"rm -rf"
 "\" om du verkligen vill ta bort den och all dess historik)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -22549,46 +22663,46 @@
 "Undermodulens arbetskatalog \"%s\" har lokala ändringar; \"-f\" kastar bort "
 "dem"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Rensade katalogen \"%s\"\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Kunde inte ta bort undermodulens arbetskatalog \"%s\"\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "kunde inte skapa tom undermodulskatalog %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Undermodulen \"%s\" (%s) registrerad för sökvägen \"%s\"\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr ""
 "ta bort undermodulers arbetskataloger även om de innehåller lokala ändringar"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "avregistrera alla undermoduler"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<sökväg>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Använd \"--all\" om du verkligen vill avinitiera alla undermoduler"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22600,46 +22714,67 @@
 "submodule.alternateErrorStrategy till \"info\" eller, likvärdigt, klona\n"
 "med \"--reference-if-able\" istället för \"--reference\"."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "undermodulen \"%s\" kan inte lägga till suppleant: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Värdet \"%s\" i submodule.alternateErrorStrategy förstås inte"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Värdet \"%s\" i submodule.alternateLocation förstås inte"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "vägrar skapa/använda \"%s\" i en annan undermoduls gitkatalog"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "misslyckades klona \"%s\" till undermodulsökvägen \"%s\""
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "katalogen inte tom: \"%s\""
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "kunde inte få tag i undermodulkatalog för \"%s\""
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "var den nya undermodulen ska klonas till"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "namn på den nya undermodulen"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "URL att klona undermodulen från"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "djup för grunda kloner"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "tvinga kloningsförlopp"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "förhindra kloning till icke-tom katalog"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -22649,103 +22784,83 @@
 "<arkiv>] [--name <namn>] [--depth <djup>] [--single-branch] --url <url> --"
 "path <sökväg>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "vägrar skapa/använda \"%s\" i en annan undermoduls gitkatalog"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "misslyckades klona \"%s\" till undermodulsökvägen \"%s\""
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "katalogen inte tom: \"%s\""
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "kunde inte få tag i undermodulkatalog för \"%s\""
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Ogiltigt uppdateringsläge \"%s\" för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Ogiltigt uppdateringsläge \"%s\" konfigurerat för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Undermodulsökvägen \"%s\" har inte initierats"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Kanske menade du att använda \"update --init\"?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Hoppar över ej sammanslagen undermodul %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Hoppar över undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Misslyckades klona \"%s\". Nytt försök planlagt"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Misslyckades klona \"%s\" för andra gången, avbryter"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "sökväg inuti arbetskatalogen"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "sökväg inuti arbetskatalogen, genom nästlade undermodulgränser"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout eller none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "skapa en grund klon trunkerad till angivet antal revisioner"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "parallella jobb"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "om den första klonen ska följa rekommendation för grund kloning"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "skriv inte klonförlopp"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<sökväg>] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "felaktigt värde för parametern update"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22754,84 +22869,143 @@
 "Undermodulens (%s) gren inställd på att ärva gren från huvudprojektet, men "
 "huvudprojektet är inte på någon gren"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "kunde inte få tag i arkivhandtag för undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "rekursera ner i undermoduler"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dir [<flaggor>] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "se om det är säkert att skriva till .gitmodules-filen"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "ta bort konfigurationen från .gitmodules-filen"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <namn> [<värde>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <namn>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "se till att .gitmodules finns i arbetskatalogen"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "dölj utdata från inställning av url för undermodul"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <sökväg> <nyurl>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "välj master som förvald spårad gren"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "välj förvald spårad gren"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <sökväg>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
-"git submodule--helper set-branch [-q|--quiet] (-b|--brand) <gren> <sökväg>"
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <gren> <sökväg>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "--branch eller --default krävs"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch och --default är ömsesidigt uteslutande"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Lägger till befintligt arkiv i \"%s\" i indexet\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "\"%s\" finns redan och är inte ett giltigt git-arkiv"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "En git-katalog för \"%s\" hittades lokalt med fjärr(ar):"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Om du vill återanvända den lokala git-katalogen istället för att klona på "
+"nytt från\n"
+"  %s\n"
+"kan du använda flaggan \"--force\". Om den lokala git-katalogen inte är "
+"korrekt\n"
+"arkiv eller om du är osäker på vad det här betyder, välj ett annat namn med\n"
+"flaggan \"--name\".\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Aktiverar lokal git-katalog för undermodulen \"%s\" på nytt.\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "Kan inte checka ut undermodulen \"%s\""
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "gren från arkivet att checka ut vid kloning"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "tillåt lägga till en annars ignorerad undermodulsökväg"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<flaggor>...] --url <url> --path <sökväg> "
+"--name <namn>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s stöder inte --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "\"%s\" är inte ett giltigt underkommando till submodule--helper"
@@ -23421,7 +23595,7 @@
 
 #: builtin/verify-tag.c:18
 msgid "git verify-tag [-v | --verbose] [--format=<format>] <tag>..."
-msgstr "git verify-tag [-v | --verbose] [--format=<format] <tagg>..."
+msgstr "git verify-tag [-v | --verbose] [--format=<format>] <tagg>..."
 
 #: builtin/verify-tag.c:36
 msgid "print tag contents"
@@ -23455,7 +23629,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <sökväg>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "misslyckades ta bort \"%s\""
@@ -23465,25 +23639,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "Tar bort %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "rapportera borttagna arbetskataloger"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "låt tid gå ut för arbetskataloger äldre än <tid>"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "\"%s\" finns redan"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "oanvändbar mål för arbetskatalog \"%s\""
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23493,7 +23667,7 @@
 "använd \"%s -f -f\" för att överstyra, eller \"unlock\" och \"prune\" eller "
 "\"remove\" för att rensa"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23503,27 +23677,31 @@
 "använd \"%s -f\" för att överstyra, eller \"prune\" eller \"remove\" för att "
 "rensa"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "initierar"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Förbereder arbetskatalog (ny gren \"%s\")"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Förbereder arbetskatalog (återställer gren \"%s\"; var på %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Förbereder arbetskatalog (checkar ut \"%s\")"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Förbereder arbetskatalog (frånkopplat HEAD %s)"
@@ -23549,83 +23727,91 @@
 msgid "keep the new working tree locked"
 msgstr "låt arbetskatalogen förbli låst"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "orsak till lås"
+
+#: builtin/worktree.c:495
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "ställ in spårningsläge (se git-branch(1))"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:498
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "försök träffa namn på ny gren mot en fjärrspårande gren"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:506
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B och --detach är ömsesidigt uteslutande"
 
-#: builtin/worktree.c:565
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason kräver --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "lagt till med --lock"
+
+#: builtin/worktree.c:574
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track kan endast användas när ny gran skapas"
 
-#: builtin/worktree.c:682
+#: builtin/worktree.c:691
 msgid "show extended annotations and reasons, if available"
 msgstr "visa utökade annoteringar och grunder, om tillgängliga"
 
-#: builtin/worktree.c:684
+#: builtin/worktree.c:693
 msgid "add 'prunable' annotation to worktrees older than <time>"
 msgstr ""
 "lägg till \"prunable\"-annoteringar till arbetskataloger äldre än <tid>"
 
-#: builtin/worktree.c:693
+#: builtin/worktree.c:702
 msgid "--verbose and --porcelain are mutually exclusive"
 msgstr "--verbose och --porcelain är ömsesidigt uteslutande"
 
-#: builtin/worktree.c:720
-msgid "reason for locking"
-msgstr "orsak till lås"
-
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "\"%s\" är inte en arbetskatalog"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Huvudarbetskatalogen kan inte låsas eller låsas upp"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "\"%s\" är redan låst, orsak: %s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "\"%s\" är redan låst"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "\"%s\" är inte låst"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "arbetskataloger med undermoduler kan inte flyttas eller tas bort"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "tvinga flyttning även om arbetskatalogen är smutsig eller låst"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "\"%s\" är inte en huvudarbetskatalog"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "kunde inte lista ut målnamn från \"%s\""
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23634,7 +23820,7 @@
 "kan inte flytta en låst arbetskatalog, orsak till lås: %s\n"
 "använd \"move -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23642,38 +23828,38 @@
 "kan inte flytta en låst arbetskatalog;\n"
 "använd \"move -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "kontroll misslyckades, kan inte flytta arbetskatalog: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "misslyckades flytta \"%s\" till \"%s\""
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "misslyckades köra \"git status\" på \"%s\""
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "\"%s\" innehåller ändrade eller ospårade filer, använd --force för att ta "
 "bort det"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "misslyckades köra \"git status\" på \"%s\", kod %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr "tvinga ta bort även om arbetskatalogen är smutsig eller låst"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23682,7 +23868,7 @@
 "kan inte ta bort en låst arbetskatalog, orsak till låset: %s\n"
 "använd \"remove -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23690,17 +23876,17 @@
 "kan inte ta bort en låst arbetskatalog;\n"
 "använd \"remove -f -f\" för att överstyra, eller lås upp först"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "kontroll misslyckades, kan inte ta bort arbetskatalog: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "reparera: %s: %s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "fel: %s: %s"
@@ -24044,7 +24230,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Kunde inte sätta SSL-bakända till \"%s\": redan valt"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -24094,95 +24280,95 @@
 msgid "redirecting to %s"
 msgstr "omdirigerar till %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "borde inte ha EOF när inte försiktig på EOF"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "fjärrservern sände tillståndslös avdelare"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "fjärrservern sände oväntat svarsavslutningspaketet"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "kunde inte spola tillbaka rpc-postdata - försök öka http.postBuffer"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: felaktig radlängdstecken: %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: oväntat svarsavslutningspaketet"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC misslyckades; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "kan inte hantera så stora sändningar"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "kan inte packa upp anrop; zlib-deflate-fel %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "kan inte packa upp anrop; zlib-slutfel %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "%d byte av längd-huvudet togs emot"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "%d byte av kroppen väntas fortfarande"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "dum http-transport stöder inte grunda arkiv"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "mottagning misslyckades."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "kan inte hämta med sha1 över smart http"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "protokollfel: förväntade sha/ref, fick \"%s\""
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http-transporten stöder inte %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push misslyckades"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: användning: git remote-curl <fjärr> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: fel vid läsning av kommandoström från git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: försökte ta emot utan lokalt arkiv"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: okänt kommando \"%s\" från git"
@@ -24888,7 +25074,7 @@
 
 #: command-list.h:209
 msgid "Map author/committer names and/or E-Mail addresses"
-msgstr "Mappa författar-/incheckarnamn och/eller -e-postadresser"
+msgstr "Kopplar författar-/incheckarnamn och/eller -e-postadresser"
 
 #: command-list.h:210
 msgid "Defining submodule properties"
@@ -25025,70 +25211,27 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "\"$sm_path\" har inte någon utcheckad incheckning"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "Lägger till befintligt arkiv i \"$sm_path\" i indexet"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "\"$sm_path\" finns redan och är inte ett giltigt git-arkiv"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr "En git-katalog för \"$sm_name\" hittades lokalt med fjärr(ar):"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Om du vill återanvända den lokala git-katalogen instället för att klona på "
-"nytt från\n"
-"  $realrepo\n"
-"kan du använda flaggan \"--force\". Om den lokala git-katalogen inte är "
-"korrekt\n"
-"arkiv eller om du är osäker på vad det här betyder, välj ett annat namn med\n"
-"flaggan \"--name\"."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "Aktiverar lokal git-katalog för undermodulen \"$sm_name\" på nytt."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Kan inte checka ut undermodulen \"$sm_path\""
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Misslyckades lägga till undermodulen \"$sm_path\""
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Misslyckades registrera undermodulen \"$sm_path\""
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Kan inte hitta aktuell revision i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Kan inte hämta i undermodulsökväg \"$sm_path\""
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -25097,7 +25240,7 @@
 "Kan inte hitta aktuell revision för ${remote_name}/${branch} i "
 "undermodulsökvägen \"$sm_path\""
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
@@ -25106,7 +25249,7 @@
 "Kan inte hämta i undermodulsökväg \"$displaypath\"; försökte hämta $sha1 "
 "direkt:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -25115,48 +25258,48 @@
 "Hämtade i undermodulssökvägen \"$displaypath\", men den innehöll inte $sha1. "
 "Direkt hämtning av incheckningen misslyckades."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte checka ut \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": checkade ut \"$sha1\""
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte ombasera \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": ombaserade in i \"$sha1\""
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte slå ihop \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": sammanslagen i \"$sha1\""
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Misslyckades köra \"$command $sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": \"$command $sha1\""
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Misslyckades rekursera in i undermodulsökvägen \"$displaypath\""
@@ -25876,40 +26019,40 @@
 msgid "invalid argument %s, expecting --"
 msgstr "felaktigt argument %s, förväntar --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr "lokal zon skiljer sig från GMT med delar av minuter\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "lokal tidszonförskjutning större än eller lika med 24 timmar\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "ödesdigert: kommandot \"%s\" dog med slutkoden %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "textredigeringsprogrammet avslutades med fel, avbryter allting"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr ""
 "\"%s\" innehåller en mellanliggande version av e-postbrevet du skrev.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "\"%s.final\" innehåller det skrivna brevet.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
-msgstr "--dump-alias är inkompatibelt med andra flaggor\n"
+msgstr "--dump-aliases är inkompatibelt med andra flaggor\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -25921,11 +26064,11 @@
 "Sätt sendemail.forbidSendmailVariables till false för att inaktivera denna "
 "kontroll.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Kan inte köra git format-patch från utanför arkivet\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -25933,37 +26076,37 @@
 "\"batch-size\" och \"relogin\" måste anges tillsammans (via kommandorad "
 "eller konfigurationsflagga)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Okänt fält i --suppress-cc: \"%s\"\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Okänd inställning i --confirm: \"%s\"\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "varning: sendmail-alias med citationstecken stöds inte. %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "varning: \":include:\" stöds inte: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "varning: omdirigering til \"/fil\" eller \"|rör\" stöds inte: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "varning: sendmail-raden känns inte igen: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25978,12 +26121,12 @@
 "    * Säga \"./%s\" om du menar en fil; eller\n"
 "    * Ange flaggan --format-patch om du menar ett intervall.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Misslyckades utföra opendir %s: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -25993,17 +26136,17 @@
 "Inga patchfiler angavs!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Ingen ärenderad i %s?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Kunde inte öppna för skrivning %s: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26017,38 +26160,38 @@
 "\n"
 "Rensa brevkroppen om du inte vill sända någon sammanfattning.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Misslyckades öppna %s: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Misslyckades öppna %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Sammanfattande brev tomt, hoppar över\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Är du säker på att du vill använda <%s> [Y=ja, N=nej]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr ""
 "Följande filer är åttabitars, men anger inte en Content-Transfer-Encoding.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Vilken åttabitarsteckenkodning ska jag ange [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26061,21 +26204,21 @@
 "har mallärendet \"*** SUBJECT HERE ***\". Använd --force om du verkligen "
 "vill sända.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "Till vem ska breven sändas (om någon)?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "ödesdigert: aliaset \"%s\" expanderar till sig själv\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "Message-ID att använda som In-Reply-To för det första brevet (om något)? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "fel: kunde inte få fram en giltig adress från: %s\n"
@@ -26083,16 +26226,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "Vad vill du göra med adressen? (q=avsluta, d=kasta, e=redigera): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "CA-sökvägen \"%s\" finns inte"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26119,114 +26262,114 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "Sända brevet? (y=ja, n=nej, e=redigera, q=avsluta, a=alla): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Svar krävs på frågan \"Sända brevet?\""
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Nödvändig SMTP-server har inte angivits korrekt."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Servern stöder inte SMARTTLS! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS misslyckades! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Kan inte initiera SMTP korrekt. Kontrollera inställningarna och använd --"
 "smtp-debug."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Misslyckades sända %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Test-Sände %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Sände %s\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Test-OK. Loggen säger:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. Loggen säger:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Resultat: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Resultat: OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "kan inte öppna filen %s"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Lägger till cc: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Lägger till to: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(icke-mbox) Lägger till cc: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(kropp) Lägger till cc: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Kunde inte köra \"%s\""
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Lägger till %s: %s från: \"%s\"\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) misslyckades stänga röret till \"%s\""
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "kan inte sända brev som sjubitars"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "ogiltig överföringskondning"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26237,12 +26380,12 @@
 "%s\n"
 "varning: inga patchar har sänts\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "kunde inte öppna %s: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26251,7 +26394,7 @@
 "ödesdigert: %s:%d är längre än 998 tecken\n"
 "varning: inga patchar har sänts\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
@@ -26259,11 +26402,26 @@
 "säkerhetskopior.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 
+#~ msgid "unable to write stateless separator packet"
+#~ msgstr "kan inte skriva tillståndslöst avdelarpaket"
+
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
+
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
+
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
+
+#~ msgid "remote server sent stateless separator"
+#~ msgstr "fjärrservern sände tillståndslös avdelare"
+
 #~ msgid "--cached and --3way cannot be used together."
 #~ msgstr "--cached och --3way kan inte användas samtidigt."
 
@@ -26639,9 +26797,6 @@
 #~ msgid "Cannot store %s"
 #~ msgstr "Kan inte spara %s"
 
-#~ msgid "initialize sparse-checkout"
-#~ msgstr "initiera sparse-checkout"
-
 #~ msgid "set sparse-checkout patterns"
 #~ msgstr "ställ in filter för gles utcheckning"
 
@@ -27564,9 +27719,6 @@
 #~ msgid "  (unable to update local ref)"
 #~ msgstr "  (kunde inte uppdatera lokal ref)"
 
-#~ msgid "Reinitialized existing"
-#~ msgstr "Ominitierade befintligt"
-
 #~ msgid "Initialized empty"
 #~ msgstr "Initierade tomt"
 
diff --git a/po/tr.po b/po/tr.po
index e26ca7d..84b8be3 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,8 +1,8 @@
 # Turkish translations for Git
 # Git Türkçe çevirileri
-# Copyright (C) 2020-2021 Emir SARI <bitigchi@me.com>
+# Copyright (C) 2020-2021 Emir SARI <emir_sari@msn.com>
 # This file is distributed under the same license as the Git package.
-# Emir SARI <bitigchi@me.com>, 2020-2021
+# Emir SARI <emir_sari@msn.com>, 2020-2021
 #
 # ######################################################### #
 #     Git Türkçe kavramlar dizini / Git Turkish Glossary    #
@@ -90,9 +90,9 @@
 msgstr ""
 "Project-Id-Version: Git Turkish Localization Project\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-17 18:00+0300\n"
-"Last-Translator: Emir SARI <bitigchi@me.com>\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-03 18:00+0300\n"
+"Last-Translator: Emir SARI <emir_sari@msn.com>\n"
 "Language-Team: Turkish (https://github.com/bitigchi/git-po/)\n"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
@@ -105,8 +105,8 @@
 msgid "Huh (%s)?"
 msgstr "Pardon (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "indeks okunamadı"
@@ -135,7 +135,7 @@
 msgid "could not stage '%s'"
 msgstr "'%s' hazırlanamadı"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "indeks yazılamadı"
 
@@ -193,12 +193,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "birleştirilmeyenler yok sayılıyor: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Yalnızca ikili dosyalar değiştirildi.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Değişiklik yok.\n"
@@ -275,11 +275,11 @@
 msgid "(empty) select nothing"
 msgstr "(boş) hiçbir şey seçme"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Komutlar ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Şimdi ne olacak"
 
@@ -291,12 +291,13 @@
 msgid "unstaged"
 msgstr "hazırlanmamış"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "yol"
@@ -305,7 +306,7 @@
 msgid "could not refresh index"
 msgstr "indeks yenilenemedi"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Güle güle.\n"
@@ -608,34 +609,34 @@
 "a - bu parçayı ve sonraki tüm parçaları uygula\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini uygulama\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "parça üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "renklendirilmiş parça üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "diff ayrıştırılamadı"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "renklendirilmiş diff ayrıştırılamadı"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "'%s' çalıştırılamadı"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter ögesinden eşleşmeyen çıktı"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -643,7 +644,7 @@
 "Süzgeciniz kendisinin girdi ve çıktı satırları arasında\n"
 "birebir karşılık sağlamalıdır."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -652,7 +653,7 @@
 "şurada bağlam satırı #%d bekleniyordu:\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -665,11 +666,11 @@
 "\tşununla bitmiyor:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "El ile parça düzenleme kipi -- hızlıca öğrenmek için aşağıya bakın.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -683,7 +684,7 @@
 "%c kaldırılacak.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -693,11 +694,11 @@
 "sunulacaktır. Parçanın tüm satırları kaldırılırsa düzenleme durdurulur\n"
 "ve parça değiştirilmeden bırakılır.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "parça üstbilgisi ayrıştırılamadı"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' başarısız oldu"
 
@@ -713,26 +714,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Düzenlediğiniz parça uygulanamıyor. Yeniden düzenlensin mi (\"n (hayır)\" "
 "ıskartaya çıkarır!) [y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Seçili parçalar indekse uygulanamıyor!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Çalışma ağacına yine de uygulansın mı? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Hiçbir şey uygulanmadı.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -754,69 +755,69 @@
 "e - geçerli parçayı el ile düzenle\n"
 "? - yardımı yazdır\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Öncesinde parça yok"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Sonrasında parça yok"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Gidilecek başka bir parça yok"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "hangi parçaya gidilsin (daha fazla görmek için <ret>)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "hangi parçaya gidilsin? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Geçersiz sayı: '%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Üzgünüm, yalnızca %d parça kullanılabilir."
 msgstr[1] "Üzgünüm, yalnızca %d parça kullanılabilir."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Aranacak başka parça yok"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "düzenli ifade aransın mı? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Hatalı oluşturulmuş düzenli ifade %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Verilen dizgi ile eşleşen bir parça yok"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Üzgünüm, bu parça bölünemiyor"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "%d parçaya bölündü."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Üzgünüm, bu parça düzenlenemiyor"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' başarısız oldu"
 
@@ -871,7 +872,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Çözüme kavuşturulmamış bir çakışmadan dolayı çıkılıyor."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Birleştirmenizi sonuçlandırmadınız (MERGE_HEAD mevcut)."
 
@@ -896,8 +897,9 @@
 #: advice.c:303
 msgid ""
 "Disable or modify the sparsity rules if you intend to update such entries."
-msgstr "Böyle girdileri güncellemeyi düşünüyorsanız aralıklandırma kurallarını "
-"devre dışı bırakın veya değiştirin."
+msgstr ""
+"Böyle girdileri güncellemeyi düşünüyorsanız aralıklandırma kurallarını devre "
+"dışı bırakın veya değiştirin."
 
 #: advice.c:310
 #, c-format
@@ -1256,8 +1258,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s, %o türüne iye, %o bekleniyordu"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "geçersiz yol '%s'"
@@ -1347,7 +1349,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "%s için önbellek girdisi eklenemiyor"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "şuraya yazılamadı: '%s'"
@@ -1437,7 +1439,7 @@
 msgstr[0] "Boşluk hataları düzeltildikten sonra %d satır uygulandı."
 msgstr[1] "Boşluk hataları düzeltildikten sonra %d satır uygulandı."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Yeni indeks dosyası yazılamıyor"
 
@@ -1449,7 +1451,7 @@
 msgid "apply changes matching the given path"
 msgstr "verilen yol ile eşleşen değişiklikleri uygula"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "sayı"
 
@@ -1513,9 +1515,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "en az <n> bağlam satırının eşleştiğinden emin ol"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "eylem"
@@ -1545,8 +1547,8 @@
 msgstr "üst üste binen parçalara izin ver"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ayrıntı ver"
 
@@ -1558,7 +1560,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "parça üstbilgisindeki satır sayımına güvenme"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "kök"
 
@@ -1600,7 +1602,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "yol çok uzun (%d karakter, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "söndürme hatası (%d)"
@@ -1634,13 +1636,13 @@
 msgstr "%s okunamıyor"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "'%s' okunamadı"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "yol belirteci '%s' hiçbir dosya ile eşleşmedi"
@@ -1682,7 +1684,7 @@
 msgid "archive format"
 msgstr "arşiv biçimi"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "önek"
 
@@ -1693,7 +1695,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1724,7 +1726,8 @@
 msgstr "desteklenen arşiv biçimlerini listele"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "depo"
 
@@ -1732,7 +1735,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "arşivi uzak konum deposu <depo>'dan al"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "komut"
@@ -1918,11 +1921,11 @@
 "--reverse ve --first-parent birlikte en son işlemenin belirtilmesini "
 "gerektiriyor"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "revizyonda gezinme ayarlaması başarısız oldu"
 
@@ -2086,118 +2089,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "%s çalışma ağacının HEAD'i güncellenmemiş"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "bilinmeyen demet sağlama algoritması: %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "bilinmeyen yetenek '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' bir v2 veya v3 demet dosyası gibi görünmüyor"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "tanımlanamayan üstbilgi: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "'%s' açılamadı"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Depo aşağıdaki önkoşul işlemelere iye değil:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "bir demeti doğrulamak için bir depo gerekiyor"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Demet şu başvuruyu içeriyor:"
 msgstr[1] "Demet şu %d başvuruyu içeriyor:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Demet tam bir geçmiş kaydını yazar."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Demet şu işlemeyi gerektiriyor:"
 msgstr[1] "Demet şu %d işlemeyi gerektiriyor:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "demet açıklayıcısı çoğaltılamıyor"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "pack-objects ortaya çıkarılamadı"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects sonlandı"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "'%s' başvurusu revizyon listesi seçenekleri tarafından dışlandı"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "desteklenmeyen demet sürümü %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "demet sürümü %d, %s algoritması ile yazılamıyor"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "tanımlanamayan argüman: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Boş demet oluşturma reddediliyor."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "'%s' oluşturulamıyor"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack sonlandı"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "iri parça numarası sonlandırması beklenenden önce ortaya çıkıyor"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "düzgün olmayan iri parça ofseti %<PRIx64> ve %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "yinelenmiş iri parça numarası %<PRIx32> bulundu"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "en son iri parçanın numarası sıfır olmayan %<PRIx32>"
@@ -2265,12 +2268,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "commit-graph, taşım oluşturma verisi gerektiriyor; ancak hiç yok"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "%s işlemesi ayrıştırılamıyor"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "%s nesnesinin türü alınamıyor"
@@ -2333,7 +2336,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "temel grafiği numaralarının doğru sayısı yazılamadı"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "%s öncü dizinleri oluşturulamıyor"
@@ -2383,59 +2386,59 @@
 msgid "too many commits to write graph"
 msgstr "grafik yazımı için çok fazla işleme"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "commit-graph dosyasının sağlama toplamı yanlış ve büyük olasılıkla hasar "
 "görmüş"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "commit-graph hatalı nesne tanımlayıcı sırasına iye: %s, sonra %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "commit-graph hatalı fanout değerine iye: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "%s işlemesi commit-graph'tan ayrıştırılamadı"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "İşleme grafiğindeki işlemeler doğrulanıyor"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "%s işlemesi commit-graph için olan nesne veritabanından ayrıştırılamadı"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "commit-graph'teki %s işlemesi için olan kök ağaç nesne tanımlayıcısı %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "%s işlemesi için olan commit-graph üst öge listesi çok uzun"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s için olan commit-graph üst ögesi %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "%s işlemesi için olan commit-graph üst öge listesi erkenden sonlanıyor"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2443,7 +2446,7 @@
 "%s işlemesi için commit-graph kuşak sayısı sıfır; ancak başka yerlerde "
 "sıfırdan farklı"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2451,19 +2454,19 @@
 "%s işlemesi için commit-graph kuşak sayısı sıfırdan farklı; ancak başka "
 "yerlerde sıfır"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr "%s işlemesi için commit-graph kuşağı %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "%s işlemesi için commit-graph içindeki işleme tarihi %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "%s ayrıştırılamadı"
@@ -2755,7 +2758,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "nothing, matching, simple, upstream veya current içinden biri olmalı"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "hatalı paket sıkıştırma düzeyi %d"
@@ -2775,110 +2778,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "'%s' yapılandırma ikili nesnesi çözülemiyor"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "%s ayrıştırılamadı"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "komut satırı yapılandırması ayrıştırılamıyor"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "yapılandırma dosyaları okunurken beklenmedik bir hata oluştu"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Geçersiz %s: '%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange değeri '%d' 0 ve 100 arasında olmalı"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "'%s' komut satırı yapılandırmasından ayrıştırılamıyor"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "hatalı yapılandırma değişkeni '%s', '%s' dosyası %d. satırda"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "geçersiz bölüm adı '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s birden çok değere iye"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "yeni yapılandırma dosyası %s yazılamadı"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "%s yapılandırma dosyası kilitlenemedi"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "%s açılıyor"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "geçersiz dizgi: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "geçersiz yapılandırma dosyası %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "%s üzerinde fstat başarısız oldu"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "'%s' mmap yapılamıyor"
+msgid "unable to mmap '%s'%s"
+msgstr "'%s'%s mmap yapılamıyor"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "%s üzerinde chmod başarısız oldu"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "%s yapılandırma dosyası yazılamadı"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "'%s', '%s' olarak ayarlanamadı"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "'%s' ayarı kapatılamadı"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "geçersiz bölüm adı: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "'%s' için değer eksik"
@@ -3055,7 +3058,7 @@
 msgid "unable to fork"
 msgstr "çatallanamıyor"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Bağlantı denetleniyor"
 
@@ -3176,7 +3179,7 @@
 msgid "path name too long for external filter"
 msgstr "dış süzgeç için yol adı pek uzun"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3184,16 +3187,16 @@
 msgstr ""
 "'%s' dış süzgeci artık kullanılamıyor; ancak tüm yolların süzümü bitmedi"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "doğru/yanlış geçerli bir çalışma ağacı kodlaması değil"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: temiz süzgeç '%s' başarısız oldu"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: is süzgeci %s başarısız oldu"
@@ -3320,36 +3323,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "%d delta adası imlendi, bitti.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "--diff-merges için bilinmeyen değer: %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base erimlerle çalışmaz"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base yalnızca işlemelerle çalışır"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "HEAD alınamıyor"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "bir birleştirme temeli bulunamadı"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "birden çok birleştirme temeli bulundu"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<seçenekler>] <yol> <yol>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3406,35 +3409,50 @@
 "'diff.dirstat' yapılandırma değişkeninde hatalar bulundu:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "dış diff sonlandı, %s konumunda durdu"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check ve -s birlikte kullanılmaz"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S ve --find-object birlikte kullanılmaz"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G ve --pickaxe-regex birlikte kullanılamaz, --pickaxe-regex'i -S ile "
+"kullanın"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all ve --find-object birlikte kullanılamaz, --pickaxe-all'u -G ve -"
+"S ile kullanın"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow tam olarak yalnızca bir yol belirteci gerektiriyor"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "geçersiz --stat değeri: %s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s bir sayısal değer bekliyor"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3443,42 +3461,42 @@
 "--dirstat/-X seçenek parametresi ayrıştırılamadı:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
-msgstr "şurada bilinmeyen değişiklik sınıfı '%c': -diff-filter=%s"
+msgstr "şurada bilinmeyen değişiklik sınıfı '%c': --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "şundan sonra bilinmeyen değer: ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "'%s' çözülemiyor"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s <n>/<m> biçimi bekliyor"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s bir karakter bekliyor, '%s' aldı"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "hatalı --color-moved argümanı: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws içinde geçersiz kip '%s'"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3486,162 +3504,162 @@
 "diff-algorithm seçeneği şunları kabul eder: \"myers\", \"minimal\", "
 "\"patience\" ve \"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s için geçersiz argüman"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "-I'ya geçersiz düzenli ifade verildi: '%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "--submodule seçenek parametresi ayrıştırılamadı: '%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "hatalı --word-diff argümanı: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Diff çıktısı biçimlendirme seçenekleri"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "yama oluştur"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "diff çıktısını gizle"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "diff'leri <n> satır bağlamlı oluştur"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "diff'i ham biçimde oluştur"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "'-p --raw eşanlamlısı"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "'-p --stat eşanlamlısı"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "makinede okunabilen --stat"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "--stat'ın yalnızca son satırını çıktı ver"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "her alt dizin için göreceli bir miktar değişikliğin dağıtımını çıktı ver"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
-msgstr "--dirstat-cumulative eşanlamlısı"
+msgstr "--dirstat=cumulative eşanlamlısı"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "--dirstat=files,param1,param2... eşanlamlısı"
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "değişiklikler çakışma imleyicileri veya boşluk hataları doğuruyorsa uyar"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "sıkışık özet; örn. oluşumlar, yeniden adlandırmalar ve kip değişiklikleri"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "yalnızca değiştirilen dosyaların adlarını göster"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "yalnızca değiştirilen dosyaların adlarını ve durumlarını göster"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<genişlik>[,<ad-genişlik>[,<sayım>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "diffstat oluştur"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<genişlik>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "diffstat'ı verilmiş bir genişlik ile oluştur"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "diffstat'ı verilmiş bir ad genişliği ile oluştur"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "diffstat'ı verilmiş bir grafik genişliği ile oluştur"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<sayım>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "diffstat'ı kısıtlı satırlarla oluştur"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "diffstat içinde ufak özet oluştur"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "uygulanabilir bir ikili diff çıktısı ver"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "\"index\" satırlarında tam ön ve songörüntü nesne adlarını göster"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "renkli diff göster"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<çeşit>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 "diff'teki boşluk hatalarını 'context', 'old' veya 'new' satırlarında vurgula"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3649,88 +3667,88 @@
 "--raw veya --numstat içinde yol adlarını tahrip etme ve çıktı alanı "
 "sonlandırıcıları olarak NUL'ları kullan"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<önek>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "\"a/\" yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "\"b/\"yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "çıktının her satırının başına ek bir önek ekle"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "hiçbir kaynak ve hedef önekini gösterme"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "diff parçaları arasındaki bağlamı belirtilen satır sayısı kadar göster"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<karakter>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "yeni satırı belirtmek için '+' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "eski satırı belirtmek için '-' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "bağlam belirtmek için ' ' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Diff yeniden adlandırma seçenekleri"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "tam yeniden yazım değişikliklerini silme ve oluşturma olarak ayır"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "yeniden adlandırmaları algıla"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "silmeler için öngörüntüyü atla"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "kopyaları algıla"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "değiştirilmemiş dosyaları kopyaları bulmak için kaynak olarak kullan"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "yeniden adlandırma algılamasını devre dışı bırak"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "boş ikili nesneleri yeniden adlandırma kaynağı olarak kullan"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 "bir dosyanın geçmişini listelemeyi yeniden adlandırmaların ötesinde sürdür"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3738,234 +3756,234 @@
 "eğer yeniden adlandırma/kopyalama hedeflerinin sayısı verilen sınırı aşarsa "
 "yeniden adlandırma/kopyalama algılamasını önle"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Diff algoritma seçenekleri"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "olabilecek en küçük diff'i üret"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "satırları karşılaştırırken boşlukları yok say"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "boşluk sayısındaki değişiklikleri yok say"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "satır sonundaki boşluk değişikliklerini yok say"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "satır sonundaki satırbaşı karakterini yok say"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "satırlarının tümü boş olan değişiklikleri yok say"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<ifade>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "satırlarının tümü <ifade> ile eşleşen değişiklikleri yok say"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "diff parça sınırlarını kolay okuma için bulgusal olarak kaydır"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "diff'i \"patience diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "diff'i \"histogram diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<algoritma>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "bir diff algoritması seç"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<metin>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "diff'i \"anchored diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<kip>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "sözcük diff'ini değiştirilen sözcükleri sınırlandırmak için <kip> kullanarak "
 "göster"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "bir sözcüğün ne olduğuna karar vermek için <ifade> kullan"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "şuna eşdeğer: --word-diff=color --word-diff-regex=<ifade>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "taşınan kod satırları farklı renklendirilir"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "boşluklar --color-moved içinde nasıl yok sayılır"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Diğer diff seçenekleri"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "altdizinden çalıştırıldığında dışarıdaki değişiklikleri hariç tut ve "
 "göreceli yolları göster"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "tüm dosyaları metin olarak varsay"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "iki girdiyi değiştir, diff'i tersine döndür"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "ayrımlar varsa 1 ile, yoksa 0 ile çık"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "tüm program çıktısını devre dışı bırak"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "bir dış diff yardımcısının çalıştırılmasına izin ver"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "ikili dosyaları karşılaştırırken dış metin dönüştürme süzgeçlerini çalıştır"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<ne-zaman>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "diff oluştururken altmodüllere olan değişiklikleri yok say"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<biçim>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "altmodüllerdeki değişikliklerin nasıl gösterileceğini belirt"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "indeksten 'git add -N' girdilerini gizle"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "indekste 'git add -N' girdilerine gerçekmiş gibi davran"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<dizi>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "belirtilen dizinin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "belirtilen düzenli ifadenin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "değişiklik setinde -S veya -G içeren tüm değişiklikleri göster"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "-S içindeki <dizi>'yi genişletilmiş POSIX düzenli ifadesi olarak işle"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "dosyaların çıktıda hangi sırayla görüneceğini denetle"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<yol>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "öncelikle belirtilen yoldaki değişikliği göster"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "belirtilen yola olan çıktıyı atla"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<nesne-no>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "belirtilen nesnenin görülme sayısını değiştiren ayrımlara bak"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "dosyaları diff türüne göre seç"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<dosya>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "belirli bir dosyaya çıktı ver"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
 msgstr ""
-"Kesin olmayan yeniden adlandırma algılaması çok fazla dosya olmasından "
+"Geniş kapsamlı yeniden adlandırma algılaması çok fazla dosya olmasından "
 "dolayı atlandı."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "Çok fazla dosya olmasından dolayı yalnızca değiştirilen yollardan kopyalar "
 "bulundu."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3978,7 +3996,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "orderfile '%s' okunamadı"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Kesin olmayan yeniden adlandırma algılaması gerçekleştiriliyor"
 
@@ -3987,59 +4005,59 @@
 msgid "No such path '%s' in the diff"
 msgstr "diff'te '%s' diye bir yol yok"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "yol belirteci '%s' git'in tanıdığı herhangi bir dosya ile eşleşmedi"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "tanımlanamayan dizgi: '%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "tanımlanamayan negatif dizgi: '%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr "sparse-checkout dosyanızın sorunları olabilir: '%s' dizgisi yinelenmiş"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "koni dizgi eşleşmesi devre dışı bırakılıyor"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "%s bir 'exclude' dosyası olarak kullanılamıyor"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "'%s' dizini açılamadı"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "çekirdek adı ve bilgisi alınamadı"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "izlenmeyen önbellek bu sistemde veya konumda devre dışı bırakılmış"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "%s deposundaki indeks dosyası hasarlı"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "%s için dizinler oluşturulamadı"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "git dizini '%s' konumundan '%s' konumuna göç ettirilemedi"
@@ -4049,11 +4067,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "İpucu: Düzenleyicinizin dosyayı kapatması bekleniyor...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "İçerik süzülüyor"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "'%s' dosyasının bilgileri alınamadı"
@@ -4063,7 +4081,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "hatalı git ad alanı yolu \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "GIT_DIR şuna ayarlanamadı: '%s'"
@@ -4228,7 +4246,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "kaynak depo sığ, klonlama için reddet"
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: getirme başarısız"
 
@@ -4250,7 +4268,7 @@
 msgid "Server supports filter"
 msgstr "Sunucu süzgeç destekliyor"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "uzak konuma istek yazılamıyor"
 
@@ -4306,24 +4324,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: yanıt sonu paketi bekleniyordu"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "eşleşen uzak dal ucu yok"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "uzak konum gereken tüm nesneleri göndermedi"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "uzak konumdan beklenmedik 'ready'"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "böyle bir uzak başvuru yok: %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Sunucu %s tanıtılmamış nesnesi için isteğe izin vermiyor"
@@ -4343,8 +4361,8 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
-msgstr "log.graphColors içindeki '%.*s' geçersiz rengini yok say"
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "log.graphColors içindeki '%.*s' geçersiz renk yok sayıldı"
 
 #: grep.c:531
 msgid ""
@@ -4354,18 +4372,18 @@
 "verilen dizgi NULL baytı içeriyor (-f <dosya> aracılığıyla). Bu yalnızca "
 "PCRE v2 altında -P ile desteklenir"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': %s okunamıyor"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "'%s' dosyasının bilgileri alınamadı"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': kısa okuma"
@@ -4606,7 +4624,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "'object:type=<tür>' için '%s' geçerli bir nesne türü değil"
 
 #: list-objects-filter-options.c:124
@@ -4653,7 +4671,7 @@
 "'%s' girdisi (%s ağacında) ikili nesne kipine iye; ancak bir ikili geniş "
 "nesne değil"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "%s işlemesi için kök ağacı yüklenemiyor"
@@ -4700,32 +4718,32 @@
 msgid "bad action '%s' for '%s'"
 msgstr "hatalı eylem '%s', '%s' için"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "%s altmodülü birleştirilemedi (çıkış yapılmadı)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "%s altmodülü birleştirilemedi (işlemeler mevcut değil)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "%s altmodülü birleştirilemedi (işlemeler merge-base'i takip etmiyor)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Not: %s altmodülü %s yönüne ileri sarılıyor"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "'%s' altmodülünü birleştirilemedi"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4734,7 +4752,7 @@
 "%s altmodülü birleştirilemedi; ancak olası bir birleştirme çözümü mevcut:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4750,7 +4768,7 @@
 "\n"
 "komutu bu öneriyi kabul edecektir.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4760,21 +4778,21 @@
 "mevcut:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "İç birleştirme çalıştırılamadı"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "%s veritabanına eklenemedi"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "%s kendiliğinden birleştiriliyor"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4784,7 +4802,7 @@
 "örtülü yeniden adlandırmanın aşağıdaki yolları oraya koymasına engel oluyor: "
 "%s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4794,7 +4812,7 @@
 "eşlemlenemiyor; örtülü dizin yeniden adlandırmaları aşağıdaki yolları oraya "
 "koymayı denedi: %s."
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4805,7 +4823,7 @@
 "adlandırılacağı belirsiz; herhangi bir hedef dosyaların çoğunu almadan "
 "birden çok başka dizine yeniden adlandırılmıştı."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4814,7 +4832,7 @@
 "UYARI: %s -> %s yeniden adlandırmasını %s ögesine uygulamadan kaçınılıyor, "
 "çünkü %s ögesinin kendisi yeniden adlandırıldı."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4823,7 +4841,7 @@
 "Yol güncellendi: %s, (%s içinde eklenen) %s içinde yeniden adlandırılan bir "
 "dizinde; onu %s konumuna taşıdı."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4832,7 +4850,7 @@
 "Yol güncellendi: %s, %s olarak yeniden adlandırıldı (%s içinde), %s içinde "
 "yeniden adlandırılan bir dizinde; onu %s konumuna taşıdı."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4841,7 +4859,7 @@
 "ÇAKIŞMA (dosya konumu): %s, (%s içinde eklenen) %s içinde yeniden "
 "adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4850,14 +4868,14 @@
 "ÇAKIŞMA (dosya konumu): %s, %s olarak yeniden adlandırıldı (%s içinde), %s "
 "içinde yeniden adlandırılan bir dizinde, belki de %s konumuna taşınmalı."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "ÇAKIŞMA (y. adlandır/y. adlandır): %s->%s olarak adlandırıldı (%s içinde) ve "
 "ek olarak %s olarak da adlandırıldı (%s içinde)."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4868,24 +4886,24 @@
 "içerik çakışmaları var ve başka bir yolla çarpışıyor; bu iç içe geçmiş "
 "çakışmaimleyicilerine neden olabilir."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "ÇAKIŞMA (yeniden adlandır/sil): %s->%s olarak adlandırıldı (%s içinde); "
 "ancak %s içinde silindi."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "%s nesnesi okunamıyor"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "%s nesnesi ikili bir nesne değil"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -4894,7 +4912,7 @@
 "ÇAKIŞMA (dosya/dizin): Dizin, şuradan %s yolunda: %s; bunun yerine %s "
 "konumuna taşınıyor."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -4904,7 +4922,7 @@
 "ikisi de yeniden adlandırıldı; böylelikle başka bir yerde kayıtları "
 "yazılabilir."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -4914,24 +4932,24 @@
 "bir tanesi yeniden adlandırıldı; böylelikle her birinin başka bir yerde "
 "kayıtları yazılabilir."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "içerik"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "ekle/ekle"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "altmodül"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "ÇAKIŞMA (%s): %s içinde birleştirme çakışması"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4940,24 +4958,24 @@
 "ÇAKIŞMA (değiştir/sil): %s silindi (%s içinde) ve %s içinde değiştirildi. %s "
 "sürümü (şunun: %s) ağaçta bırakıldı."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
 "copy renamed to %s"
 msgstr ""
-"Not: %s güncel değil ve çakışmalı sürümlerin çıkışının önünde; eski kopya "
-"%s olarak yeniden adlandırıldı."
+"Not: %s güncel değil ve çakışmalı sürümlerin çıkışının önünde; eski kopya %s "
+"olarak yeniden adlandırıldı."
 
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "şu ağaçlar için birleştirme bilgisi toplama başarısız: %s, %s, %s"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4967,107 +4985,107 @@
 "yazılacak:\n"
 "\t%s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Tümü güncel."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(hatalı işleme)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr ""
 "add_cacheinfo '%s' yolu için başarısız oldu; birleştirme iptal ediliyor."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr "add_cacheinfo '%s' yolu için yenilenemedi; birleştirme iptal ediliyor."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "'%s'%s yolu oluşturulamadı"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Altdizine yer açmak için %s kaldırılıyor\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": bir D/F çakışması olabilir mi?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "'%s' konumundaki izlenmeyen dosyayı kaybetme reddediliyor"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "%s '%s' nesnesi okunamıyor"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "%s '%s' için ikili nesne bekleniyordu"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "'%s' açılamadı: %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "'%s' için sembolik bağ oluşturulamadı: %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "şununla ne yapılacağı bilinmiyor: %06o %s '%s'"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "%s altmodülü şu işlemeye ileri sarılıyor:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "%s altmodülü ileri sarılıyor"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "%s altmodülü birleştirilemedi (işlemeleri takip eden birleştirme bulunamadı)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "%s altmodülü birleştirilemedi (ileri sarım değil)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Şu altmodül için olası bir birleştirme çözümü bulundu:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "%s altmodülü birleştirilemedi (birden çok birleştirme bulundu)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 "Hata: %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine "
 "%s konumuna yazılacak."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5076,7 +5094,7 @@
 "ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
 "ağaçta bırakıldı."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5085,7 +5103,7 @@
 "ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
 "(%s) sürümü ağaçta bırakıldı."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5094,7 +5112,7 @@
 "ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
 "ağaçta %s konumunda bırakıldı."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5103,45 +5121,45 @@
 "ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
 "(%s) sürümü ağaçta %s konumunda bırakıldı."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "yeniden adlandır"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "yeniden adlandırıldı"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "%s konumundaki kirli dosyayı kaybetme reddediliyor"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 "Engel olduğu halde %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "ÇAKIŞMA (yeniden adlandır/ekle): %s->%s olarak adlandırıldı (%s içinde). %s "
 "eklendi (%s içinde)."
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s bir dizin (%s içinde), bunun yerine %s olarak ekleniyor"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 "%s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine %s "
 "olarak ekleniyor"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5150,18 +5168,18 @@
 "ÇAKIŞMA (y. adlandır/y. adlandır): \"%s\"->\"%s\" olarak adlandır (\"%s\" "
 "dalında), \"%s\"->\"%s\" olarak adlandır (\"%s\"%s içinde)"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (çözülmeden bırakıldı)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "ÇAKIŞMA (y. adlandır/y. adlandır): %s->%s olarak adlandır (%s içinde). %s->"
 "%s olarak adlandır (%s içinde)"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5172,7 +5190,7 @@
 "yerleştirileceği belirsiz; çünkü %s dizini birden çok başka dizine yeniden "
 "adlandırılırken hiçbir hedef dosyaların büyük çoğunluğunu almadı."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5181,79 +5199,79 @@
 "ÇAKIŞMA (y. adlandır/y. adlandır): Dizini %s->%s olarak adlandır (%s "
 "içinde). Dizini %s->%s olarak adlandır (%s içinde)."
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "değiştir"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "değiştirilmiş"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s atlandı (mevcut ile aynı biçimde birleştirildi)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Bunun yerine %s olarak ekleniyor"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "%s kaldırılıyor"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "dosya/dizin"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "dizin/dosya"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "ÇAKIŞMA (%s): %s adıyla bir dizin var (%s içinde). %s, %s olarak ekleniyor."
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "%s ekleniyor"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "ÇAKIŞMA (ekle/ekle): %s içinde birleştirme çakışması"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "%s ve %s ağaçlarının birleştirilmesi başarısız"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Birleştiriliyor:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u ortak ata bulundu:"
 msgstr[1] "%u ortak ata bulundu:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "birleştirme herhangi bir işleme döndürmedi"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "'%s' nesnesi ayrıştırılamadı"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "İndeks yazılamıyor."
@@ -5262,8 +5280,8 @@
 msgid "failed to read the cache"
 msgstr "önbellek okunamadı"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "yeni indeks dosyası yazılamıyor"
@@ -5337,106 +5355,114 @@
 msgid "failed to locate object %d in packfile"
 msgstr "%d nesnesi paket dosyasında bulunamadı"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "ters indeks dosyası depolanamıyor"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "mevcut multi-pack-index yok sayılıyor; sağlama toplamı uyumsuzluğu"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Paket dosyaları multi-pack-index'e ekleniyor"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "bırakılacak pack-file %s görülmedi"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "bilinmeyen tercih edilen paket: '%s'"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "tercih edilen '%s' paketinin süresi geçmiş"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "indekslenecek paket dosyası yok."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "%s kaldırılamadı"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "multi-pack-index %s konumunda temizlenemedi"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "multi-pack-index dosyası mevcut, ancak ayrıştırılamadı"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "yanlış sağlama toplamı"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Başvurulmuş paket dosyaları aranıyor"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "oid fanout sırasız: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "midx bir oid içermiyor"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "multi-pack-index içindeki OID sırası doğrulanıyor"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "oid araması sırasız: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Nesneler paket dosyasına göre sıralanıyor"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Nesne ofsetleri doğrulanıyor"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "şunun için paket girdisi yüklenemedi: oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "paket dosyası %s için pack-index yüklenemedi"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "şunun için yanlış nesne ofseti: oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Başvurulmuş nesneler sayılıyor"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Başvurulmamış paket dosyaları bulunuyor ve siliniyor"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "pack-objects başlatılamadı"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "pack-objects bitirilemedi"
 
@@ -5500,266 +5526,267 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr "nesne dizini %s yok; şurayı denetleyin: .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "alternatif nesne yolu olağanlaştırılamıyor: %s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s: alternatif nesne depoları yok sayılıyor, iç içe geçme pek derin"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "nesne dizini olağanlaştırılamıyor: %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "alternatifler kilit dosyası fdopen yapılamıyor"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "alternatifler dosyası okunamıyor"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "yeni alternatifler dosyası yerine taşınamıyor"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "'%s' diye bir yol yok"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "Bağlantı yapılmış çıkış olarak '%s' başvuru deposu henüz desteklenmiyor."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "Başvuru deposu '%s' yerel bir depo değil."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "başvuru deposu '%s' sığ"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "başvuru deposu '%s' aşılı"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "alternatif başvurular ayrıştırılırken geçersiz satır: %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "%<PRIuMAX>, %<PRIuMAX> sınırı üzerinden mmap yapılmaya çalışılıyor"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap başarısız"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap başarısız%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "nesne dosyası %s boş"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "hasar görmüş gevşek nesne '%s'"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "gevşek nesne '%s' sonunda anlamsız veri"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "geçersiz nesne türü"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "%s üstbilgisi --allow-unknown-type ile açılamıyor"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "%s üstbilgisi açılamıyor"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "%s üstbilgisi paketi --allow-unknown-type ile ayrıştırılamıyor"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "%s üstbilgisi ayrıştırılamıyor"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "%s nesnesi okunamadı"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "%s yedeği %s için bulunamadı"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "%s gevşek nesnesi (%s içinde depolanıyor) hasar görmüş"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "paketlenmiş nesne %s (%s içinde depolanıyor) hasar görmüş"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "%s dosyası yazılamıyor"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "'%s' ögesine izin ayarlanamıyor"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "dosya yazım hatası"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "gevşek nesne dosyası kapatılırken hata"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr "%s depo veritabanına nesne eklemek için yetersiz izin"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "geçici dosya oluşturulamıyor"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "gevşek nesne dosyası yazılamıyor"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "yeni nesne %s söndürülemiyor (%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "%s nesnesi üzerinde deflateEnd başarısız oldu (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "%s için olan nesne kaynak verisinden dolayı kafa karışıklığı"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "%s üzerinde utime() başarısız"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "%s için nesne okunamıyor"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "hasar görmüş işleme"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "hasar görmüş etiket"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "%s indekslenirken okuma hatası"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "%s indekslenirken kısa read"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s: veritabanına ekleme başarısız"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s: desteklenmeyen dosya türü"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s geçerli bir nesne değil"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s geçerli bir '%s' nesnesi değil"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "%s açılamıyor"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "%s için sağlama uyuşmazlığı (%s bekleniyordu)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "%s mmap yapılamadı"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "%s üstbilgisi açılamıyor"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "%s üstbilgisi ayrıştırılamıyor"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "%s içeriği açılamıyor"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "kısa nesne ID'si %s belirsiz"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Adaylar:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5782,22 +5809,22 @@
 "iletiyi\n"
 "kapatmak için \"git config advice.objectNameWarning\" yapın."
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "'%.*s' günlüğü yalnızca şuna geri gider: %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "'%.*s' günlüğünde yalnızca %d girdi var"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "'%s' yolu disk üzerinde mevcut; ancak '%.*s' içinde değil"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5806,12 +5833,12 @@
 "'%s' yolu mevcut; ancak '%s' değil\n"
 "İpucu: Şunu mu demek istediniz: '%.*s:%s', nam-ı diğer '%.*s:./%s'?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "'%s' yolu '%.*s' içinde mevcut değil"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5820,7 +5847,7 @@
 "'%s' yolu indekste; ancak %d numaralı alanda değil\n"
 "İpucu: Şunu mu demek istediniz: ':%d:%s'?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5829,21 +5856,21 @@
 "'%s' yolu indekste; ancak '%s' değil\n"
 "İpucu: Şunu mu demek istediniz: '%d:%s', nam-ı diğer ':%d:./%s'?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "'%s' yolu diskte mevcut; ancak indekste değil"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "'%s' diye bir yol yok (ne diskte ne de indekste)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "göreceli yol sözdizimi çalışma ağacı dışında kullanılamaz"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "geçersiz nesne adı: '%.*s'"
@@ -5858,27 +5885,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "%s nesnesi bir %s, %s değil"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "%s nesnesi %d bilinmeyen tür numarasına iye"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "nesne ayrıştırılamıyor: %s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "sağlama uyuşmazlığı %s"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "%s boyutu alınamıyor"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "%s ögesinin disk kullanımı alınamıyor"
@@ -5931,12 +5958,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "ofset paket dosyasının sonundan önce (bozuk .idx?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "paket dosyası %s eşlemlenemiyor%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "ofset %s için paket indeksinin başlangıcından önce (hasarlı indeks?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "ofset %s için paket indeksinin sonundan ötede (kırpılmış index?)"
@@ -6139,8 +6171,8 @@
 msgstr "sınırlandıran paket yazılamıyor"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "durumsuz ayırıcı paketi yazılamıyor"
+msgid "unable to write response end packet"
+msgstr "yanıt sonu paketi yazılamıyor"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6199,19 +6231,19 @@
 msgid "unable to parse --pretty format"
 msgstr "--pretty biçimi ayrıştırılamıyor"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote: getirme altişlemi çatallanamıyor"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "promisor-remote: getirme altişlemine yazılamıyor"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr "promisor-remote: altişlemi getirmek için stdin kapatılamıyor"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "vaatçi uzak konum adı '/' ile başlayamaz: %s"
@@ -6232,7 +6264,7 @@
 msgid "could not read `log` output"
 msgstr "'log' çıktısı okunamadı"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "'%s' işlemesi ayrıştırılamadı"
@@ -6250,64 +6282,64 @@
 msgid "could not parse git header '%.*s'"
 msgstr "git üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "diff oluşturulamadı"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
-msgstr "-p ve --overlay birlikte kullanılmaz"
+msgstr "--left-only ve --right-only birlikte kullanılmaz"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "'%s' günlüğü ayrıştırılamadı"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "dosya arması '%s' eklenmeyecek ('%s' indekste halihazırda var)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "nesne veritabanında boş ikili bir nesne oluşturulamıyor"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 "%s: yalnızca sıradan dosyalar, sembolik bağlar ve git dizinleri eklenebilir"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' çıkışı yapılmış bir işlemeye iye değil"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "'%s' dosyası indekslenemiyor"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "'%s' indekse eklenemiyor"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "'%s' dosyasının bilgileri alınamıyor"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' hem bir dosya hem de bir dizin olarak görünüyor"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "İndeks yenileniyor"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6316,7 +6348,7 @@
 "index.version ayarlanmış; ancak değer geçersiz.\n"
 "%i sürümü kullanılıyor"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6325,143 +6357,143 @@
 "GIT_INDEX_VERSION ayarlanmış; ancak değer geçersiz.\n"
 "%i sürümü kullanılıyor"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "hatalı imza 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "hatalı indeks sürümü %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "hatalı indeks dosyası sha1 imzası"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "indeks bizim anlamadığımız %.4s imzası kullanıyor"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "%.4s uzantısı yok sayılıyor"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "bilinmeyen indeks girdisi biçimi 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "indekste hatalı oluşturulmuş ad alanı, '%s' yolu yakınında"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "indekste sırasız hazırlama alanı girdileri"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "birleştirilmiş dosya '%s' için çoklu hazırlama alanı girdileri"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "'%s' için sırasız hazırlama alanı girdileri"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "indeks dosyası hasar görmüş"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "load_cache_entries iş parçacığı oluşturulamıyor: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "load_cache_entries iş parçacığı ucu birleştirilemiyor: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: indeks dosyası açılamadı"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: açık indeksin bilgileri alınamıyor"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: indeks dosyası beklenenden daha küçük"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: indeks dosyası eşlemlenemiyor"
+msgid "%s: unable to map index file%s"
+msgstr "%s: indeks dosyası eşlemlenemiyor%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "load_index_extensions iş parçacığı oluşturulamıyor: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "load_index_extensions iş parçacığı ucu birleştirilemiyor: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "paylaşılan indeks '%s' tazelenemedi"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "bozuk indeks, %s bekleniyordu (%s içinde), %s alındı"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "'%s' kapatılamadı"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "bir sparse-index'e dönüştürülemedi"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "'%s' bilgileri alınamadı"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "git dizini açılamıyor: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "bağlantı kesilemiyor: %s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "'%s' üzerindeki izin bitleri onarılamıyor"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: #0 numaralı hazırlama alanına bırakılamıyor"
@@ -6580,8 +6612,8 @@
 "Ancak tümünü kaldırırsanız yeniden temellendirme iptal edilecektir.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "'%s' yazılamadı"
@@ -6625,7 +6657,7 @@
 msgid "could not read '%s'."
 msgstr "'%s' okunamadı."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "gitti"
 
@@ -6644,248 +6676,248 @@
 msgid "ahead %d, behind %d"
 msgstr "%d önünde, %d arkasında"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "beklenen biçim: %%(color:<renk>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "tanımlanamayan renk: %%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Tamsayı değeri şunu bekliyordu: refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Tamsayı değeri şunu bekliyordu: refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "tanımlanamayan %%(%s) argümanı: %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) argüman almıyor"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "tanımlanamayan %%(objectsize) argümanı: %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) argüman almıyor"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) argüman almıyor"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "tanımlanamayan %%(subject) argümanı: %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "%%(trailers:key=<değer>) bekleniyordu"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "bilinmeyen %%(trailers) argümanı: %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "pozitif değer şunu bekliyordu: contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "tanımlanamayan %%(contents) argümanı: %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "pozitif değer şurada '%s' bekliyordu: %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "şurada tanımlanamayan argüman '%s': %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "tanımlanamayan e-posta seçeneği: %s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "beklenen biçim: %%(align:<genişlik>,<konum>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "tanımlanamayan konum:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "tanımlanamayan genişlik:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "tanımlanamayan %%(align) argümanı: %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "pozitif genişlik %%(align) ögeciği ile birlikte bekleniyordu"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "tanımlanamayan %%(if) argümanı: %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "hatalı oluşturulmuş alan adı: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "bilinmeyen alan adı: %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr ""
 "bir git deposu değil; ancak '%.*s' alanı nesne verisine erişim gerektiriyor"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "biçim: %%(if) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "biçim: %%(then) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "biçim: %%(then) ögeciği birden çok kez kullanıldı"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "biçim: %%(then) ögeciği %%(else) ögeciğinden sonra kullanıldı"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "biçim: %%(else) ögeciği bir %%(if) ögeciği olmadan kullanıldı"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "biçim: %%(else) ögeciği bir %%(then) ögeciği olmadan kullanıldı"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "biçim: %%(else) ögeciği birden çok kez kullanıldı"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "biçim: %%(end) ögeciği eş ögeciği olmadan kullanıldı"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "hatalı oluşturulmuş biçim dizisi %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(dal yok, %s yeniden temellendiriliyor)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(dal yok, ayrık HEAD %s yeniden temellendiriliyor)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(dal yok, ikili arama %s üzerinde başladı)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD, %s konumunda ayrıldı)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD, %s ögesinden ayrıldı)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(dal yok)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "eksik nesne %s (%s için)"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer %s üzerinde başarısız oldu (%s için)"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "'%s' konumunda hatalı oluşturulmuş nesne"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "bozuk ada iye %s başvurusu yok sayılıyor"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "bozuk başvuru %s yok sayılıyor"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "biçim: %%(end) ögeciği eksik"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "hatalı oluşturulmuş nesne adı %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "'%s' bir işlemeye işaret etmeli"
@@ -7341,8 +7373,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "'%s' için öngörüntü kaydedildi"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "'%s' dizini oluşturulamadı"
@@ -7380,38 +7412,38 @@
 msgid "could not determine HEAD revision"
 msgstr "HEAD revizyonu saptanamadı"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "%s ögesinin ağacı bulunamadı"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<paketdosyası> artık desteklenmiyor"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "geçerli dalınız bozuk gibi görünüyor"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "geçerli dalınız '%s' içinde henüz bir işleme yok"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L, -p ve -s dışında başka diff biçimlerini henüz desteklemiyor"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "/dev/null açılamadı"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "async iş parçacığı oluşturulamadı: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7446,15 +7478,15 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "itme pazarlığı başarısız; yine de itme olmadan sürdürülüyor"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "alıcı uç bu deponun sağlama algoritmasını desteklemiyor"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr "alıcı uç --signed itmeyi desteklemiyor"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -7462,11 +7494,11 @@
 "alıcı uç --signed itmeyi desteklemediğinden dolayı bir itme sertifikası "
 "gönderilmiyor"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "alıcı uç --atomic itmeyi desteklemiyor"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "alıcı uç itme seçeneklerini desteklemiyor"
 
@@ -7526,7 +7558,7 @@
 msgstr "'%s' kilitlenemedi"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "şuraya yazılamadı: '%s'"
@@ -7537,7 +7569,7 @@
 msgstr "satır sonu şuraya yazılamadı: '%s'"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "'%s' tamamlanamadı"
@@ -7587,8 +7619,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "'%s' ögesinin tırnakları kaldırılamıyor"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "'%s' okuma için açılamadı"
@@ -7735,7 +7767,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s bir işleme değil"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "HEAD işlemesi ayrıştırılamadı"
 
@@ -7743,7 +7775,7 @@
 msgid "unable to parse commit author"
 msgstr "işleme yazarı ayrıştırılamıyor"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree bir ağaca yazamadı"
 
@@ -7761,12 +7793,13 @@
 msgid "corrupt author: missing date information"
 msgstr "hasar görmüş yazar: tarih bilgisi eksik"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "işleme nesnesi yazılamadı"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "%s güncellenemedi"
@@ -7818,7 +7851,7 @@
 msgid "need a HEAD to fixup"
 msgstr "düzeltmek için bir HEAD gerekiyor"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "HEAD okunamadı"
 
@@ -7959,7 +7992,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "hatalı oluşturulmuş seçenekler tablosu: '%s'"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "boş işleme seti aktarıldı"
 
@@ -7990,7 +8023,7 @@
 msgid "could not lock HEAD"
 msgstr "HEAD kilitlenemedi"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "süren bir seç-al veya geri al yok"
 
@@ -8002,7 +8035,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "daha doğmamış bir daldan iptal edilemiyor"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s' açılamıyor"
@@ -8050,7 +8083,7 @@
 "İşlemeyi yaptınız mı?\n"
 "\"git %s --continue\" deneyin.\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "HEAD okunamıyor"
 
@@ -8134,90 +8167,90 @@
 "\tgit rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "izin verilmeyen etiket adı: '%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "sahte kök işlemesi yazılıyor"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "squash-onto yazılıyor"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "'%s' çözülemedi"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "güncel bir revizyon olmadan birleştirilemiyor"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "'%.*s' ayrıştırılamıyor"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "birleştirilecek bir şey yok: '%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "ahtapot birleştirmesi bir [yeni kök]ün üzerinde çalıştırılamaz"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "'%s' işlemesinin işleme iletisi alınamadı"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "şunu birleştirme girişiminde bulunulamadı bile: '%.*s'"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "merge: Yeni indeks dosyası yazılamıyor"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Kendiliğinden zulalanamıyor"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Beklenmedik zula yanıtı: '%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "'%s' için dizin oluşturulamadı"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Zula kendiliğinden oluşturuldu: %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "'reset --hard' yapılamadı"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Kendiliğinden zulalama uygulandı.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "%s depolanamıyor"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8228,29 +8261,29 @@
 "Değişiklikleriniz zulada güvende.\n"
 "İstediğiniz zaman \"git stash pop\" veya \"git stash drop\" yapabilirsiniz.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "Kendiliğinden zulalama çakışmalara neden oldu."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Kendiliğinden zulalama mevcut; yeni bir zula girdisi oluşturuluyor."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "HEAD ayrılamadı"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "HEAD'de duruldu\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "%s konumunda duruldu\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8271,58 +8304,58 @@
 "\tgit rebase --edit-todo\n"
 "\tgit rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Yeniden temellendiriliyor: (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "%s konumunda durdu... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "bilinmeyen komut %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "orig-head okunamadı"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "'onto' okunamadı"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "HEAD şu konuma güncellenemedi: %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "%s başarıyla yeniden temellendirildi ve güncellendi.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "Yeniden temellendirilemiyor: Hazırlanmamış değişiklikleriniz var."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "var olmayan işleme değiştirilemiyor"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "geçersiz dosya: '%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "geçersiz içerik: '%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8332,50 +8365,50 @@
 "Çalışma ağacınızda işlenmemiş değişiklikleriniz var. Lütfen önce\n"
 "onları işleyin ve ardından 'git rebase --continue' yapın."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "dosya yazılamadı: '%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "CHERRY_PICK_HEAD kaldırılamadı"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "Hazırlanmış değişiklikler işlenemedi."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: Bir %s seçip alınamıyor"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s hatalı revizyon"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "ilk işleme geri alınamaz"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: ele alınmayan seçenekler"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script: revizyonlar hazırlanırken hata"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "yapılacak bir şey yok"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "gerekli olmayan seçim komutları atlanamadı"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "betik halihazırda yeniden düzenlenmişti"
 
@@ -8425,92 +8458,96 @@
 msgid "unable to set up work tree using invalid config"
 msgstr "geçersiz yapılandırma kullanılarak çalışma ağacı kurulamıyor"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "bu işlem bir çalışma ağacı içinde çalıştırılmalı"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Beklenen git repo sürümü <= %d, %d bulundu"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "bilinmeyen depo genişletmeleri bulundu:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "bilinmeyen depo genişletmesi bulundu:"
+msgstr[1] "bilinmeyen depo genişletmeleri bulundu:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "depo sürümü 0; ancak v1'e özel genişletmeler bulundu:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "depo sürümü 0; ancak v1'e özel genişletme bulundu:"
+msgstr[1] "depo sürümü 0; ancak v1'e özel genişletmeler bulundu:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "'%s' açılırken hata"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "bir .git dosyası olabilmek için çok büyük: '%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "%s okunurken hata"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "geçersiz gitfile biçimi: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "gitfile içinde yol yok: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "bir git deposu değil: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' çok büyük"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "bir git deposu değil: '%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "'%s' konumuna chdir yapılamıyor"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "cwd'ye geri dönülemiyor"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "'%*s%s%s' bilgileri alınamadı"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Şu anki çalışma dizini okunamıyor"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "şuraya değiştirilemiyor: '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "bir git deposu (veya üst dizinlerinden birisi) değil: %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8520,7 +8557,7 @@
 "Dosya sistemi sınırında duruluyor (GIT_DISCOVERY_ACROSS_FILESYSTEM "
 "ayarlanmamış)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8529,27 +8566,27 @@
 "core.sharedRepository dosya kipi değeri ile sorun (0%.3o).\n"
 "Dosyaların sahibinin her zaman okuma ve yazma izni olması gerekir."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "/dev/null açılması veya açıklayıcı çoğaltılması başarısız"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "çatallama başarısız"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "setsid başarısız"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "koni kipi olmadan sparse-index kullanılmaya çalışılıyor"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "önbellek ağacı güncellenemiyor, dolu kalınıyor"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "indeks girdisi bir dizin; ancak aralıklı değil (%08x)"
@@ -8606,7 +8643,7 @@
 msgstr[0] "%u bayt/sn"
 msgstr[1] "%u bayt/sn"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8677,7 +8714,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "hatalı --ignore-submodules argümanı: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8686,12 +8723,12 @@
 "%s işlemesinde '%s' yolunda bulunan altmodül, aynı adlı bir altmodülle "
 "çarpışıyor. Atlanıyor."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "altmodül girdisi '%s' (%s) bir %s, işleme değil"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8700,36 +8737,36 @@
 "'%s' altmodülünde 'git rev-list <commits> --not --remotes -n 1' "
 "çalıştırılamadı"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "'%s' altmodülü için işlem başarısız oldu"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "HEAD geçerli bir başvuru olarak çözülemedi."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "'%s' altmodülü itiliyor\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "'%s' altmodülü itilemiyor\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "%s%s altmodülü getiriliyor\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "'%s' altmodülüne erişilemedi\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8738,78 +8775,78 @@
 "Altmodül getirilirken hata:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' bir git deposu olarak tanımlanamadı"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "'%s' altmodülü içinde 'git status --porcelain=2' çalıştırılamadı"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "'%s' altmodülü içinde 'git status --porcelain=2' başarısız oldu"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "'%s' altmodülü içinde 'git status' başlatılamadı"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "'%s' altmodülü içinde 'git status' çalıştırılamadı"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "'%s' altmodülü içinde core.worktree ayarı kapatılamadı"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "'%s' altmodülüne özyinelenemedi"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "altmodül indeksi sıfırlanamadı"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "'%s' altmodülü indeksi kirli"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "'%s' altmodülü güncellenemedi."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "altmodül git dizini '%s', '%.*s' git dizini içinde"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
 "relocate_gitdir birden çok çalışma ağaçlı '%s' altmodülü için desteklenmiyor"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "'%s' altmodülü adı aranamadı"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "'%s' ögesini mevcut bir git dizinine taşıma reddediliyor"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8820,11 +8857,11 @@
 "şuradan: '%s'\n"
 "şuraya: '%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "ls-files şurada başlatılamadı .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree beklenmedik bir biçimde %d kodu ile çıktı"
@@ -8861,7 +8898,7 @@
 msgid "could not read input file '%s'"
 msgstr "'%s' girdi dosyası okunamadı"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "stdin'den okunamadı"
 
@@ -8951,7 +8988,7 @@
 msgid "invalid remote service path"
 msgstr "geçersiz uzak konum servis yolu"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "işlem protokol tarafından desteklenmiyor"
 
@@ -8960,7 +8997,7 @@
 msgid "can't connect to subservice %s"
 msgstr "%s altservisine bağlanılamıyor"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only protokolün ikinci sürümünü gerektiriyor"
 
@@ -9093,46 +9130,46 @@
 msgid "could not read bundle '%s'"
 msgstr "'%s' demeti okunamadı"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: Geçersiz derinlik seçeneği '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "ayrıntılar için 'git help config' içinde protocol.version'a bakın"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "sunucu seçenekleri protokol sürüm 2 veya sonrasını gerektirir"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "Sunucu, wait-for-done desteklemiyor"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "transport.color.* yapılandırması ayrıştırılamadı"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "protokol v2 desteği henüz yerine getirilmedi"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "'%s' yapılandırması için bilinmeyen değer: %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "'%s' taşıyıcısına izin verilmiyor"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync artık desteklenmiyor"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9141,7 +9178,7 @@
 "Aşağıdaki altmodül yolları başka hiçbir uzak konumda bulunamayan\n"
 "değişiklikler içeriyor:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9168,11 +9205,11 @@
 "kullanın.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "İptal ediliyor"
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "gereken tüm altmodüller itilemedi"
 
@@ -9443,11 +9480,11 @@
 "olmayan dosya sisteminde BÜYÜK/küçük harf duyarlı yollar) ve aynı çarpışan\n"
 "gruptan yalnızca bir tanesi çalışma ağacında:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "İndeks bayrakları güncelleniyor"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr "çalışma ağacı ve izlenmeyen işlemenin yinelenmiş girdileri var: %s"
@@ -9489,99 +9526,99 @@
 msgid "Fetching objects"
 msgstr "Nesneler getiriliyor"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "'%s' okunamadı"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "ana çalışma ağacındaki '%s' depo dizini değil"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "'%s' dosyası çalışma ağacı konumuna olan tam yolu içermiyor"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' mevcut değil"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' bir .git dosyası değil, hata kodu %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' şuna geri işaret etmiyor: '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "bir dizin değil"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git bir dosya değil"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ".git dosyası bozuk"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ".git dosyası doğru değil"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "geçerli bir yol değil"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "depo konumu bulunamıyor: .git bir dosya değil"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "depo konumu bulunamıyor: .git dosyası bir depoya başvurmuyor"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "depo konumu bulunamıyor: .git dosyası bozuk"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "okunamayan gitdir"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "doğru olmayan gitdir"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "geçerli bir dizin değil"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "gitdir dosyası mevcut değil"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "gitdir dosyası (%s) okunamıyor"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "az okundu (%<PRIuMAX> bayt bekleniyordu, %<PRIuMAX> okundu)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "geçersiz gitdir dosyası"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "gitdir dosyası var olmayan bir konuma işaret ediyor"
 
@@ -9633,11 +9670,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (hazırlığı bitirmek için \"git rm <dosya>...\" kullanın)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "İşlenecek değişiklikler:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "İşleme için hazırlanmamış değişiklikler:"
 
@@ -9737,22 +9774,22 @@
 msgid "untracked content, "
 msgstr "izlenmeyen içerik, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Zulanızda şu anda %d girdi var"
 msgstr[1] "Zulanızda şu anda %d girdi var"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Değiştirilen; ancak güncellenmeyen altmodüller:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "İşlenecek altmodül değişiklikleri:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9760,7 +9797,7 @@
 "Yukarıdaki satırı değiştirmeyin veya kaldırmayın.\n"
 "Altındaki her şey yok sayılacaktır."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9771,107 +9808,107 @@
 "Dal önünde/arkasında değerlerini hesaplama %.2f saniye sürdü.\n"
 "Bundan kaçınmak için --no-ahead-behind kullanabilirsiniz.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Birleştirilmemiş yollarınız var."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (çakışmaları onar ve \"git commit\" çalıştır)"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (birleştirmeyi iptal etmek için \"git merge --abort\" kullanın)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tüm çakışmalar onarıldı; ancak siz hâlâ birleştiriyorsunuz."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (birleştirmeyi sonuçlandırmak için \"git commit\" kullanın)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Bir 'am' oturumunun tam ortasındasınız."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Mevcut yama boş."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (çakışmaları onar ve ardından \"git am --continue\" çalıştır)"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git am --skip\" kullanın"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (ilk dalı eski durumuna getirmek için \"git am --abort\" kullanın)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo eksik"
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Yerine getirilen bir komut yok."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Son yerine getirilen komut (toplamda %d komut):"
 msgstr[1] "Son yerine getirilen komutlar (toplamda %d komut):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (ek bilgi için %s dosyasına bakın)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Kalan komut yok."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Sıradaki yerine getirilecek komut (%d kalan komut):"
 msgstr[1] "Sıradaki yerine getirilecek komutlar (%d kalan komut):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (görüntüleme ve düzenleme için \"git rebase --edit-todo\" kullanın)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Şu anda '%s' dalını '%s' üzerine yeniden temellendiriyorsunuz."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Şu anda yeniden temellendirme yapmaktasınız."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (çakışmaları çözün ve ardından \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git rebase --skip\" kullanın)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (ilk dalı çıkış yapmak için \"git rebase --abort\" kullanın)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9879,154 +9916,158 @@
 "Şu anda '%s' dalını '%s' üzerine yeniden temellendirirken bir işlemeyi "
 "parçalara bölüyorsunuz."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 "Şu anda yeniden temellendirme sırasında bir işlemeyi parçalara bölüyorsunuz."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Çalışma dizininiz temizlendiğinde \"git rebase --continue\" çalıştır)"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Şu anda '%s' dalını '%s' üzerine yeniden temellendirirken bir işlemeyi "
 "düzenliyorsunuz."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Şu anda yeniden temellendirme sırasında bir işlemeyi düzenliyorsunuz."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (geçerli işlemeyi değiştirmek için \"git commit --amend\" kullanın)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (değişikliklerinizden memnunsanız \"git rebase --continue\" kullanın)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Seç-al şu anda sürmekte."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Şu anda %s işlemesini seç-al yapıyorsunuz."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (çakışmaları onar ve \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (sürdürmek için \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git cherry-pick --continue\" çalıştır)"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git cherry-pick --skip\" kullanın)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (seç-al işlemini iptal için \"git cherry-pick --abort\" kullanın)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Geriye al şu anda sürmekte."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Şu anda %s işlemesini geri alıyorsunuz."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (çakışmaları onar ve \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (sürdürmek için \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (tüm çakışmalar onarıldı: \"git revert --continue\" çalıştır)"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (bu yamayı atlamak için \"git revert --skip\" kullanın)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (geri al işlemini iptal için \"git revert --abort\" kullanın)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Şu anda ikili arama yapıyorsunuz, '%s' dalından başlandı."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Şu anda ikili arama yapıyorsunuz"
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (ilk dala dönmek için \"git bisect reset\" kullanın)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Bir aralıklı çıkış içindesiniz."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "İzlenen dosyaların %%%d mevcut olduğu aralıklı bir çıkıştasınız."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "Üzerinde bulunulan dal: "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "şunun üzerine etkileşimli yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "şunun üzerine yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD şurada ayrıldı: "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD şundan ayrıldı: "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Şu anda bir dal üzerinde değil."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "İlk işleme"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Henüz bir işleme yok"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "İzlenmeyen dosyalar"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Yok sayılan dosyalar"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10037,32 +10078,32 @@
 "bunu hızlandırabilir; ancak yeni dosyaları eklemeyi unutmamanız\n"
 "konusunda dikkatli olmalısınız (ek bilgi için 'git help status')."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "İzlenmeyen dosyalar listelenmiyor%s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (izlenmeyen dosyaları göstermek için -u seçeneğini kullanın)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Değişiklik yok"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "İşlemeye eklenen değişiklik yok (\"git add\" ve/veya \"git commit -a\" "
 "kullanın)\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "İşlemeye eklenen değişiklik yok\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10071,83 +10112,83 @@
 "işlemeye bir şey eklenmedi; ancak izlenmeyen dosyalar var (izlemek için\n"
 "\"git add\" kullanın)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "işlemeye bir şey eklenmedi; ancak izlenmeyen dosyalar var\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "İşlenecek bir şey yok (dosyalar oluşturun/kopyalayın ve izlemek için \"git "
 "add\" kullanın)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "İşlenecek bir şey yok\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "İşlenecek bir şey yok (izlenmeyen dosyaları göstermek için -u kullanın)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "İşlenecek bir şey yok, çalışma ağacı temiz\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Şurada henüz bir işleme yok: "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (dal yok)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "değişik"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "şunun arkasında: "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "şunun önünde: "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "%s yapılamıyor: Hazırlanmamış değişiklikleriniz var."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Ek olarak, indeksiniz işlenmemiş değişiklikler içeriyor."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s yapılamıyor: İndeksiniz işlenmemiş değişiklikler içeriyor."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "IPC komutu gönderilemedi"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "IPC yanıtı okunamadı"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "accept_thread '%s' başlatılamadı"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "'%s' için worker[0] başlatılamadı"
@@ -10184,7 +10225,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "İndeksi yeniledikten sonra hazırlanmamış değişiklikler:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "İndeks okunamadı"
 
@@ -10221,8 +10262,8 @@
 "Aşağıdaki yollar sizin .gitignore dosyalarınızın biri tarafından yok "
 "sayılıyor:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "sınama turu"
@@ -10231,7 +10272,7 @@
 msgid "interactive picking"
 msgstr "etkileşimli seçim"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "parçaları etkileşimli olarak seç"
 
@@ -10366,13 +10407,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod param '%s' ya -x ya da +x olmalıdır"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file yol belirteci argümanları ile uyumsuz"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul, --pathspec-from-file gerektiriyor"
 
@@ -10391,111 +10432,111 @@
 "Bu iletiyi 'git config advice.addEmptyPathspec false'\n"
 "yaparak kapatabilirsiniz."
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "yazar betiği ayrıştırılamadı"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' applypatch-msg kancası tarafından silindi"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Hatalı oluşturulmuş girdi satırı: '%s'."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Notların '%s' konumundan '%s' konumuna kopyalanması başarısız"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "fseek başarısız oldu"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "'%s' yaması ayrıştırılamadı"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Bir kerede yalnızca bir StGIT yama serisi uygulanabilir"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "geçersiz zaman damgası"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "geçersiz tarih satırı"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "geçersiz zaman dilimi ofseti"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Yama biçimi algılaması başarısız."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "'%s' dizini oluşturulamadı"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Yamalar parçalanıp bölünemedi."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Bu sorunu çözdüğünüzde \"%s --continue\" çalıştırın."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "Eğer bu yamayı atlamayı yeğliyorsanız \"%s --skip\" çalıştırın."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
 "İlk dalı eski durumuna getirip yamalamayı durdurmak için \"%s --abort\" "
 "çalıştır."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 "Yama format=flowed ile gönderildi; satır sonlarındaki boşluk kaybolmuş "
 "olabilir."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Yama boş."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "%s işlemesinde yazar satırı eksik"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "geçersiz tanımlama satırı: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
 "Depo 3 yönlü birleştirmeye geri çekilebilme için gereken ikili nesnelere iye "
 "değil."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "Bir temel ağacını yeniden yapmak için indeks bilgisi kullanılıyor..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10503,24 +10544,24 @@
 "Yamanızı elle mi düzenlediniz?\n"
 "Kendi indeksinde kaydı yazılan ikili nesnelere uygulanamıyor."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Temeli yamalamaya ve 3 yönlü birleştirmeye geri çekiliniyor..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Değişiklikler birleştirilemedi."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "boş bir geçmişe uygulanıyor"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "sürdürülemiyor: %s yok"
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "İşleme gövdesi:"
 
@@ -10528,41 +10569,41 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr ""
 "Uygula? [y]evet/[n]hayır/düz[e]nle/[v]yamayı görüntüle/tümünü k[a]bul et: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "indeks dosyası yazılamıyor"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Kirli indeks: Yamalar uygulanamıyor (kirli: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Uygulanıyor: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Değişiklik yok -- Yama halihazırda uygulandı."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Yama şurada başarısız oldu: %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr ""
 "Başarısız olan yamayı görmek için 'git am --show-current-patch=diff' kullanın"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10572,7 +10613,7 @@
 "Hazırlanacak başka bir şey kalmadıysa büyük olasılıkla başka bir şey\n"
 "aynı değişiklikleri uygulamış olabilir; bu yamayı atlamak isteyebilirsiniz."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10585,17 +10626,17 @@
 "Bir dosyanın \"onlar sildi\" olduğunu kabul etmek için dosya ile 'git rm' "
 "yapabilirsiniz."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "'%s' nesnesi ayrıştırılamadı."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "indeks temizlenemedi"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10603,91 +10644,91 @@
 "Son 'am' başarısızlığından bu yana HEAD'i hareket ettirmiş görünüyorsunuz.\n"
 "ORIG_HEAD'e geri sarılmıyor."
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Geçersiz --patch-format değeri: %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "--show-current-patch için geçersiz değer: %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s, --show-current-patch=%s ile uyumsuz"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<seçenekler>] [(<mbox> | <posta-dizin>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<seçenekler>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "etkileşimli olarak çalıştır"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "tarihi seçenek -- no-op"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "gerekirse 3 yönlü birleştirmeye geri çekilmeye izin ver"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "sessiz ol"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "işleme iletisine bir Signed-off-by satırı ekle"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "utf8 olarak yeniden kodla (öntanımlı)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "'git-mailinfo'ya -k bayrağını geçir"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "'git-mailinfo'ya -b bayrağını geçir"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "'git-mailinfo'ya -m bayrağını geçir"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "'git-mailsplit'e mbox biçimi için --keep-cr bayrağını geçir"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "'git-mailsplit'e 'am.keepcr'dan bağımsız olarak --keep-cr bayrağını geçirme"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "bir kesim çizgisinden önceki her şeyi çıkar"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "git-mailinfo içerisinden geçir"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "git-apply aracılığıyla geçir"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10696,67 +10737,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "biçim"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "yama biçimi"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "yama başarısız olduğunda hata iletisini geçersiz kıl"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "bir çakışmayı çözdükten sonra yamaları uygulamayı sürdür"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "--continue eşanlamlıları"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "geçerli yamayı atla"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "orijinal dalı eski durumuna getir ve yamalama işlemini iptal et"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "yamalama işlemini iptal et; ancak HEAD'i olduğu yerde bırak"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "uygulanmakta olan yamayı göster"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "işleyici tarihi hakkında yalan söyle"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "yazar tarihi için geçerli zaman damgasını kullan"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "GPG imzalı işlemeler"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(git-rebase için iç kullanım)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10764,17 +10805,17 @@
 "-b/--binary seçeneği uzunca bir süredir düzgün çalışmıyordu ve\n"
 "yakında kaldırılacak. Lütfen artık kullanmayın."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "indeks okunamadı"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr ""
 "Bir önceki yeniden temellendirme dizini %s hâlâ mevcut; ancak mbox verildi."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10783,11 +10824,11 @@
 "Başıboş %s dizini bulundu.\n"
 "Kaldırmak için \"git am --abort\" kullanın."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "İlerlemekte olan bir çözüm işlemi yok, sürdürme yapmıyoruz."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "etkileşimli kip yamanın komut satırında olmasını gerektirir"
 
@@ -10882,63 +10923,63 @@
 msgid "could not write to file '%s'"
 msgstr "'%s' dosyasına yazılamadı"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' geçerli bir terim değil"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "'%s yerleşik komutu bir terim olarak kullanılamıyor"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "'%s' teriminin anlamı değiştirilemiyor"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "lütfen iki değişik terim kullanın"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "İkili arama yapılmıyor.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' geçerli bir işleme değil"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr ""
 "Orijinal HEAD '%s' çıkışı yapılamadı. 'git bisect reset <işleme>' deneyin."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Hatalı bisect_write argümanı: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "'%s' revizyonunun oid'si alınamadı"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "'%s' dosyası açılamadı"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Geçersiz komut: Şu anda bir %s/%s ikili aramasındasınız"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10947,7 +10988,7 @@
 "Bana en azından bir %s ve %s revizyonu vermeniz gerekiyor.\n"
 "Bunun için \"git bisect %s\" ve \"git bisect %s\" kullanabilirsiniz."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10958,7 +10999,7 @@
 "Bundan sonra bana en azından bir %s ve %s revizyonu vermeniz gerekiyor.\n"
 "Bunun için \"git bisect %s\" ve \"git bisect %s\" kullanabilirsiniz."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "yalnızca bir %s işlemesi ile ikili arama yapılıyor"
@@ -10967,15 +11008,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Emin misiniz [Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "hiçbir terim tanımlanmadı"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10984,7 +11025,7 @@
 "Mevcut terimleriniz eski durum için %s ve\n"
 "yeni durum için %s.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10993,52 +11034,52 @@
 "'git bisect terms' için geçersiz argüman %s.\n"
 "Desteklenen seçenekler: --term-good|--term-old ve --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "revizyonda gezinme ayarlaması başarısız oldu\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "'%s' iliştirme için açılamadı"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' geçerli bir terim değil"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tanımlanamayan seçenek: '%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' geçerli bir revizyon değil gibi görünüyor"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "hatalı HEAD - Bana bir HEAD gerek"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "'%s' çıkış yapımı başarısız. 'git bisect start <geçerli-dal>' deneyin."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "cg-seek yapılmış bir ağaçta ikili arama yapılmayacak"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "hatalı HEAD - tuhaf sembolik başvuru"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "geçersiz başvuru: '%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "\"git bisect start\" ile başlamalısınız\n"
 
@@ -11046,104 +11087,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Bunu sizin yerinize benim yapmamı ister misiniz [Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
-msgstr "Lütfen '--bisec-state'i en az bir argümanla çalıştırın"
+msgstr "Lütfen '--bisect-state'i en az bir argümanla çağırın"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' yalnızca bir argüman alabilir."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Hatalı revizyon girdisi: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Hatalı revizyon girdisi (bir işleme değil): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "İkili arama yapmıyoruz."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "'%s'?? ney ney?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "'%s' dosyası yeniden oynatım için okunamıyor"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "ikili arama durumunu sıfırla"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "iyi veya kötü terimlerin olup olmadığını denetle"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "ikili arama terimlerini yazdır"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "ikili arama oturumunu başlat"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "bir sonraki ikili arama işlemesini bul"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "başvurunun (veya başvuruların) durumunu imle"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "şu ana kadarki ikili arama durumunu listele"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "verilen dosyadan ikili arama işlemini yeniden oynat"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "çıkış için birkaç işlemeyi atla"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE için günlük yok"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset bir argüman veya işleme gerektirmiyor"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 2 veya 3 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 0 veya 1 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 0 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log 0 argüman gerektiriyor"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "hiçbir günlük dosyası verilmedi"
 
@@ -11194,10 +11235,10 @@
 msgid "show work cost statistics"
 msgstr "iş maliyet istatistiklerini göster"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "durum belirtmeyi zorla"
 
@@ -11245,7 +11286,7 @@
 msgid "ignore whitespace differences"
 msgstr "boşluk ayrımlarını yok say"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "revizyon"
 
@@ -11833,19 +11874,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <dosya> [<başvuru-adı>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "ilerleme çubuğunu gösterme"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "ilerleme çubuğunu göster"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "ilerleme çubuğunu nesne yazımı aşaması sırasında göster"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ilerleme çubuğu gösterildiğinde --all-progress'e benzer"
 
@@ -11857,29 +11898,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "Bir demet oluşturmak için bir depo gerekli."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "demet ayrıntılarını gösterme"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s tamam\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Demeti çözmek için bir depo gerekli"
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ayrıntılı anlat; bir altkomuttan önce yerleştirilmelidir"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Bilinmeyen altkomut: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11887,7 +11928,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <tür> | --textconv | --filters) [--path=<yol>] <nesne>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11895,72 +11936,72 @@
 "git cat-file (--batch[=<biçim>] | --batch-check[=<biçim>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "yalnızca bir toplu iş seçeneği belirtilebilir"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<tür> yalnızca şunlardan biri olabilir: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "nesne türünü göster"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "nesne boyutunu göster"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "hata yoksa sıfır koduyla çık"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "nesne içeriğini okunabilir biçimde göster"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "ikili nesneler için nesne içeriği üzerinde textconv çalıştır"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "ikili nesneler için nesne içeriği üzerinde süzgeçler çalıştır"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "ikili nesne"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "--textconv/--filters için belirli bir yol kullan"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "-s ve -t'nin bozuk/hasar görmüş nesnelerle çalışmasına izin ver"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "--batch çıktısını arabelleğe al"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "standart girdi'den beslenen nesnelerin bilgisini ve içeriğini göster"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "standart girdi'den beslenen nesneler hakkında bilgi göster"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "ağaç içi sembolik bağları izle (--batch veya --batch-check ile kullanılır)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "--batch veya --batch-check ile olan tüm nesneleri göster"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "--batch-all-objects çıktısını sıralama"
 
@@ -11988,8 +12029,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "girdi ve çıktı kayıtlarını bir NUL karakteri ile sonlandır"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "ilerleme bildirimini gizle"
 
@@ -12047,9 +12088,11 @@
 msgstr "git checkout--worker [<seçenekler>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "dizi"
 
@@ -12143,68 +12186,68 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "'%s' için birleştirme sonuçları eklenemiyor"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "%d birleştirme çakışması yeniden oluşturuldu"
 msgstr[1] "%d birleştirme çakışması yeniden oluşturuldu"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "%d yol şuradan güncellendi: %s"
 msgstr[1] "%d yol şuradan güncellendi: %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "%d yol indeksten güncellendi"
 msgstr[1] "%d yol indeksten güncellendi"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' güncellenmekte olan yollarla kullanılamaz"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s', %s ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "Aynı anda hem yolları güncelleyip hem de '%s' dalına geçilemiyor."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "ne '%s' ne de '%s' belirtilmiş"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "'%s', '%s' ögesinin belirtilmediği durumlarda kullanılmalıdır"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' veya '%s', %s ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "'%s' yolu birleştirilmemiş"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "önce geçerli indeksinizi çözmelisiniz"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12213,50 +12256,50 @@
 "aşağıdaki dosyalardaki hazırlanan değişikliklerle sürdürülemiyor:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "'%s' için başvuru günlüğü yapılamıyor: %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD konumu:"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "HEAD güncellenemiyor"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "'%s' dalı sıfırlandı.\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Halihazırda '%s' üzerinde\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "'%s' dalına geçildi ve sıfırlandı.\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Yeni '%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "'%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "... ve %d daha.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12279,7 +12322,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12306,19 +12349,19 @@
 "\tgit branch <yeni-dal-adı> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "revizyonlarda gezinirken iç hata"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "Önceki HEAD konumu şuydu:"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Henüz doğmamış bir dal üzerindesiniz"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12327,7 +12370,7 @@
 "'%s' hem bir yerel dosya hem de bir izleme dalı olabilir.\n"
 "Lütfen -- (ve isteğe bağlı olarak --no-guess) kullanıp belirsizliği giderin."
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12344,54 +12387,54 @@
 "\tgit checkout --track origin/<ad>\n"
 "\n"
 "Eğer her zaman belirsiz <ad> çıkışlarının bir uzak konumu tercih etmesini\n"
-"isterseniz, örn. 'origin', yapılandırmanızda checkout.defaultsRemote=origin\n"
+"isterseniz, örn. 'origin', yapılandırmanızda checkout.defaultRemote=origin\n"
 "ayarını yapmayı düşünün."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' birden çok (%d) uzak izleme dalıyla eşleşti"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "yalnızca bir başvuru bekleniyordu"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "yalnızca bir başvuru bekleniyordu, %d verildi"
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "geçersiz başvuru: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "başvuru bir ağaca değil: %s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "bir dal bekleniyordu, '%s' etiketi alındı"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "bir dal bekleniyordu, '%s' uzak dalı alındı"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "bir dal bekleniyordu, '%s' alındı"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "bir dal bekleniyordu, '%s' işlemesi alındı"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12399,7 +12442,7 @@
 "Birleştirme yaparken dal değiştirilemiyor.\n"
 "\"git merge --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12407,7 +12450,7 @@
 "Bir \"am\" oturumunun ortasında dal değiştirilemiyor.\n"
 "\"git am --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12415,7 +12458,7 @@
 "Yeniden temellendirme yaparken dal değiştirilemiyor.\n"
 "\"git rebase --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12423,7 +12466,7 @@
 "Seç-al yaparken dal değiştirilemiyor.\n"
 "\"git cherry-pick --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12431,138 +12474,138 @@
 "Geriye al yaparken dal değiştirilemiyor.\n"
 "\"git revert --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "ikili arama yaparken dal değiştiriyorsunuz"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "dal değiştirilirken yollar kullanılamaz"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "dal değiştirilirken '%s' kullanılamaz"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s', '%s' ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s', <başlama-noktası> alamaz"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Dal, işleme olmayan '%s' ögesine değiştirilemez"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "dal veya işleme argümanı eksik"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "yeni dal ile bir 3 yönlü birleştirme gerçekleştir"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "çakışma stili (birleştirme veya diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "adı verilen işlemede HEAD'i ayır"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "yeni dal için üstkaynak bilgisi ayarla"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "zorla çıkış yap (yerel değişiklikleri çöpe at)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "yeni dal"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "yeni üst ögesi olmayan dal"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "yok sayılan dosyaları güncelle (öntanımlı)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "verilen başvuruyu başka bir çalışma ağacının tutup tutmadığını denetleme"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için bizdeki sürümü çıkış yap"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için onlardaki sürümünü çıkış yap"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "yol belirteçlerini yalnızca aralıklı girdilere kısıtlama"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c ve --orphan birlikte kullanılmaz"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p ve --overlay birlikte kullanılmaz"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track için bir dal adı gerekli"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "eksik dal adı; -%c deneyin"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "%s çözülemedi"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "geçersiz yol belirtimi"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' bir işleme değil ve ondan bir '%s' dalı oluşturulamaz"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach bir '%s' yol argümanı almıyor"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file, --detach ile uyumsuz"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file, --patch ile uyumsuz"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12570,70 +12613,71 @@
 "git checkout: --ours/--theirs, --force ve --merge indeks çıkışı yapılırken\n"
 "birlikte kullanılamaz"
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "eski durumuna getirilecek yolları belirtmelisiniz"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "dal"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "yeni bir dal oluştur ve çıkış yap"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "bir dal oluştur/sıfırla ve çıkış yap"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "yeni dal için başvuru günlüğü oluştur"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "'git checkout <böyle-bir-dal-yok>'a temkinli yaklaş (öntanımlı)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "yerpaylaşım kipini kullan (öntanımlı)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "yeni bir dal oluştur ve ona geç"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "bir dal oluştur/sıfırla ve ona geç"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "'git switch <böyle-bir-dal-yok>'a temkinli yaklaş"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "yerel değişiklikleri çöpe at"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "çıkış yapılacak ağacımsı"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "indeksi eski durumuna getir"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "çalışma ağacını eski durumuna getir"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "birleştirilmemiş girdileri yok say"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "yerpaylaşım kipini kullan"
 
@@ -12668,7 +12712,7 @@
 msgid "could not lstat %s\n"
 msgstr "%s 'lstat' yapılamadı\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12681,7 +12725,7 @@
 "foo        - benzersiz öneke dayanarak bir öge seç\n"
 "           - (boş) hiçbir şey seçme\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12701,33 +12745,33 @@
 "*          - tüm ögeleri seç\n"
 "           - (boş) seçimi bitir\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Pardon (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Girdi için yok sayma dizgileri>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "UYARI: Şununla eşleşen ögeler bulunamıyor: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Silinecek ögeleri seçin"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "%s kaldırılsın mı [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12745,52 +12789,52 @@
 "help                - bu ekranı görüntüle\n"
 "?                   - istem seçimi için yardım"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Aşağıdaki öge kaldırılacak:"
 msgstr[1] "Aşağıdaki ögeler kaldırılacak:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Temizlenecek başka dosya yok, çıkılıyor."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "kaldırılan dosyaların adlarını yazdırma"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "zorla"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "etkileşimli temizlik"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "dizinleri tümüyle kaldır"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "dizgi"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "yok sayma kurallarına <dizgi> ekle"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "yok sayılan dosyalar da kaldırıldı"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "yalnızca yok sayılan dosyaları kaldır"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12798,7 +12842,7 @@
 "clean.requireForce 'true' olarak ayarlanmış ve ne -i ne -n ne de -f "
 "verilmiş; temizleme reddediliyor"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12806,7 +12850,7 @@
 "clean.requireForce öntanımlı olarak 'true' ve ne -i ne -n ne de -f verilmiş; "
 "temizleme reddediliyor"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x ve -X birlikte kullanılamaz"
 
@@ -12822,7 +12866,7 @@
 msgid "don't create a checkout"
 msgstr "çıkış yapma!"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "çıplak bir depo oluştur"
 
@@ -12854,26 +12898,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "paralelde klonlanan altmodüllerin sayısı"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "şablon dizini"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "şablonların kullanılacağı dizin"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "başvuru deposu"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "--reference'ı yalnızca klonlarken kullan"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "ad"
@@ -12890,7 +12934,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "uzak konumdaki git-upload-pack'e olan yol"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "derinlik"
@@ -12899,7 +12943,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "verilen derinlikte sığ bir depo oluştur"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "zaman"
@@ -12917,8 +12961,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "revizyonu hariç tutarak sığ klonun geçmişini derinleştir"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "yalnızca bir dal klonla, HEAD veya --branch"
 
@@ -12930,11 +12974,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "klonlanan altmodüller sığ olacak"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "git dizini"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "git dizinini çalışma ağacından ayır"
 
@@ -12947,22 +12991,22 @@
 msgstr "yapılandırmayı yeni deponun içinde ayarla"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "sunucuya özel"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "iletme seçeneği"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "yalnızca IPv4 adresleri kullan"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "yalnızca IPv6 adresleri kullan"
 
@@ -13064,7 +13108,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "geçici alternatifler dosyasının bağlantısı kesilemiyor"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Çok fazla argüman."
 
@@ -13086,7 +13130,7 @@
 msgid "repository '%s' does not exist"
 msgstr "'%s' deposu mevcut değil"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "%s derinliği pozitif bir sayı değil"
@@ -13107,7 +13151,7 @@
 msgstr "Çalışma ağacı '%s' halihazırda mevcut."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "şunun öncü dizinleri oluşturulamadı: '%s'"
@@ -13164,12 +13208,16 @@
 msgid "--local is ignored"
 msgstr "--local yok sayıldı"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "uzak konum taşıması hata bildirdi"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "%s uzak dalı %s üstkaynağında bulunamadı"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Boş bir depoyu klonlamış görünüyorsunuz."
 
@@ -13227,7 +13275,7 @@
 msgstr "'%s' ile eşleşen nesne dizini bulunamadı"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "dizin"
 
@@ -13325,7 +13373,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "yinelenmiş üst öge %s yok sayıldı"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "%s geçerli bir nesne adı değil"
@@ -13353,13 +13401,13 @@
 msgid "id of a parent commit object"
 msgstr "bir üst işleme ögesinin no'su"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "ileti"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "işleme iletisi"
 
@@ -13367,7 +13415,7 @@
 msgid "read commit log message from file"
 msgstr "işleme günlük iletisini dosyadan oku"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "işlemeyi GPG ile imzala"
@@ -13439,7 +13487,7 @@
 "kullanın.\n"
 "Bu işlemeyi atlamak isterseniz şunu kullanın:\n"
 "\n"
-"\tgit cherry-pick --continue\n"
+"\tgit cherry-pick --skip\n"
 "\n"
 
 #: builtin/commit.c:324
@@ -13472,7 +13520,7 @@
 
 #: builtin/commit.c:437 builtin/commit.c:460 builtin/commit.c:508
 msgid "unable to write new_index file"
-msgstr "new_index_file yazılamıyor"
+msgstr "new_index dosyası yazılamıyor"
 
 #: builtin/commit.c:489
 msgid "cannot do a partial commit during a merge."
@@ -13516,7 +13564,7 @@
 "mevcut işleme iletisinde kullanılmayan bir yorum\n"
 "karakteri seçilemiyor"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "%s işlemesi aranamadı"
@@ -13552,7 +13600,45 @@
 msgid "could not write commit template"
 msgstr "işleme şablonu yazılamadı"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
+"satırlar yok sayılacaktır.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
+"satırlar yok sayılacaktır. Boş bir ileti işlemeyi iptal eder.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
+"satırlar tutulacaktır; isterseniz onları kaldırabilirsiniz.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
+"satırlar tutulacaktır; isterseniz onları kaldırabilirsiniz.\n"
+"Boş bir ileti işlemeyi iptal eder.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13566,7 +13652,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "ve yeniden deneyin.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13580,201 +13666,181 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "ve yeniden deneyin.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
-"satırlar yok sayılacaktır. Boş bir ileti işlemeyi iptal eder.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Lütfen değişiklikleriniz için bir işleme iletisi girin. '%c' ile başlayan\n"
-"satırlar tutulacaktır; isterseniz onları kaldırabilirsiniz.\n"
-"Boş bir ileti işlemeyi iptal eder.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sYazar:     %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sTarih:     %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sİşleyici:  %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "İndeks okunamıyor"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "--trailers'a artbilgiler geçirilemiyor"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Ağaçlar yapılırken hata"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Lütfen iletiyi -m veya -F seçeneğini kullanarak destekleyin.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s', 'Ad <e-posta>' biçiminde değil ve mevcut bir yazarla "
 "eşleşmiyor"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Geçersiz yok sayılanları göster kipi '%s'"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Geçersiz izlenmeyen dosyaları göster kipi '%s'"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long ve -z birbiriyle uyumsuz"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "Bir birleştirmenin tam ortasındasınız -- ileti değiştirilemiyor."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "Bir seç-al'ın tam ortasındasınız -- ileti değiştirilemiyor."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr ""
 "--fixup'ın ileti değiştirme seçeneği '%s' yolu ile birlikte kullanılamıyor"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
 msgstr ""
-"--fixup'ın ileti değiştirme seçeneği --patch/--interactive/--all/--include/"
-"--only ile birlikte kullanılamaz"
+"--fixup'ın ileti değiştirme seçeneği --patch/--interactive/--all/--include/--"
+"only ile birlikte kullanılamaz"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Hem --reset-author ve hem --author birlikte bir anlam ifade etmiyor"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Değiştirecek bir şeyiniz yok."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Bir birleştirmenin tam ortasındasınız -- değiştirme yapılamıyor."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Bir seç-al'ın tam ortasındasınız -- değiştirme yapılamıyor."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr ""
 "Bir yeniden temellendirmenin tam ortasındasınız -- değiştirme yapılamıyor."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "--squash ve --fixup seçenekleri birlikte kullanılamaz"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "-c/-C/-F/--fixup arasından yalnızca bir tanesi kullanılabilir."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "-m seçeneği -c/-C/-F ile birlikte kullanılamaz."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "--reset-author yalnızca -C, -c veya --amend ile birlikte kullanılabilir."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "--include/--only/--all/--interactive/--patch arasından yalnızca bir tanesi "
 "kullanılabilir."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "bilinmeyen seçenek: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "'%s ...' yolları -a ile bir anlam ifade etmiyor"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "durumu kısaca göster"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "dal bilgisini göster"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "zula bilgisini göster"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "tam önünde/arkasında değerlerini hesapla"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "sürüm"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "makine tarafından okunabilir çıktı"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "durumu uzun biçimde göster (öntanımlı)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "girdileri NUL ile sonlandır"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "kip"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "izlenmeyen dosyaları göster, ist. bağlı kipler: all, normal, no (Öntanım.: "
 "all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13782,11 +13848,11 @@
 "yok sayılan dosyaları göster, isteğe bağlı kipler: traditional (geleneksel) "
 "matching (eşleşen), no (hayır) (Öntanımlı: traditional)."
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "ne zaman"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13794,198 +13860,198 @@
 "altmodüllere olan değişiklikleri yok say, isteğe bağlı ne zaman: all "
 "(hepsi), dirty (kirli), untracked (izlenmeyen) (Öntanımlı: all)."
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "izlenmeyen dosyaları sütunlarla göster"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "yeniden adlandırmaları algılama"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr ""
 "yeniden adlandırmaları algıla, isteğe bağlı olarak benzerlik indeksi ayarla"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Yok sayılan ve izlenmeyen dosyalar argümanlarının desteklenmeyen birlikte "
 "kullanımı"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "başarılı işlemenin ardından özeti gizle"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "diff'i işleme iletisi şablonunda göster"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "İşleme iletisi seçenekleri"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "iletiyi dosyadan oku"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "yazar"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "işleme yazarını geçersiz kıl"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "tarih"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "işleme tarihini geçersiz kıl"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "işleme"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "belirtilen işlemenin iletisini düzenle ve yeniden kullan"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "belirtilen işlemenin iletisini yeniden kullan"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]işleme"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "belirtilen işlemeyi değiştirmek/iletiyi yeniden yazmak için kendiliğinden "
 "tıkıştırma tarafından biçimlendirilen iletiyi kullan"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "belirtilen işlemeyi tıkıştırmak için kendiliğinden tıkıştırma tarafından "
 "biçimlendirilen iletiyi kullan"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "işlemenin yazarı şu andan itibaren benim (-C/-c/--amend ile kullanıldı)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "artbilgi"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "özel artbilgiler ekle"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "bir Signed-off-by artbilgisi ekle"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "belirtilen şablon dosyasını kullan"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "işlemeyi zorla düzenle"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "işleme iletisi şablonunda durumu içer"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "İşleme içeriği seçenekleri"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "değiştirilen tüm dosyaları gönder"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "belirtilen dosyaları işleme için indekse ekle"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "dosyaları etkileşimli olarak ekle"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "değişiklikleri etkileşimli olarak ekle"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "yalnızca belirtilen dosyaları gönder"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "pre-commit ve commit-msg kancalarını atla"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "neyin işleneceğini göster"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "önceki işlemeyi değiştir"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "post-rewrite kancasını atla"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "boş bir değişikliğin kaydı yazılabilir"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "boş iletili bir değişikliğin kaydı yazılabilir"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Hasar görmüş MERGE_HEAD dosyası (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "MERGE_MODE okunamadı"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "işleme iletisi okunamadı: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "İşleme iletisinin boş olmasından dolayı iptal ediliyor.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "İşleme iptal ediliyor; iletiyi düzenlenmedi.\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "İşleme iletisi gövdesinin boş olmasından dolayı iptal ediliyor.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14078,7 +14144,7 @@
 
 #: builtin/config.c:146
 msgid "rename section: old-name new-name"
-msgstr "bölümü yeniden adlandır: eski_ad yeni_ad"
+msgstr "bölümü yeniden adlandır: eski-ad yeni-ad"
 
 #: builtin/config.c:147
 msgid "remove a section: name"
@@ -14349,7 +14415,7 @@
 
 #: builtin/credential-cache--daemon.c:316
 msgid "credential-cache--daemon unavailable; no unix socket support"
-msgstr "credential-cache-daemon kullanılamıyor; unix soket desteği yok"
+msgstr "credential-cache--daemon kullanılamıyor; unix soket desteği yok"
 
 #: builtin/credential-cache.c:154
 msgid "credential-cache unavailable; no unix socket support"
@@ -14622,35 +14688,35 @@
 msgid "you may want to cleanup or recover these."
 msgstr "Bunları temizlemek veya kurtarmak isteyebilirsiniz."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "'diff.tool' yerine 'diff.guitool' kullan"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "bir tam dizin diff'i gerçekleştir"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "bir diff aracı çalıştırmadan önce sorma"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "dir-diff kipinde sembolik bağlar kullan"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "araç"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "belirtilen diff aracını kullan"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
-msgstr "'-tool' ile birlikte kullanılabilecek diff araçlarının listesini çıkar"
+msgstr "'--tool' ile birlikte kullanılabilecek diff araçlarının listesini çıkar"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14658,31 +14724,31 @@
 "çalıştırılan bir diff aracı sıfır olmayan bir çıkış kodu döndürdüğünde 'git-"
 "difftool'un çıkış yapmasını sağla"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "diff'leri görüntülemek için özel bir komut belirle"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "'diff'e aktarıldı"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool, çalışma ağacı veya --no-index gerektiriyor"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
-msgstr "-dir-diff, --no-index ile uyumsuz"
+msgstr "--dir-diff, --no-index ile uyumsuz"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool ve --extcmd birlikte kullanılamaz"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "--tool=<araç> için bir <araç> verilmedi"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "--extcmd=<komut> için bir <komut> verilmedi"
 
@@ -14700,7 +14766,7 @@
 
 #: builtin/env--helper.c:48
 msgid "be quiet only use git_env_*() value as exit code"
-msgstr "sessiz ol, yalnızca git_env*() değerini çıkış kodu olarak kullan"
+msgstr "sessiz ol, yalnızca git_env_*() değerini çıkış kodu olarak kullan"
 
 #: builtin/env--helper.c:67
 #, c-format
@@ -14777,7 +14843,7 @@
 msgid "skip output of blob data"
 msgstr "ikili nesne verisi çıktısını atla"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "başvuru belirteci"
 
@@ -14913,8 +14979,9 @@
 
 #: builtin/fetch.c:164
 msgid "modify the refspec to place all refs within refs/prefetch/"
-msgstr "başvuru belirtecini tüm başvuruları refs/prefetch/'e yerleştirecek "
-"biçimde değiştir"
+msgstr ""
+"başvuru belirtecini tüm başvuruları refs/prefetch/'e yerleştirecek biçimde "
+"değiştir"
 
 #: builtin/fetch.c:166 builtin/pull.c:198
 msgid "prune remote-tracking branches no longer on remote"
@@ -14989,8 +15056,9 @@
 
 #: builtin/fetch.c:210
 msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
-msgstr "bir paket dosyasını getirme; bunun yerine pazarlık ipuçlarının "
-"atalarını yazdır"
+msgstr ""
+"bir paket dosyasını getirme; bunun yerine pazarlık ipuçlarının atalarını "
+"yazdır"
 
 #: builtin/fetch.c:213 builtin/fetch.c:215
 msgid "run 'maintenance --auto' after fetching"
@@ -15096,8 +15164,8 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "%s reddedilmeli; çünkü sığ köklerin güncellenmesine izin verilmiyor"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "%s reddedildi; çünkü sığ köklerin güncellenmesine izin verilmiyor"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -15168,7 +15236,7 @@
 "you need to specify exactly one branch with the --set-upstream option."
 msgstr ""
 "Kaynak dal bulunamadı.\n"
-"--set-upstream-option ile tam olarak bir dal belirtmeniz gerekiyor."
+"--set-upstream seçeneği ile tam olarak bir dal belirtmeniz gerekiyor."
 
 #: builtin/fetch.c:1768 builtin/fetch.c:1831
 #, c-format
@@ -15197,49 +15265,54 @@
 msgid "You need to specify a tag name."
 msgstr "Bir etiket adı belirtmeniz gerekiyor."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr ""
+"--negotiate-only'nin bir veya daha çok --negotiate-tip=* gereksinimi var"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen için negatif derinlik desteklenmiyor"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen ve --depth birlikte kullanılamaz"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth ve --unshallow birlikte kullanılamaz"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "tam bir depo üzerinde --unshallow bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all bir depo argümanı almıyor"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all başvuru belirteçleri ile birlikte bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Böyle bir uzak konum veya uzak konum grubu yok: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "Bir grubu getirme ve başvuru belirteçleri tanımlama bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "--negotiate-only kullanırken uzak konum sağlanmalıdır"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Protokol, --negotiate-only desteklemiyor, çıkılıyor."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15247,11 +15320,11 @@
 "--filter yalnızca extensions.partialclone içinde yapılandırılmış uzak konum "
 "ile kullanılabilir."
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic yalnızca bir uzak konumdan getirirken kullanılabilir"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr ""
 "--stdin seçeneği yalnızca bir uzak konumdan getirilirken kullanılabilir"
@@ -15346,19 +15419,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<yapılandırma> <komut-argümanları>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "yapılandırma"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "bir depo yolları listesi tutan yapılandırma anahtarı"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "--config=<yapılandırma> eksik"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "bilinmeyen"
 
@@ -15374,16 +15447,16 @@
 msgid "warning in %s %s: %s"
 msgstr "%s %s içinde uyarı: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "şuradan kırık bağ: %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "bağda yanlış nesne türü"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15392,211 +15465,211 @@
 "şuradan kırık bağ: %7s %s\n"
 "           şuraya: %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "eksik %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "ulaşılamayan %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "sarkan %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "lost-found oluşturulamadı"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "'%s' bitirilemedi"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "%s denetleniyor"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Bağlanabilirlik denetleniyor (%d nesne)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "%s %s denetleniyor"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "kırık bağlar"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "kök %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "%s %s (%s) şurada etiketlendi: %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: nesne hasar görmüş veya kayıp"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: geçersiz başvuru günlüğü girdisi %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Başvuru günlüğü denetleniyor: %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: geçersiz sha1 işaretçisi %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: bir işleme değil"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "Uyarı: Öntanımlı başvurular yok"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: nesne hasar görmüş veya kayıp: %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: nesne ayrıştırılamadı: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "hatalı sha1 dosyası: %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Nesne dizini denetleniyor"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Nesne dizinleri denetleniyor"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "%s bağ denetleniyor"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "geçersiz %s"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s garip bir şeye işaret ediyor (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: ayrık HEAD bir şeye işaret etmiyor"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "Uyarı: %s henüz doğmamış bir dala işaret ediyor (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Önbellek ağacı denetleniyor"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: cache-tree içinde geçersiz sha1 işaretçisi"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "cache-tree içinde ağaç olmayan öge"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<seçenekler>] [<nesne>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "ulaşılamayan nesneleri göster"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "sarkan nesneleri göster"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "etiketleri bildir"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "kök düğümleri bildir"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "indeks nesnelerini dal ucu düğümü yap"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "başvuru günlüklerini dal ucu düğümü yap (öntanımlı)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "ek olarak paketleri ve alternatif nesneleri de dikkate al"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "yalnızca bağlanabilirliği denetle"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "daha kesin denetlemeyi etkinleştir"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "sarkan nesneleri .git/lost-found'a yaz"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "ilerlemeyi göster"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "ulaşılabilir nesneler için ayrıntılı adları göster"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Nesneler denetleniyor"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: nesne kayıp"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "geçersiz parametre: sha1 bekleniyordu, '%s' alındı"
@@ -15724,11 +15797,11 @@
 
 #: builtin/gc.c:1022
 msgid "failed to start 'git pack-objects' process"
-msgstr "'git-pack-objects' işlemi başlatılamadı"
+msgstr "'git pack-objects' işlemi başlatılamadı"
 
 #: builtin/gc.c:1039
 msgid "failed to finish 'git pack-objects' process"
-msgstr "'git-pack-objects' işlemi bitirilemedi"
+msgstr "'git pack-objects' işlemi bitirilemedi"
 
 #: builtin/gc.c:1091
 msgid "failed to write multi-pack-index"
@@ -15878,8 +15951,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "iş parçacığı desteği yok, %s yok sayılıyor"
@@ -15894,243 +15967,243 @@
 msgid "unable to grep from object of type %s"
 msgstr "%s türündeki bir nesneden grep yapılamıyor"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "'%c' anahtarı sayısal bir değer bekliyor"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "çalışma ağacı yerine indekste ara"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "git tarafından yönetilmeyen içerikte bul"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "hem izlenen hem izlenmeyen dosyalar içinde ara"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "'.gitignore'da belirtilen dosyaları yok say"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "her altmodülde özyineli olarak ara"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "eşleşmeyen satırları göster"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "BÜYÜK/küçük harf duyarsız eşleşme"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "yalnızca sözcük sınırlarındaki dizgileri eşleştir"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "ikili dosyaları metin olarak işle"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "ikili dosyalardaki dizgileri eşleştirme"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "ikili dosyaları textconv süzgeçleri ile işle"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "altdizinlerde ara (öntanımlı)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "en çok <derinlik> düzey in"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "genişletilmiş POSIX düzenli ifadelerini kullan"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "temel POSIX düzenli ifadelerini kullan (öntanımlı)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "dizgileri sabit diziler olarak yorumla"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "Perl uyumlu düzenli ifadeler kullan"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "satır numaralarını göster"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "ilk eşleşmenin sütun numarasını göster"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "dosya adlarını gösterme"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "dosya adlarını göster"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "dosya adlarını en üst dizine göreceli olarak göster"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "eşleşen satırlar yerine yalnızca dosya adlarını göster"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "--files-with-matches eşanlamlısı"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "eşleşme olmadan yalnızca dosya adlarını göster"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "dosya adlarından sonra NUL yazdır"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "yalnızca bir satırın eşleşen kısımlarını göster"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "eşleşen satırlar yerine eşleşme sayısını göster"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "eşleşmeleri vurgula"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "başka dosyalardan olan eşleşmelerin arasına boş satır yazdır"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "aynı dosyadan olan eşleşmelerin üzerinde dosya adını yalnızca bir kez göster"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "eşleşmelerden önce ve sonra <n> satır bağlam göster"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "eşleşmelerden önce <n> satır bağlam göster"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "eşleşmelerden sonra <n> satır bağlam göster"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "<n> iş parçacığı kullan"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "-C NUM için kısayol"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "eşleşmelerden önce işlev adının olduğu bir satır göster"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "çevresindeki işlevi göster"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "dizgileri dosyadan oku"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "<dizgi> ile eşleş"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "-e ile belirtilen dizgileri birleştir"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "çıkış durumu ile olan eşleşmelerde çıktı verme"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr "yalnızca tüm dizgilerle eşleşen dosyalardan eşleşmeleri göster"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "sayfalayıcı"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "sayfalayıcıda eşleşen dosyaları göster"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "grep(1)'in çağrılmasına izin ver (bu yapım tarafından yok sayıldı)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "bir dizgi verilmedi"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index veya --untracked revizyonlarla birlikte kullanılamaz"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "revizyon çözülemiyor: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked, --recurse-submodules ile desteklenmiyor"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "geçersiz seçenek birleştirmesi, --threads yok sayılıyor"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "iş parçacığı desteği yok, --threads yok sayılıyor"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "geçersiz belirtilen iş parçacığı sayısı (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager yalnızca çalışma ağacında çalışır"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached veya --untracked, --no-index ile birlikte kullanılamıyor"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked, --cached ile birlikte kullanılamıyor"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard, izlenen içerik için kullanılamıyor"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "hem --cached hem ağaçlar verilmiş"
 
@@ -16255,30 +16328,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s': Bilinmeyen man görüntüleyicisi."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "isteğe hiçbir man görüntüleyicisi ele almadı"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "isteğe hiçbir bilgi görüntüleyicisi ele almadı"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s', '%s' olarak armalanmış"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "hatalı alias.%s dizisi: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "kullanım: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "ek bilgi için: 'git help config'"
 
@@ -16316,7 +16389,7 @@
 msgid "used more bytes than were available"
 msgstr "kullanılabilir olandan daha çok bayt kullanıldı"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "paket off_t'nin geçerli tanımı için çok büyük"
 
@@ -16343,238 +16416,238 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "paket sürümü %<PRIu32> desteklenmiyor"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paketin %<PRIuMAX> ofsetinde hatalı nesne var: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "şişirme programı %d döndürdü"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "delta tabanı nesnesi için ofset değeri taşımı"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "delta tabanı ofseti sınırlar dışında"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "bilinmeyen nesne türü %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "paket dosyası 'pread' yapılamıyor"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "zamansız paket dosyası sonu, %<PRIuMAX> bayt eksik"
 msgstr[1] "zamansız paket dosyası sonu, %<PRIuMAX> bayt eksik"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "ciddi şişirme programı tutarsızlığı"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "%s İLE SHA1 ÇARPIŞMASI BULUNDU!"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "%s okunamıyor"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "mevcut %s nesne bilgisi okunamıyor"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "mevcut %s nesnesi okunamıyor"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "geçersiz %s ikili nesnesi"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "paketlenmiş nesne içinde fsck hatası"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "%s ögesinin tüm alt ögeleri ulaşılabilir değil"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "delta uygulanamadı"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Nesneler alınıyor"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Nesneler indeksleniyor"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paket hasar görmüş (SHA1 uyumsuzluğu)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "paket dosyası fstat yapılamıyor"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "paket sonunda döküntüler var"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "parse_pack_objects() içindeki karmaşa akıl almaz düzeyde"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Deltalar çözülüyor"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "iş parçacığı oluşturulamadı: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "karmaşa akıl almaz düzeyde"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "%d yerel nesneyle tamamlandı"
 msgstr[1] "%d yerel nesneyle tamamlandı"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "%s için beklenmedik kuyruk sağlaması (disk hasarı?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paketin %d çözülmemiş deltası var"
 msgstr[1] "paketin %d çözülmemiş deltası var"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "iliştirilen nesne söndürülemedi (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "yerel nesne %s hasarlı"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "paket dosyası adı '%s', '.%s' ile bitmiyor"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "%s dosyası '%s' yazılamıyor"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "yazılmış %s dosyası '%s' kapatılamıyor"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "paket dosyası kapatılırken hata"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "paket dosyası depolanamıyor"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "indeks dosyası depolanamıyor"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "hatalı pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Mevcut paket dosyası '%s' açılamıyor"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "'%s' için mevcut paket idx dosyası açılamıyor"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "delta değil: %d nesne"
 msgstr[1] "delta değil: %d nesne"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "zincir uzunluğu = %d: %lu nesne"
 msgstr[1] "zincir uzunluğu = %d: %lu nesne"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Şu anki çalışma dizinine geri gelinemiyor"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "hatalı %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "bilinmeyen sağlama algoritması '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin, --stdin olmadan kullanılamaz"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin bir git dizini gerektirir"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format, --stdin olmadan kullanılamaz"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify ile bir paket dosyası adı verilmedi"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "paket nesnelerinde fsck hatası"
 
@@ -16618,56 +16691,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "şablonlar '%s' konumundan kopyalanmıyor: %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "geçersiz başlangıç dalı adı: '%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "%d dosya türü ele alınamıyor"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "%s şuraya taşınamıyor: %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "depoyu başka bir sağlama ile yeniden ilklendirme deneniyor"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s halihazırda var"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: --initial-branch=%s yok sayıldı"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "%s%s içindeki mevcut paylaşılan Git deposu yeniden ilklendirildi\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "%s%s içindeki mevcut Git deposu yeniden ilklendirildi\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "%s%s içinde paylaşılan boş Git deposu ilklendirildi\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "%s%s içinde boş Git deposu ilklendirildi\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16675,41 +16748,41 @@
 "git init [-q | --quiet] [--bare] [--template=<şablon-dizini>] [--"
 "shared[=<izinler>]] [<dizin>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "izinler"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "git deposunun kullanıcılar arasında paylaşıp paylaşılmayacağını belirt"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "başlangıç dalının adını geçersiz kıl"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "sağlama"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "kullanılacak sağlama algoritmasını belirle"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir ve --bare birlikte kullanılamaz"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "%s mkdir yapılamıyor"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "%s ögesine chdir yapılamıyor"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -16718,12 +16791,12 @@
 "%s (veya --work-tree=<dizin>), %s (veya --git-dir=<dizin>) belirlenmeden "
 "izin verilmiyor"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "'%s' çalışma ağacı erişilemiyor"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir, çıplak depo ile uyumsuz"
 
@@ -16832,85 +16905,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<erim>:<dosya>, yol belirteci ile kullanılamıyor"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Son çıktı: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: hatalı dosya"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "%s nesnesi okunamadı"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "bilinmeyen tür: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: açıklama kipinden geçersiz kapak sayfası"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers değere iye değil"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "%s yama dosyası okunamıyor"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "bir tam erim gerekiyor"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "bir erim değil"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "ön yazı için e-posta biçimi gerekli"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "cover-letter dosyası oluşturulamadı"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "akıl almaz in-reply-to: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<seçenekler>] [<-beri> | <revizyon-erimi>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "iki çıktı dizini?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "bilinmeyen işleme %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "'%s' geçerli bir başvuru olarak çözülemedi"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "kesin birleştirme temeli bulunamadı"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16921,290 +16994,290 @@
 "izleyin. Bunun dışında taban işlemesini kendiniz --base=<taban-işlemesi-no>\n"
 "kullanarak el ile belirtebilirsiniz."
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "kesin birleştirme temeli bulunamadı"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "taban işlemesi revizyon listesinin atası olmalı"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "taban işlemesi revizyon listesinde olmamalı"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "yama numarası alınamıyor"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "geçerli dizinin range-diff kökeninden bir anlam çıkartılamadı"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "geçerli dizinin range-diff kökeni olarak '%s' kullanılıyor"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "bir yamayla bile olsa [PATCH n/m] kullan"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "birden çok yama bile olsa [PATCH] kullan"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "yamaları standart çıktıya yazdır"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "bir ön yazı oluştur"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "çıktı dosya adları için yalın sayı dizisi oluştur"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sonek"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "'.patch' yerine <sonek> kullan"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "yamaları 1 yerine <n>'de numaralandırmaya başla"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "reroll-count"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "diziyi n. deneme olarak imle"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "çıktı dosya adının olabilecek en çok uzunluğu"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "[PATCH] yerine [RFC PATCH] kullan"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "açıklama kipinden kapak sayfası kipi"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "ön yazının bazı kısımlarını dalın açıklamasından oluştur"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "[PATCH] yerine [<önek>] kullan"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "ortaya çıkan dosyaları <dizin>'de depola"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "[PATCH]'i soyma/ekleme"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "ikili diff'leri çıktı verme"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "From başlığında tümü sıfırdan oluşan sağlama çıktısı ver"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "üstkaynaktaki bir işleme ile eşleşen bir yamayı içerme"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "öntanımlı yerine yama biçimini göster (patch + stat)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "İletileşme"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "üstbilgi"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "e-posta üstbilgisi ekle"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "e-posta"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "To: üstbilgisi ekle"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "Cc: üstbilgisi ekle"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "tanımlayıcı"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "From adresini <tanımlayıcı> olarak ayarla (veya yoksa işleyici tanımlayıcısı)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "ileti no"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "ilk postayı <ileti no>'ya bir yanıt yap"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "sınır"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "yamayı ekle"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "yamayı iletiye koy"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "iletileri kataloglamayı etkinleştir, stiller: shallow, deep"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "imza"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "imza ekle"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "taban işleme"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "yama dizisine önkoşul ağaç bilgisini ekle"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "dosyadan bir imza ekle"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "yama dosya adlarını yazdırma"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "yamalar oluşturulurken ilerlemeyi göster"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "<rev> karşısındaki değişiklikleri ön yazıda veya tek bir yamada göster"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "<bşvr-blrtç> karşısındaki değişiklikleri ön yazıda veya tek bir yamada göster"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "oluşumun tartıldığı yüzde"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "geçersiz tanımlayıcı satırı: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n ve -k birlikte kullanılamaz"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc ve -k birlikte kullanılamaz"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only bir anlam ifade etmiyor"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status bir anlam ifade etmiyor"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check bir anlam ifade etmiyor"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout, --output ve --output-directory  birlikte kullanılamaz"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff, --cover-letter veya tek yama gerektiriyor"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff v%d karşısında:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor, --range-diff gerektiriyor"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff, --cover-letter veya tek yama gerektiriyor"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff v%d karşısında:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "'%s' imza dosyası okunamıyor"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Yamalar oluşturuluyor"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "çıktı dosyaları oluşturulamadı"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<üstkaynak> [<dal-ucu> [<sınır>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17569,14 +17642,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<seçenekler>] [<işleme>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "'m' anahtarı bir değer gerektiriyor"
@@ -17720,36 +17785,36 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' bir işlemeye işaret etmiyor"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Hatalı branch.%s.mergeoptions dizisi: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "İki uç işlemenin birleştirilmesi dışında bir şey yapılmıyor."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive için geçersiz seçenek: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "%s yazılamıyor"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Şu konumdan okunamadı: '%s'"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "Birleştirme işlenmiyor, tamamlamak için 'git commit' kullanın.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17759,11 +17824,11 @@
 "girin, özellikle güncellenmiş bir üstkaynağı kişisel dala birleştiriyorsa.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Boş bir ileti işlemeyi iptal eder.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17772,72 +17837,72 @@
 "'%c' ile başlayan satırlar yok sayılacaktır. Boş bir ileti işlemeyi\n"
 "iptal eder.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Boş işleme iletisi."
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Harika.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "Otomatik birleştirme başarısız; çakışmaları çözün ve sonucu işleyin.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Geçerli dal yok."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Geçerli dal için uzak konum yok."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Geçerli dal için öntanımlı üstkaynak tanımlanmamış."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "%s için %s konumundan uzak izleme dalı yok"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Hatalı değer '%s', '%s' ortamında"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "%s içinde birleştirebileceğimiz bir şey değil: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "birleştirebileceğimiz bir şey değil"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort bir argüman beklemez"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "İptal edilecek bir birleştirme yok (MERGE_HEAD eksik)."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit bir argüman beklemez"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue bir argüman beklemez"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "İlerlemekte olan bir birleştirme yok (MERGE_HEAD eksik)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17845,7 +17910,7 @@
 "Birleştirmenizi sonuçlandırmadınız (MERGE_HEAD mevcut).\n"
 "Lütfen birleştirmeden önce değişikliklerinizi işleyin."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17853,89 +17918,89 @@
 "Seç-al'ınızı sonuçlandırmadınız (CHERRY_PICK_HEAD mevcut).\n"
 "Lütfen birleştirmeden önce değişikliklerinizi işleyin."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Seç-al'ınızı sonuçlandırmadınız (CHERRY_PICK_HEAD mevcut)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "--squash ile --no-ff birlikte kullanılamaz."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "--squash ile --commit birlikte kullanılamaz."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Belirtilen bir işleme yok ve merge.defaultToUpstream ayarlanmamış."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "İşlemeyi boş dal ucuna tıkıştırma henüz desteklenmiyor"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "İleri sarım olmayan işlemeyi boş dal ucuna yapmak bir anlam ifade etmiyor"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - birleştirebileceğimiz bir şey değil"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Boş dal ucuna tam olarak yalnızca bir işleme birleştirilebilir"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "birbiriyle ilişkisi olmayan geçmişleri birleştirme reddediliyor"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Güncelleniyor: %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Gerçekten önemsiz indeks içi birleştirme deneniyor...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Yok.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "İleri sarma olanaklı değil, iptal ediliyor."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Ağaç bozulmamış durumuna geri sarılıyor...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "%s birleştirme stratejisi deneniyor...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Birleştirmeyi hiçbir birleştirme stratejisi işlemedi\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "%s stratejisi ile birleştirme başarısız oldu.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "El ile çözümü hazırlamak için %s kullanılıyor.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "El ile çözümü hazırlamak için %s stratejisi kullanılıyor.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -18034,7 +18099,7 @@
 "yeniden paketleme sırasında daha küçük boyutlu paket dosyalarını bu boyuttan "
 "daha büyük bir toplu iş olarak toplayın"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "tanımlanamayan altkomut: %s"
@@ -18573,7 +18638,7 @@
 msgid "read object names from the standard input"
 msgstr "nesne adlarını standart girdi'den oku"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "kaldırma, yalnızca göster"
 
@@ -18589,25 +18654,25 @@
 msgid "use notes from <notes-ref>"
 msgstr "notları <not-bşvr>'ndan kullan"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "bilinmeyen altkomut: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<seçenekler>...] [< <bşvr-liste> | < <nesne-"
 "liste>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<sçnklr>...] <base-name> [< <bşvr-liste> | < <nesne-liste>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18616,108 +18681,108 @@
 "write_reuse_object: %s bulunamıyor, %<PRIuMAX> ofsetinde bekleniyordu (%s "
 "paketinde)"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s için hatalı paketlenmiş nesne CRC'si"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s için hasar görmüş paketlenmiş nesne"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "%s nesnesi için özyineli delta algılandı"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u nesne sipariş verildi, %<PRIu32> bekleniyordu"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "şu paketin %<PRIuMAX> ofsetinde nesne bekleniyordu: %s"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "biteşlem yazımı kapatılıyor, paketler pack.packSizeLimit dolayısıyla "
 "parçalara ayrılmış"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Nesneler yazılıyor"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "%s bilgileri alınamıyor"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> nesne yazıldı (%<PRIu32> bekleniyordu)"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "bazı nesneler paketlenmediğinden dolayı biteşlem yazımı kapatılıyor"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s için paket içinde delta taban ofset taşımı"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s için delta taban ofseti sınırların dışında"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Nesneler sayılıyor"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "%s nesne üstbilgisi ayrıştırılamıyor"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "%s nesnesi okunamıyor"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "%s nesnesi için tutarsız nesne uzunluğu (%<PRIuMAX> / %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "standart altı paket - bellek yetersiz"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Delta sıkıştırması %d iş parçacığı kullanıyor"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "%s etiketinden ulaşılabilir nesneler paketlenemiyor"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Nesneler sıkıştırılıyor"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "delta sayımında tutarsızlık"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18726,7 +18791,7 @@
 "uploadpack.blobpackfileuri değeri '<nesne-sağlaması> <paket-sağlaması> <uri> "
 "biçiminde olmalıdır ('%s' alındı)"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18734,17 +18799,17 @@
 "nesne halihazırda başka bir uploadpack.blobpackfileuri içinde yapılandırıldı "
 "('%s' alındı)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "%s nesnesinin türü alınamıyor (%s paketinde)"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "'%s' paketi bulunamadı"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18753,7 +18818,7 @@
 "sınır nesnesi numarası bekleniyordu, anlamsız veri alındı:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18762,249 +18827,249 @@
 "nesne numarası bekleniyordu, anlamsız veri alındı:\n"
 "%s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "--missing için geçersiz değer"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "paket indeksi açılamıyor"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "%s konumundaki gevşek nesne incelenemedi"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "gevşek nesne zorlanamıyor"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "bir revizyon değil: '%s'"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "hatalı revizyon: '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "en son nesneler eklenemiyor"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "desteklenmeyen indeks sürümü %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "hatalı indeks sürümü '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<sürüm>[,<ofset>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr "paket indeks dosyasını belirtilen idx biçiminde yaz"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "her çıktı paketi dosyasının olabilecek en büyük boyutu"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "alternatif nesne mağazasından ödünç alınan nesneleri yok say"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "paketlenmiş nesneleri yok say"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "paket penceresini nesnelerle sınırla"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "paket penceresini nesne limitine ek olarak bellek ile kısıtla"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "ortaya çıkan pakette olabilecek en büyük delta zincirinin uzunluğu"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "var olan deltaları yeniden kullan"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "var olan nesneleri yeniden kullan"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA nesneleri kullan"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "en iyi delta eşleşmelerini ararken iş parçacıklarını kullan"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "boş bir paket çıktısı oluşturma"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "revizyon argümanlarını standart girdi'den oku"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "nesneleri henüz paketlenmeyenlere kısıtla"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "herhangi bir başvurudan ulaşılabilir olan nesneleri içer"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "başvuru günlüğü tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "indeks tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "paketleri stdin'den oku"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "paketi stdout'a çıktı ver"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "paketlenecek nesnelere başvuran etiket nesnelerini içer"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "ulaşılamayan nesneleri tut"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "ulaşılamayan gevşek nesneleri paketle"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "<zaman>'dan daha yeni ulaşılamayan nesneleri aç"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "aralıklı ulaşılabilirlik algoritmasını kullan"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "ince paketler oluştur"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "sığ getirmelere uygun paketler oluştur"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "eşlik eden .keep dosyasına iye paketleri yok say"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "bu paketi yok say"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "paket sıkıştırma düzeyi"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "aşılarla gelen işlemeleri gizleme"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "nesnelerin sayımını hızlandırmak için eğer varsa bir biteşlem indeksi kullan"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "paket indeksiyle birlikte bir biteşlem indeksi de yaz"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "eğer olanaklıysa bir biteşlem indeksi yaz"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "eksik nesneler için işlem"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "nesneleri vaatçi paket dosyalarıyla paketleme"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "delta sıkıştırması sırasında adalara uy"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "protokol"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr ""
 "bu protokol ile herhangi bir yapılandırılmış uploadpack.blobpackfileuri "
 "ögesini hariç tut"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "delta zincir derinliği %d çok derin, %d zorlanıyor"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit çok yüksek, %d zorlanıyor"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "--max-pack-size, aktarım için bir paket yapımında kullanılamaz"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "olabilecek en küçük paket boyutu limiti 1 MiB'dır"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin bir indekslenebilir paket yapımında kullanılamaz"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable ve --unpack-unreachable birbiriyle uyumsuz"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "--filter, --stdout olmadan kullanılamaz"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "--filter, --stdin-packs ile birlikte kullanılamıyor"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "iç revizyon listeleri, --stdin-packs ile birlikte kullanılamıyor"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Nesneler ortaya dökülüyor"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19194,7 +19259,7 @@
 
 #: builtin/pull.c:902
 msgid "ignoring --verify-signatures for rebase"
-msgstr "yeniden temellendirme için --verify-signature yok sayılıyor"
+msgstr "yeniden temellendirme için --verify-signatures yok sayılıyor"
 
 #: builtin/pull.c:930
 msgid ""
@@ -19224,19 +19289,19 @@
 "değiştirin. Öntanımlı yapılandırmayı yürütme sırasında --rebase,\n"
 "--no-rebase veya --ff-only ile geçersiz kılabilirsiniz.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "İndekse eklenen değişikliklerle henüz doğmamış bir dal güncelleniyor."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "yeniden temellendirme ile çekim"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "Lütfen onları işleyin veya zulalayın."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19247,7 +19312,7 @@
 "Çalışma ağacınız %s işlemesinden\n"
 "ileri sarılıyor."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19264,15 +19329,15 @@
 "$ git reset --hard\n"
 "komutunu çalıştırın."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Boş dal ucuna birden çok dal birleştirilemez."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Birden çok dala yeniden temellendirme yapılamaz."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "yerelde kaydı yazılmış altmodül değişiklikleriyle yeniden temellendirme "
@@ -19338,7 +19403,7 @@
 "\n"
 "\tgit push %s HEAD:<uzak-konum-dalının-adı>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19352,12 +19417,18 @@
 "\n"
 "\tgit push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Geçerli %s dalının birden çok üstkaynağı var, itme reddediliyor."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"İtmek için bir başvuru belirteci belirtmediniz ve push.default \"nothing\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19368,13 +19439,7 @@
 "itileceğini belirtmeden itiyorsunuz; ancak o geçerli '%s'\n"
 "dalınızın üstkaynağı değil."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"İtmek için bir başvuru belirteci belirtmediniz ve push.default \"nothing\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19386,7 +19451,7 @@
 "değişiklikleri entegre edin (örn. 'git pull ...').\n"
 "Ayrıntılar için 'git push --help' içinde 'Notes about fast-forwards'a bakın."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19398,7 +19463,7 @@
 "yapın ve uzak konumdaki değişiklikleri entegre edin (örn. 'git pull ...').\n"
 "Ayrıntılar için 'git push --help' içinde 'Notes about fast-forwards'a bakın."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19412,11 +19477,11 @@
 "etmek isteyebilirsiniz (örn. 'git pull ...').\n"
 "Ayrıntılar için 'git push --help' içinde 'Notes about fast-forwards'a bakın."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Güncellemeler reddedildi; çünkü etiket uzak konumda halihazırda var."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19426,7 +19491,7 @@
 "veya --force seçeneğini kullanmadan bir uzak başvuruyu işlemesi\n"
 "olmayan bir nesneye işaret etmesini sağlaması için güncelleyemezsiniz.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19437,103 +19502,103 @@
 "yana güncellenmiş. Bir güncellemeyi zorlamadan önce bu değişiklikleri yerel\n"
 "olarak entegre etmek isteyebilirsiniz (örn. 'git pull ...'\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "İtme konumu: %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "bazı başvurular '%s' konumuna itilemedi"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "depo"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "tüm başvuruları it"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "tüm başvuruları yansıla"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "başvuruları sil"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "etiketleri it (--all veya --mirror ile kullanılamaz)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "zorla güncelle"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<başvuruadı>:<bekle>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "başvurunun eski değerinin bu değerde olmasını gerektir"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "uzak güncellemelerin yerele entegre edilmesini gerektir"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "altmodüllerin özyineli itilmesini denetle"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "ince paket kullan"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "paket programını al"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "git pull/status için üstkaynak ayarla"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "yerelde kaldırılan başvuruları buda"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "pre-push kancasını atla"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "eksik; ancak ilgili etiketleri it"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "itmeyi GPG ile imzala"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "uzak tarafta atomsal işlem iste"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete; --all, --mirror ve --tags ile uyumsuz"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete bir başvuru olmadan anlam ifade etmiyor"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "hatalı depo '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19555,27 +19620,27 @@
 "\n"
 "\tgit push <ad>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all ve --tags birbiriyle uyumsuz"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all başvuru belirteçleriyle birleştirilemez"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror ve --tags birbiriyle uyumsuz"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror başvuru belirteçleriyle birleştirilemez"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all ve --mirror birbiriyle uyumsuz"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "itme seçeneklerinde yeni satır karakterleri olmamalı"
 
@@ -20162,7 +20227,7 @@
 "--edit-todo seçeneği yalnızca etkileşimli yeniden temellendirme sırasında "
 "kullanılabilir."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "HEAD okunamıyor"
 
@@ -20269,8 +20334,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "onulmaz: böyle bir dal/işleme yok: '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Böyle bir başvuru yok: %s"
@@ -20340,7 +20405,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dizini>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20369,7 +20434,7 @@
 "denyCurrentBranch'\n"
 "yapılandırma değişkenini 'refuse' olarak ayarlayın."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20389,11 +20454,11 @@
 "değişkenini 'warn' veya 'ignore' olarak ayarlayabilirsiniz.\n"
 "Bu iletiyi susturmak için onu 'refuse' olarak ayarlayın."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "sessiz"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Bir dizin belirtmelisiniz."
 
@@ -20550,7 +20615,7 @@
 "\t use --mirror=fetch or --mirror=push instead"
 msgstr ""
 "--mirror tehlikeli ve artık kullanılmamalı; lütfen\n"
-"\t yerine --mirror-fetch veya --mirror=push kullanın."
+"\t yerine --mirror=fetch veya --mirror=push kullanın."
 
 #: builtin/remote.c:148
 #, c-format
@@ -21022,7 +21087,7 @@
 
 #: builtin/repack.c:465
 msgid "remove redundant packs, and run git-prune-packed"
-msgstr "gereksiz paketleri kaldır ve 'git prune-packed' çalıştır"
+msgstr "gereksiz paketleri kaldır ve 'git-prune-packed' çalıştır"
 
 #: builtin/repack.c:467
 msgid "pass --no-reuse-delta to git-pack-objects"
@@ -21374,15 +21439,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget <yol>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "indeksteki temiz çözümlerin kaydını yap"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "yol olmadan 'git rerere forget' kullanım dışı"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "'%s' için diff oluşturulamıyor"
@@ -21536,19 +21601,19 @@
 msgid "Could not write new index file."
 msgstr "Yeni indeks dosyası yazılamadı."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "--exclude-promisor-objects ve --missing birlikte kullanılamıyor"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "nesne süzme --objects gerektiriyor"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list not görüntülemesini desteklemiyor"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "imlenmiş sayım, --objects ile uyumsuz"
 
@@ -21568,6 +21633,18 @@
 msgid "output in stuck long form"
 msgstr "uzun biçimde çıktı ver"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "zamansız girdi sonu"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "'--' ayırıcısı öncesinde bir kullanım dizisi verilmedi"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Tek bir revizyon gerekiyordu"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21582,6 +21659,50 @@
 "\n"
 "İlki hakkında ek bilgi için \"git rev-parse --parseopt -h\" çalıştırın."
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "bir git dizini değil: '%s'"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "--path-format için bilinmeyen bir argüman: %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix bir argüman gerektiriyor"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "--abbrev-ref için bilinmeyen kip: %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "--show-object-format için bilinmeyen kip: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<seçenekler>] <işlememsi>..."
@@ -22072,37 +22193,37 @@
 msgid "failed to open '%s'"
 msgstr "'%s' açılamadı"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "'%s' yolu olağanlaştırılamadı"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <dizgiler>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "C biçemli '%s' dizisinin tırnakları kaldırılamıyor"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "mevcut aralıklı çıkış dizgileri yüklenemiyor"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "dizgileri stdin'den oku"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "çalışma dizini yenilenirken hata"
 
@@ -22126,10 +22247,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <dal-adı> [<zula>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22280,93 +22397,93 @@
 msgid "only show untracked files in the stash"
 msgstr "zulada yalnızca izlenmeyen dosyaları göster"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "%s, %s ile güncellenemiyor"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "zula iletisi"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" bir <işleme> argümanı gerektirir"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Değişiklik seçilmedi"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Henüz ilk işleme yapılmamış"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Geçerli indeks durumu kaydedilemiyor"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "İzlenmeyen dosyalar kaydedilemiyor"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Geçerli çalışma ağacı durumu kaydedilemiyor"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Çalışma ağacı durumu kaydı yazılamıyor"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "--patch, --include-untracked veya --all hepsi bir anda kullanılamıyor"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "'git add' yapmayı mı unuttunuz?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Kaydedilecek yerel değişiklik yok"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Zula ilklendirilemiyor"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Geçerli durum kaydedilemiyor"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Çalışma dizini ve indeks durumu %s kaydedildi"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Çalışma ağacı değişiklikleri kaldırılamıyor"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "indeksi tut"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "yama kipinde zula"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "sessiz kip"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "zulada izlenmeyen dosyaları içer"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "yok sayma dosyalarını içer"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22390,40 +22507,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "her satırın başına yorum karakteri ve boşluk koy"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Tam bir başvuru adı bekleniyordu, %s alındı"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote argümanı almaz"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "'%s' url'sinden bir bileşen çıkarılamıyor"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "göreceli yollar için alternatif tutturucu"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<yol>] [<yol>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr ".gitmodules içinde '%s' altmodül yolu için url bulunamadı"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Giriliyor: '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22432,7 +22550,7 @@
 "run_command, %s için sıfır olmayan durum döndürdü\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22442,20 +22560,20 @@
 "run_command, %s ögesinin iç içe geçmiş altmodülleri içinde özyinelerken "
 "sıfır olmayan durum döndürdü"
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "her bir altmodül komutu girişinin çıktısını gizle"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "iç içe geçmiş altmodüle özyinele"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <komut>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -22464,54 +22582,54 @@
 "'%s' yapılandırması aranamadı. Bu deponun kendi yetkili üstkaynağı olduğu "
 "varsayılıyor."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Altmodül yolu url'si '%s' kaydı yapılamadı"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "'%s' altmodülü (%s), '%s' yoluna kaydı yapıldı\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "uyarı: '%s' altmodülü için komut güncellemesi önerilmiyor\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "'%s' altmodülü yolu için güncelleme kipi kaydı yapılamadı"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "bir altmodül ilklendirmesi çıktısını gizle"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<seçenekler>] [<yol>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "'%s' yolu için .gitmodules içinde altmodül eşlemi bulunmadı"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "'%s' altmodülü içinde HEAD başvurusu çözülemedi"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "'%s' altmodülüne özyinelenemedi"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "altmodül durum çıktısını gizle"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -22519,96 +22637,96 @@
 "altmodül HEAD'i içinde depolanan işleme yerine indekste depolanan işlemeyi "
 "kullan"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<yol>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <yol>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(ikili nesne)->%s(altmodül)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(altmodül)->%s(ikili nesne)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "'%s' üzerinden nesne sağlaması yapılamadı"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "beklenmedik kip %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "altmodül HEAD'i içindeki işleme ile indekstekini karşılaştırmak için"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr "altmodül HEAD'i yerine indekste depolanan işlemeyi kullan"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "indeksteki işlemeyi altmodül HEAD'inde olan ile karşılaştır"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "'ignore_config' değeri 'all' olan altmodülleri atla"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "özet boyutunu sınırla"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<seçenekler>] [<işleme>] [--] [<yol>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "HEAD için bir revizyon getirilemedi"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached ve --files birlikte kullanılamaz"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "'%s' için altmodül url'si eşitleniyor\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "'%s' altmodülü yolu için url kaydı yapılamadı"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "'%s' altmodülü için öntanımlı uzak konum alınamadı"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "'%s' altmodülü için uzak konum güncellenemedi"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "altmodül url'si eşitleme çıktısını gizle"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<yol>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22617,7 +22735,7 @@
 "Altmodül çalışma ağacı '%s' bir .git dizini içeriyor (tüm geçmişi dahil "
 "olacak biçimde kaldırmak istiyorsanız 'rm -rf' kullanın)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -22626,47 +22744,47 @@
 "Altmodül çalışma ağacı '%s' yerel değişiklikler içeriyor; onları atmak için "
 "'-f' kullanın"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "'%s' dizini temizlendi\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "'%s' altmodül çalışma ağacı kaldırılamadı\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "boş altmodül dizini %s oluşturulamadı"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "'%s' altmodülü (%s), '%s' yoluna kaydı yapılmamış\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr "altmodül çalışma ağaçlarını yerel değişiklikler içerseler bile kaldır"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "tüm altmodüllerin kaydını kaldır"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<yol>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
-"Tüm altmodüllerin ilklendirmesini gerçekten geri almak istiyorsanız '-all' "
+"Tüm altmodüllerin ilklendirmesini gerçekten geri almak istiyorsanız '--all' "
 "kullanın"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22678,46 +22796,68 @@
 "submodule.alternateErrorStrategy ayarını 'info'ya ayarlayın veya\n"
 "--reference yerine --reference-if-able kullanarak klonlayın."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "'%s' altmodülü alternatif ekleyemiyor: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "'%s' submodule.alternateErrorStrategy değeri tanımlanamadı"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "'%s' submodule.alternateLocation değeri tanımlanamadı"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr ""
+"başka bir altmodülün git dizininde '%s' oluşturma/kullanma reddediliyor"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "'%s' ögesinin '%s' altmodül yoluna klonlanması başarısız"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "dizin boş değil: '%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "'%s' için altmodül dizini alınamadı"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "yeni altmodülün nereye klonlanacağı"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "yeni altmodülün adı"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "altmodülün klonlanacağı url konumu"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "sığ klonların derinliği"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "zorla klonla"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "boş olmayan dizine klonlamaya izin verme"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -22726,103 +22866,82 @@
 "git submodule--helper clone [--prefix=<yol>] [--quiet] [--reference <depo>] "
 "[--name <ad>] [--depth <derinlik>] [--single-branch] --url <url> --path <yol>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr ""
-"başka bir altmodülün git dizininde '%s' oluşturma/kullanma reddediliyor"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "'%s' ögesinin '%s' altmodül yoluna klonlanması başarısız"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "dizin boş değil: '%s'"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "'%s' için altmodül dizini alınamadı"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Geçersiz güncelleme kipi '%s', '%s' altmodül yolu için"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr "Geçersiz güncelleme kipi '%s', '%s' altmodül yolu için yapılandırılmış"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Altmodül yolu '%s' ilklendirilmedi"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "'update --init' mi kullanmak istersiniz?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Birleştirilmemiş altmodül %s atlanıyor"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "'%s' altmodülü atlanıyor"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "'%s' klonlanamadı. Yeniden deneme zamanlandı."
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "'%s' ikinci bir kez klonlanamadı, iptal ediliyor"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "çalışma ağacına giden yol"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "iç içe geçmiş altmodül sınırları üzerinden çalışma ağacına giden yol"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout veya none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "belirli bir revizyon sayısına kısaltılmış sığ klon oluştur"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "paralel işler"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "ilk klonun sığlık üzerine olan tavsiyeyi izleyip izlemeyeceği"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "klonlama işlemini yazdırma"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<yol>] [<yol>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "güncelleme parametresi için hatalı değer"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22831,87 +22950,145 @@
 "Altmodül (%s) dalı süperproje dalından devralmak üzere yapılandırıldı; ancak "
 "süperproje herhangi bir dalda değil"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "'%s' altmodülü için depo tutacağı alınamadı"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "altmodüllere özyinele"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<seçenekler>] [<yol>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr ".gitmodules dosyasına yazım güvenli mi değil mi denetle"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr ".gitmodules dosyasındaki yapılandırmayı kaldır"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <ad> [<değer>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <ad>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr ".gitmodules dosyasının çalışma ağacında olduğundan lütfen emin ol"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "bir altmodül url ayarlanması çıktısını gizle"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <yol> <yeniurl>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "öntanımlı izleme dalını master olarak ayarla"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "öntanımlı izleme dalını ayarla"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <yol>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <dal> <yol>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "--branch veya --default gerekli"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch ve --default birlikte kullanılamaz"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "'%s' konumundaki mevcut repo indekse ekleniyor\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' halihazırda mevcut ve geçerli bir git deposu değil"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "'%s' için bir git deposu yerelde şu uzak konumlarla bulundu:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Eğer bu yerel git dizinini\n"
+"  %s\n"
+"konumundan yeniden klonlama yerine kullanmak isterseniz '--force'\n"
+"seçeneğini kullanın. Eğer bu yerel git dizini doğru depo değilse veya bunun\n"
+"ne anlama geldiğinden emin değilseniz '--name' seçeneği ile başka bir ad\n"
+"seçin.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "'%s' altmodülü için yerel git dizini yeniden etkinleştiriliyor\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "'%s' altmodülü çıkış yapılamıyor"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "klonlamada çıkış yapılacak depo dalı"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "başka bir durumda yok sayılan altmodül yolunun eklenmesine izin ver"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<seçenekler>...] --url <url> --path <yol> --"
+"name <ad>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s, --super-prefix desteklemiyor"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
-msgstr "'%s' geçerli bir submodule-helper altkomutu değil"
+msgstr "'%s' geçerli bir submodule--helper altkomutu değil"
 
 #: builtin/symbolic-ref.c:8
 msgid "git symbolic-ref [<options>] <name> [<ref>]"
@@ -23533,7 +23710,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <yol>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "'%s' silinemedi"
@@ -23543,25 +23720,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "%s/%s kaldırılıyor: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "budanan çalışma ağaçlarını bildir"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "<zaman>'dan eski çalışma ağaçlarının hükmünü kaldır"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' halihazırda var"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "kullanılamayan çalışma ağacı konumu '%s'"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23571,7 +23748,7 @@
 "geçersiz kılmak için '%s -f -f', temizlemek için 'unlock', 'prune' veya "
 "'remove' kullanın"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23580,27 +23757,31 @@
 "'%s' eksik; ancak halihazırda kaydı yapılmış bir çalışma ağacı;\n"
 "geçersiz kılmak için '%s -f', temizlemek için 'prune' veya 'remove' kullanın"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "'%s' dizini oluşturulamadı"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "ilklendiriliyor"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Çalışma ağacı hazırlanıyor (yeni dal '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Çalışma ağacı hazırlanıyor ('%s' dalı sıfırlanıyor; %s konumundaydı)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Çalışma ağacı hazırlanıyor ('%s' çıkış yapılıyor)"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Çalışma ağacı hazırlanıyor (ayrık HEAD %s)"
@@ -23625,82 +23806,90 @@
 msgid "keep the new working tree locked"
 msgstr "yeni çalışma ağacını kilitli tut"
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr "izleme kipini ayarla (bkz: git-branch(1))"
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr "yeni dalın adını bir uzak izleme dalıyla eşleştirmeyi dene"
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr "-b, -B ve --detach birlikte kullanılamaz"
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr "--[no-]track yalnızca yeni bir dal oluşturulmuşsa kullanılabilir"
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr "varsa genişletilmiş açıklamaları ve nedenleri göster"
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr "<zaman>'dan eski çalışma ağaçlarına 'budanabilir' açıklama ekle"
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr "--verbose ve --porcelain birlikte kullanılamaz"
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr "kilitleme nedeni"
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr "izleme kipini ayarla (bkz: git-branch(1))"
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr "yeni dalın adını bir uzak izleme dalıyla eşleştirmeyi dene"
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr "-b, -B ve --detach birlikte kullanılamaz"
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason, --lock gerektiriyor"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "--lock ile eklendi"
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr "--[no-]track yalnızca yeni bir dal oluşturulmuşsa kullanılabilir"
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr "varsa genişletilmiş açıklamaları ve nedenleri göster"
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "<zaman>'dan eski çalışma ağaçlarına 'budanabilir' açıklama ekle"
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose ve --porcelain birlikte kullanılamaz"
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' bir çalışma ağacı değil"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Ana çalışma ağacı kilitlenemez veya kilidi açılamaz"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' halihazırda kilitli, nedeni: %s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' halihazırda kilitli"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' kilitli değil"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "altmodül içeren çalışma ağaçları taşınamaz veya kaldırılamaz"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "çalışma ağacı kirli veya kilitli olsa bile zorla taşı"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' bir ana çalışma ağacı"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "hedef adı şuradan anlaşılamadı: '%s'"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23709,7 +23898,7 @@
 "kilitli bir çalışma ağacı taşınamıyor, kilit nedeni: %s\n"
 "geçersiz kılmak için 'move -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23717,38 +23906,38 @@
 "kilitli bir çalışma ağacı taşınamıyor;\n"
 "geçersiz kılmak için 'move -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "doğrulama başarısız, çalışma ağacı taşınamıyor: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "'%s' -> '%s' taşıması başarısız"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "'%s' üzerinde 'git status' çalıştırılamadı"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' değiştirilmiş veya izlenmeyen dosyalar içeriyor, silmek için --force "
 "kullanın"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "'%s' üzerinde 'git status' çalıştırılamadı, kod %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr "çalışma ağacı kirli veya kilitli olsa bile zorla kaldır"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23757,7 +23946,7 @@
 "kilitli bir çalışma ağacı kaldırılamıyor, kilit nedeni: %s\n"
 "geçersiz kılmak için 'remove -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23765,17 +23954,17 @@
 "kilitli bir çalışma ağacı kaldırılamıyor;\n"
 "geçersiz kılmak için 'remove -f -f' kullanın veya önce kilidini açın"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "doğrulama başarısız, çalışma ağacı kaldırılamıyor: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "şunu onar %s: %s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "hata: %s: %s"
@@ -24118,7 +24307,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "SSL arka ucu '%s' olarak ayarlanamadı: Halihazırda ayarlanmış"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -24168,96 +24357,96 @@
 msgid "redirecting to %s"
 msgstr "şuraya yeniden yönlendiriliyor: %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "dosya sonuna dikkat edilmiyorsa dosya sonu olmamalıdır"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "uzak sunucu durumsuz ayırıcı gönderdi"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "uzak sunucu beklenmedik yanıt sonu paketi gönderdi"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
-"rpc sonrası verisi geri sarılamıyor - https.postBuffer'ı artırmayı deneyin"
+"rpc sonrası verisi geri sarılamıyor - http.postBuffer'ı artırmayı deneyin"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: hatalı satır uzunluğu karakteri: %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: beklenmedik yanıt sonu paketi"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC başarısız oldu; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "bu kadar büyük itmeler ele alınamıyor"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "istek söndürülemiyor; 'zlib deflate' hatası %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "istek söndürülemiyor; 'zlib end' hatası %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "üstbilginin %d baytı alındı"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "gövdenin %d baytı hâlâ bekleniyor"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "programlanamayan http taşıyıcısı sığ işlevleri desteklemiyor"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "getirme başarısız."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "akıllı http üzerinden sha1 ile getirme yapılamıyor"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "protokol hatası: sha/ref bekleniyordu, '%s' alındı"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http taşıyıcısı %s desteklemiyor"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push başarısız"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: kullanım: git remote-curl <uzak-konum> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: git'ten komut akışı okunurken hata"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: yerel bir depo olmadan getirme yapılmaya çalışıldı"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: git'ten bilinmeyen komut '%s'"
@@ -25103,69 +25292,27 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' çıkış yapılan bir işlemeye iye değil"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "'$sm_path' konumundaki mevcut depo indekse ekleniyor"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' halihazırda mevcut ve geçerli bir git deposu değil"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr "'$sm_name' için bir git deposu yerelde şu uzak konumlarla bulundu:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Bu yerel git dizinini\n"
-"  $realrepo\n"
-"konumundan bir kez daha klonlamak yerine yeniden kullanmak istiyorsanız\n"
-"--force seçeneğini kullanın. Eğer bu git dizini doğru depo değilse veya \n"
-"bunun ne anlama geldiğinden emin değilseniz --name seçeneği ile başka bir\n"
-"ad seçin."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "'$sm_name' altmodülü için yerel git dizini yeniden etkinleştiriliyor."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "'$sm_path' altmodülü çıkış yapılamıyor"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "'$sm_path' altmodülü eklenemedi"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "'$sm_path' altmodülü kaydı yapılamadı"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "'$displaypath' altmodül yolunda geçerli revizyon bulunamadı"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "'$sm_path' altmodül yolunda getirme yapılamadı"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -25174,7 +25321,7 @@
 "'$sm_path' altmodül yolunda geçerli ${remote_name}/${branch} revizyonu "
 "bulunamadı"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
@@ -25183,7 +25330,7 @@
 "'$displaypath' altmodül yolunda getirme yapılamadı; $sha1 doğrudan "
 "getirilmeye çalışılıyor"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -25192,47 +25339,47 @@
 "'$displaypath' altmodül yolunda getirme tamamlandı; ancak $sha1 içermiyor. "
 "Bu işlemenin doğrudan getirilmesi başarısız oldu."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "'$displaypath' altmodül yolunda '$sha1' çıkışı yapılamadı"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Altmodül yolu '$displaypath': '$sha1' çıkışı yaptı"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "'$sha1', '$displaypath' altmodül yolunda yeniden temellendirilemedi"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Altmodül yolu '$displaypath': '$sha1' içine yeniden temellendirildi"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "'$sha1', '$displaypath' altmodül yolunda birleştirilemedi"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Altmodül yolu '$displaypath': '$sha1' içinde birleştirildi"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "'$displaypath' altmodül yolunda '$command $sha1' çalıştırılamadı"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Altmodül yolu '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "'$displaypath' altmodül yoluna özyinelenemedi"
@@ -25955,39 +26102,39 @@
 msgid "invalid argument %s, expecting --"
 msgstr "geçersiz argüman %s, -- bekleniyor"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr "yerel dilim GMT'den bir dakikadan az bir aralıkla ayrımlı\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "yerel saat ofseti 24 saate eşit veya daha büyük\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "onulmaz: '%s' komutu %d çıkış koduyla sonlandı"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "düzenleyici düzgünce çıkmadı, her şey iptal ediliyor"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "'%s' yazmakta olduğunuz e-postanın orta düzey bir sürümünü içeriyor.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' yazılan e-postayı içeriyor.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases diğer seçeneklerle uyumsuz\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -25998,11 +26145,11 @@
 "'e'ye dikkat edin. sendemail.forbidSendmailVariables seçeneğini 'false'\n"
 "yaparak bu denetimi devre dışı bırakabilirsiniz.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "'git format-patch' bir deponun dışından çalıştırılamıyor\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -26010,37 +26157,37 @@
 "'batch-size' ve 'relogin' birlikte belirtilmeli (komut satırı veya "
 "yapılandırma seçeneklerinden)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Bilinmeyen --suppress-cc alanı: '%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Bilinmeyen --confirm ayarı: '%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "uyarı: tırnak içine alınmış sendmail arması desteklenmiyor: %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "uyarı: ':include:' desteklenmiyor: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "uyarı: '/file' veya '|pipe' yeniden yönlendirmesi desteklenmiyor: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "uyarı: sendmail satırı tanımlanamadı: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -26055,12 +26202,12 @@
 "\t* Bir dosya demek istiyorsanız \"./%s\" diyerek veya\n"
 "\t* Bir erim demek istiyorsanız --format-patch seçeneğini vererek\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "%s opendir yapılamadı: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -26070,17 +26217,17 @@
 "Hiçbir yama dosyası belirtilmedi!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "%s içinde konu satırı yok mu?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "%s yazma için açılamadı: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26094,38 +26241,38 @@
 "\n"
 "Bir özet göndermek istemiyorsanız gövde kısmını temizleyin.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "%s açılamadı: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "%s.final açılamadı: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Özet e-postası boş, atlanıyor\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "<%s> kullanmak istediğinizden emin misiniz [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr ""
 "Aşağıdaki dosyalar 8 bit; ancak Content-Transfer-Encoding desteklemiyorlar.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Hangi 8 bit kodlamayı beyan etmeliyim [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26138,22 +26285,22 @@
 "içinde '*** SUBJECT HERE ***' konu şablonu var. Yine de göndermek "
 "istiyorsanız --force kullanın.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "E-postalar kime gönderilmeli (eğer gerekliyse)?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "onulmaz: '%s' arması kendisine genişliyor\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr ""
 "İlk e-posta için Message-ID, In-Reply-To olarak kullanılsın mı (eğer "
 "gerekliyse)?"
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "hata: şuradan geçerli bir adres çıkartılamadı: %s\n"
@@ -26161,16 +26308,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "Bu adresle ne yapılsın? ([q] çık|[d] bırak|düz[e]nle): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "CA yolu \"%s\" mevcut değil"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26196,115 +26343,115 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 "Bu e-posta gönderilsin mi? ([y] evet|[n] hayır|düz[e]nle|[q] çık|[a] tümü): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Bu e-postayı yanıt gerektirme seçeneğiyle gönder"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Gerekli SMTP sunucusu düzgünce tanımlanmamış."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Sunucu STARTTLS desteklemiyor! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS başarısız oldu! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "SMTP düzgünce başlatılamıyor. Yapılandırmayı denetleyin ve --smtp-debug "
 "yapın."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "%s gönderilemedi\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "%s gönderilir gibi yapıldı\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "%s gönderildi\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Sınama tamam. Günlük çıktısı:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "Tamam. Günlük çıktısı:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Sonuç: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Sonuç: Tamam\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "%s dosyası açılamıyor"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Cc: %s, '%s' satırından ekleniyor\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) To: %s, '%s' satırından ekleniyor\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Cc: %s, '%s' satırından ekleniyor\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Cc: %s, '%s' satırından ekleniyor\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) '%s' çalıştırılamadı"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) %s: %s, '%s' konumundan ekleniyor\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) şuraya olan veri yolu kapatılamadı: '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "ileti 7 bit olarak gönderilemiyor"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "geçersiz aktarım kodlaması"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26315,12 +26462,12 @@
 "%s\n"
 "uyarı: hiçbir yama gönderilmedi\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "%s açılamıyor: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26329,13 +26476,28 @@
 "onulmaz: %s:%d, 998 karakterden uzun\n"
 "uyarı: hiçbir yama gönderilmedi\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "%s, yedek sonek '%s' ile atlanıyor.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "%s ögesini gerçekten göndermek istiyor musunuz? [y|N]: "
+
+#~ msgid "unable to write stateless separator packet"
+#~ msgstr "durumsuz ayırıcı paketi yazılamıyor"
+
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
+
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
+
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
+
+#~ msgid "remote server sent stateless separator"
+#~ msgstr "uzak sunucu durumsuz ayırıcı gönderdi"
diff --git a/po/vi.po b/po/vi.po
index ccdabfa..40b9996 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git  v2.32.0-rc0\n"
+"Project-Id-Version: git 2.33.0-rc2\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-24 13:49+0700\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 14:53+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
 "Language: vi\n"
@@ -26,8 +26,8 @@
 msgid "Huh (%s)?"
 msgstr "Hả (%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "không thể đọc bảng mục lục"
@@ -56,7 +56,7 @@
 msgid "could not stage '%s'"
 msgstr "không thể đưa “%s” lên bệ phóng"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "không thể ghi bảng mục lục"
 
@@ -111,12 +111,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Chỉ có các tập tin nhị phân là thay đổi.\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "Không có thay đổi nào.\n"
@@ -199,11 +199,11 @@
 msgid "(empty) select nothing"
 msgstr "(để trống) không chọn gì"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** Lệnh ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "Giờ thì sao"
 
@@ -215,12 +215,13 @@
 msgid "unstaged"
 msgstr "chưa đưa lên bệ phóng"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "đường-dẫn"
@@ -229,7 +230,7 @@
 msgid "could not refresh index"
 msgstr "không thể đọc lại bảng mục lục"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "Tạm biệt.\n"
@@ -533,34 +534,34 @@
 "a - áp dụng khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng áp dụng khúc này cũng như bất kỳ cái nào sau này trong tập tin\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "không thể phân tích cú pháp phần đầu của khúc “%.*s”"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "không thể phân tích cú pháp phần đầu khúc đã tô màu “%.*s”"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "không thể phân tích cú pháp khác biệt"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "không thể phân tích khác biệt được tô màu"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "gặp lỗi khi chạy “%s”"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "đầu ra không khớp từ interactive.diffFilter"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -568,7 +569,7 @@
 "Bộ lọc của bạn phải duy trì một quan hệ một-đến-một\n"
 "giữa các dòng đầu vào và đầu ra của nó."
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -577,7 +578,7 @@
 "cần dòng ngữ cảnh #%d trong\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -590,11 +591,11 @@
 "\tkhông được kết thúc bằng:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Chế độ sửa khúc bằng tay -- xem ở đáy để có hướng dẫn sử dụng nhanh.\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -608,7 +609,7 @@
 "Những dòng bắt đầu bằng %c sẽ bị loại bỏ.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -618,11 +619,11 @@
 "để sửa lần nữa. Nếu mọi dòng của khúc bị xóa bỏ, thế thì những\n"
 "sửa dổi sẽ bị loại bỏ, và khúc vẫn giữ nguyên.\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "không thể phân tích cú pháp phần đầu khúc"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "“git apply --cached” gặp lỗi"
 
@@ -638,26 +639,26 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "Hunk đã sửa của bạn không được áp dụng. Sửa lại lần nữa (nói \"n\" để loại "
 "bỏ!) [y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "Các khúc đã chọn không được áp dụng vào bảng mục lục!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "Vẫn áp dụng chúng cho cây làm việc? "
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "Đã không áp dụng gì cả.\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -679,68 +680,68 @@
 "e - sửa bằng tay khúc hiện hành\n"
 "? - hiển thị trợ giúp\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "Không có khúc kế trước"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "Không có khúc kế tiếp"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "Không còn khúc nào để mà nhảy đến"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "nhảy đến khúc nào (<ret> để xem thêm)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "nhảy đến khúc nào? "
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Số không hợp lệ: “%s”"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Rất tiếc, chỉ có sẵn %d khúc."
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "Không còn khúc nào để mà tìm kiếm"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "tìm kiếm cho biểu thức chính quy? "
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Định dạng tìm kiếm của biểu thức chính quy không đúng %s: %s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "Không thấy khúc nào khớp mẫu đã cho"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "Rất tiếc, không thể chia nhỏ khúc này"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Chi nhỏ thành %d khúc."
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "Rất tiếc, không thể sửa khúc này"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "“git apply” gặp lỗi"
 
@@ -803,7 +804,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "Thoát ra bởi vì xung đột không thể giải quyết."
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Bạn chưa kết thúc việc hòa trộn (MERGE_HEAD vẫn tồn tại)."
 
@@ -1194,8 +1195,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s có kiểu %o, cần %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "đường dẫn không hợp lệ “%s”"
@@ -1285,7 +1286,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "không thể thêm mục nhớ đệm cho %s"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "gặp lỗi khi ghi vào “%s”"
@@ -1371,7 +1372,7 @@
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d dòng được áp dụng sau khi sửa các lỗi khoảng trắng."
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "Không thể ghi tập tin lưu bảng mục lục mới"
 
@@ -1383,7 +1384,7 @@
 msgid "apply changes matching the given path"
 msgstr "áp dụng các thay đổi khớp với đường dẫn đã cho"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "số"
 
@@ -1453,9 +1454,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "đảm bảo rằng có ít nhất <n> dòng ngữ cảnh khớp"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "hành động"
@@ -1485,8 +1486,8 @@
 msgstr "cho phép chồng khối nhớ"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "chi tiết"
 
@@ -1499,7 +1500,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "không tin số lượng dòng trong phần đầu khối dữ liệu"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "gốc"
 
@@ -1541,7 +1542,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "đường dẫn quá dài (%d ký tự, SHA1: %s): %s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "lỗi giải nén (%d)"
@@ -1576,13 +1577,13 @@
 msgstr "không thể đọc %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "không thể đọc “%s”"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "đặc tả đường dẫn “%s” không khớp với bất kỳ tập tin nào"
@@ -1624,7 +1625,7 @@
 msgid "archive format"
 msgstr "định dạng lưu trữ"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "tiền_tố"
 
@@ -1635,7 +1636,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1666,7 +1667,8 @@
 msgstr "liệt kê các kiểu nén được hỗ trợ"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "kho"
 
@@ -1674,14 +1676,14 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "nhận kho nén từ kho chứa <kho> trên máy chủ"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "lệnh"
 
 #: archive.c:572 builtin/archive.c:94
 msgid "path to the remote git-upload-archive command"
-msgstr "đường dẫn đến lệnh git-upload-pack trên máy chủ"
+msgstr "đường dẫn đến lệnh git-upload-archive trên máy chủ"
 
 #: archive.c:579
 msgid "Unexpected option --remote"
@@ -1847,7 +1849,7 @@
 
 #: blame.c:2776
 msgid "--contents and --reverse do not blend well."
-msgstr "tùy chọn--contents và --reverse không được trộn vào nhau."
+msgstr "tùy chọn --contents và --reverse không được trộn vào nhau."
 
 #: blame.c:2790
 msgid "cannot use --contents with final commit object name"
@@ -1858,11 +1860,11 @@
 msgstr ""
 "cùng sử dụng --reverse và --first-parent cần chỉ định lần chuyển giao cuối"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "cài đặt việc di chuyển qua các điểm xét duyệt gặp lỗi"
 
@@ -2024,116 +2026,116 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD của cây làm việc %s chưa được cập nhật"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "không hiểu thuật toán băm dữ liệu bundle: %s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "không hiểu dung lượng “%s”"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "“%s” không giống như tập tin v2 hay v3 bundle (định dạng dump của git)"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "phần đầu không được thừa nhận: %s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "không thể mở “%s”"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Kho chứa thiếu những lần chuyển giao tiên quyết này:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "cần một kho chứa để thẩm tra một bundle"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Bó dữ liệu chứa %d tham chiếu:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "Lệnh bundle ghi lại toàn bộ lịch sử."
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Lệnh bundle yêu cầu %d tham chiếu này:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "không thể nhân đôi bộ mô tả bundle"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "Không thể sản sinh đối tượng gói"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "đối tượng gói đã chết"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "th.chiếu “%s” bị loại trừ bởi các tùy chọn rev-list"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "phiên bản bundle %d không được hỗ trợ"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "không thể ghi phiên bản bundle %d với thuật toán %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "đối số không được thừa nhận: %s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "Từ chối tạo một bó dữ liệu trống rỗng."
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "không thể tạo “%s”"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "mục lục gói đã chết"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "mã mảnh kết thúc sớm hơn bình thường"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "bù mảnh không đúng cách %<PRIx64> và %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "tìm thấy ID của mảnh bị trùng lặp %<PRIx32>"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "mảnh cuối cùng có id không bằng không %<PRIx32>"
@@ -2205,12 +2207,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "commit-graph yêu cầu dữ liệu tạo tràn nhưng không có"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "không thể phân tích lần chuyển giao “%s”"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "không thể lấy kiểu của đối tượng “%s”"
@@ -2276,7 +2278,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "gặp lỗi khi ghi số đúng của mã đồ họa cơ sở"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "không thể tạo các thư mục dẫn đầu của “%s”"
@@ -2326,66 +2328,66 @@
 msgid "too many commits to write graph"
 msgstr "có quá nhiều lần chuyển giao để ghi đồ thị"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "tập tin đồ-thị-các-lần-chuyển-giao có tổng kiểm không đúng và có vẻ như là "
 "đã hỏng"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "đồ-thị-các-lần-chuyển-giao có thứ tự OID không đúng: %s sau %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "đồ-thị-các-lần-chuyển-giao có giá trị fanout không đúng: fanout[%d] = %u != "
 "%u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "gặp lỗi khi phân tích lần chuyển giao từ %s đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "Đang thẩm tra các lần chuyển giao trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "gặp lỗi khi phân tích lần chuyển giao %s từ cơ sở dữ liệu đối tượng cho đồ "
 "thị lần chuyển giao"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "OID cây gốc cho lần chuyển giao %s trong đồ-thị-các-lần-chuyển-giao là %s != "
 "%s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 "danh sách cha mẹ đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là quá dài"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "cha mẹ đồ-thị-các-lần-chuyển-giao cho %s là %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "danh sách cha mẹ đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s bị chấm "
 "dứt quá sớm"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2393,7 +2395,7 @@
 "đồ-thị-các-lần-chuyển-giao có con số không lần tạo cho lần chuyển giao %s, "
 "nhưng không phải số không ở chỗ khác"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2401,22 +2403,22 @@
 "đồ-thị-các-lần-chuyển-giao có con số không phải không lần tạo cho lần chuyển "
 "giao %s, nhưng số không ở chỗ khác"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr ""
 "tạo đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là %<PRIuMAX> < "
 "%<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
 "ngày chuyển giao cho lần chuyển giao %s trong đồ-thị-các-lần-chuyển-giao là "
 "%<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "không thể phân tích cú pháp %s"
@@ -2701,7 +2703,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "phải là một trong số nothing, matching, simple, upstream hay current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "mức nén gói %d không hợp lệ"
@@ -2721,110 +2723,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "không thể phân giải điểm xét duyệt “%s”"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "gặp lỗi khi phân tích cú pháp %s"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "không thể phân tích cấu hình dòng lệnh"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "đã có lỗi chưa biết xảy ra trong khi đọc các tập tin cấu hình"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s không hợp lệ: “%s”"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "giá trị splitIndex.maxPercentChange “%d” phải nằm giữa 0 và 100"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "không thể phân tích “%s” từ cấu hình dòng lệnh"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "sai biến cấu hình “%s” trong tập tin “%s” tại dòng %d"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "tên của phần không hợp lệ “%s”"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s có đa giá trị"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "gặp lỗi khi ghi tập tin cấu hình “%s”"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "không thể khóa tập tin cấu hình %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "đang mở “%s”"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "mẫu không hợp lệ: %s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "tập tin cấu hình “%s” không hợp lệ"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat trên %s gặp lỗi"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "không thể mmap “%s”"
+msgid "unable to mmap '%s'%s"
+msgstr "không thể mmap “%s”%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "chmod trên %s gặp lỗi"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "không thể ghi tập tin cấu hình “%s”"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "không thể đặt “%s” thành “%s”"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "không thể thôi đặt “%s”"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "tên của phần không hợp lệ: %s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "thiếu giá trị cho cho “%s”"
@@ -3001,7 +3003,7 @@
 msgid "unable to fork"
 msgstr "không thể rẽ nhánh tiến trình con"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Đang kiểm tra kết nối"
 
@@ -3121,7 +3123,7 @@
 msgid "path name too long for external filter"
 msgstr "tên đường dẫn quá dài cho bộ lọc bên ngoài"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
@@ -3130,16 +3132,16 @@
 "bộ lọc bên ngoài “%s” không sẵn sàng nữa mặc dù không phải tất cả các đường "
 "dẫn đã được lọc"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false là không phải bảng-mã-cây-làm-việc hợp lệ"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s: gặp lỗi khi xóa bộ lọc “%s”"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s: smudge bộ lọc %s gặp lỗi"
@@ -3256,36 +3258,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "Đã đánh dấu %d island, xong.\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "không hiểu giá trị cho --diff-merges: %s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base không hoạt động với phạm vi"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base chỉ hoạt động với các lần chuyển giao"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "không thể lấy HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "không tìm thấy cơ sở để hòa trộn"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "có nhiều cơ sở để hòa trộn"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<các tùy chọn>] </đường/dẫn> </đường/dẫn>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3309,7 +3311,7 @@
 "'dimmed-zebra', 'plain'"
 msgstr ""
 "cài đặt màu đã di chuyển phải là một trong “no”, “default”, “blocks”, "
-"“zebra”, “dimmed_zebra”, “plain”"
+"“zebra”, “dimmed-zebra”, “plain”"
 
 #: diff.c:325
 #, c-format
@@ -3343,35 +3345,49 @@
 "Tìm thấy các lỗi trong biến cấu hình “diff.dirstat”:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "phần mềm diff ở bên ngoài đã chết, dừng tại %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check và -s loại từ lẫn nhau"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "Các tùy chọn -G, -S, và --find-object loại từ lẫn nhau"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr ""
+"-G và --pickaxe-regex là loại trừ lẫn nhau, dùng --pickaxe-regex với -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"tùy chọn --pickaxe-all và --find-object loại từ lẫn nhau, hãy dùng --pickaxe-"
+"all với -G và -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow cần chính xác một đặc tả đường dẫn"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "giá trị --stat không hợp lệ: “%s”"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "tùy chọn “%s” cần một giá trị bằng số"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3380,42 +3396,42 @@
 "Gặp lỗi khi phân tích đối số tùy chọn --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "không hiểu lớp thay đổi “%c” trong --diff-filter=%s"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "không hiểu giá trị sau ws-error-highlight=%.*s"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "không thể phân giải “%s”"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s cần dạng <n>/<m>"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s cần một ký tự, nhưng lại nhận được “%s”"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "đối số --color-moved sai: %s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "chế độ “%s” không hợp lệ trong --color-moved-ws"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3423,155 +3439,155 @@
 "tùy chọn  diff-algorithm chấp nhận \"myers\", \"minimal\", \"patience\" và "
 "\"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "tham số cho %s không hợp lệ"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "đưa cho -I biểu thức chính quy không hợp lệ: “%s”"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "gặp lỗi khi phân tích đối số tùy chọn --submodule: “%s”"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "đối số --word-diff sai: %s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "Các tùy chọn định dạng khi xuất các khác biệt"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "tạo miếng vá"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "chặn mọi kết xuất từ diff"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "tạo khác biệt với <n> dòng ngữ cảnh"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "tạo khác biệt ở định dạng thô"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "đồng nghĩa với “-p --raw”"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "đồng nghĩa với “-p --stat”"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "--stat thuận tiện cho máy đọc"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "chỉ xuất những dòng cuối của --stat"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<tham_số_1,tham_số_2>…"
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "đầu ra phân phối của số lượng thay đổi tương đối cho mỗi thư mục con"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "đồng nghĩa với --dirstat=cumulative"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "đồng nghĩa với --dirstat=files,param1,param2…"
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "cảnh báo nếu các thay đổi đưa ra các bộ tạo xung đột hay lỗi khoảng trắng"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "tổng hợp dạng xúc tích như là tạo, đổi tên và các thay đổi chế độ"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "chỉ hiển thị tên của các tập tin đổi"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "chỉ hiển thị tên tập tin và tình trạng của các tập tin bị thay đổi"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<rộng>[,<name-width>[,<số-lượng>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "tạo diffstat"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<rộng>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "tạo diffstat với độ rộng đã cho"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "tạo diffstat với tên độ rộng đã cho"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "tạo diffstat với độ rộng đồ thị đã cho"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<số_lượng>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "tạo diffstat với các dòng bị giới hạn"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "tạo tổng hợp xúc tích trong diffstat"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "xuất ra một khác biệt dạng nhị phân cái mà có thể được áp dụng"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 "hiển thị đầy đủ các tên đối tượng pre- và post-image trên các dòng \"mục lục"
 "\""
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "hiển thị thay đổi được tô màu"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<kiểu>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3579,7 +3595,7 @@
 "tô sáng các lỗi về khoảng trắng trong các dòng “context”, “old” và “new” "
 "trong khác biệt"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3587,89 +3603,89 @@
 "không munge tên đường dẫn và sử dụng NUL làm bộ phân tách trường đầu ra "
 "trong --raw hay --numstat"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<tiền_tố>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "hiển thị tiền tố nguồn đã cho thay cho \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "hiển thị tiền tố đích đã cho thay cho \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "treo vào trước một tiền tố bổ sung cho mỗi dòng kết xuất"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "đừng hiển thị bất kỳ tiền tố nguồn hay đích"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "hiển thị ngữ cảnh giữa các khúc khác biệt khi đạt đến số lượng dòng đã chỉ "
 "định"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<ký_tự>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "chỉ định một ký tự để biểu thị một dòng được thêm mới thay cho “+”"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "chỉ định một ký tự để biểu thị một dòng đã cũ thay cho “-”"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "chỉ định một ký tự để biểu thị một ngữ cảnh thay cho “”"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "Tùy chọn khác biệt đổi tên"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "ngắt các thay đổi ghi lại hoàn thiện thành cặp của xóa và tạo"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "dò tìm các tên thay đổi"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "bỏ qua preimage (tiền ảnh??) cho các việc xóa"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "dò bản sao"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "dùng các tập tin không bị chỉnh sửa như là nguồn để tìm các bản sao"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "tắt dò tìm đổi tên"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "dùng các blob trống rống như là nguồn đổi tên"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "tiếp tục liệt kê lịch sử của một tập tin ngoài đổi tên"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3677,160 +3693,160 @@
 "ngăn cản dò tìm đổi tên/bản sao nếu số lượng của đích đổi tên/bản sao vượt "
 "quá giới hạn đưa ra"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "Tùy chọn thuật toán khác biệt"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "sản sinh khác biệt ít nhất có thể"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "lờ đi sự thay đổi do khoảng trắng gây ra khi so sánh các dòng"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "lờ đi sự thay đổi do số lượng khoảng trắng gây ra"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "lờ đi sự thay đổi do khoảng trắng gây ra khi ở cuối dòng EOL"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "bỏ qua ký tự về đầu dòng tại cuối dòng"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "bỏ qua các thay đổi cho toàn bộ các dòng là trống"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "bỏ qua các thay đổi có tất cả các dòng khớp <regex>"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "heuristic để dịch hạn biên của khối khác biệt cho dễ đọc"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"patience diff\""
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"histogram diff\""
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<thuật toán>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "chọn một thuật toán khác biệt"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<văn bản>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "tạo khác biệt sử dung thuật toán \"anchored diff\""
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<chế độ>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "hiển thị khác biệt từ, sử dụng <chế độ> để bỏ giới hạn các từ bị thay đổi"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "dùng <regex> để quyết định từ là cái gì"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "tương đương với --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "các dòng di chuyển của mã mà được tô màu khác nhau"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "cách bỏ qua khoảng trắng trong --color-moved"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "Các tùy chọn khác biệt khác"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "khi chạy từ thư mục con, thực thi các thay đổi bên ngoài và hiển thị các "
 "đường dẫn liên quan"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "coi mọi tập tin là dạng văn bản thường"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "tráo đổi hai đầu vào, đảo ngược khác biệt"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "thoát với mã 1 nếu không có khác biệt gì, 0 nếu ngược lại"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "tắt mọi kết xuất của chương trình"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "cho phép mộ bộ hỗ trợ xuất khác biệt ở bên ngoài được phép thực thi"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "chạy các bộ lọc văn bản thông thường bên ngoài khi so sánh các tập tin nhị "
 "phân"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<khi>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "bỏ qua các thay đổi trong mô-đun-con trong khi tạo khác biệt"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<định dạng>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "chi định khác biệt bao nhiêu trong các mô đun con được hiển thị"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "ẩn các mục “git add -N” từ bảng mục lục"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "coi các mục “git add -N” như là có thật trong bảng mục lục"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<chuỗi>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3838,7 +3854,7 @@
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của "
 "chuỗi được chỉ ra"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3846,35 +3862,35 @@
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của biểu "
 "thức chính quy được chỉ ra"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "hiển thị tất cả các thay đổi trong một bộ các thay đổi với -S hay -G"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "coi <chuỗi> trong -S như là biểu thức chính qui POSIX có mở rộng"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "điều khiển thứ tự xuát hiện các tập tin trong kết xuất"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<đường-dẫn>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "hiển thị các thay đổi trong đường dẫn đã cho đầu tiên"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "bỏ qua đầu ra đến đường dẫn đã cho"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<mã-số-đối-tượng>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3882,33 +3898,32 @@
 "tìm các khác biệt cái mà thay đổi số lượng xảy ra của các phát sinh của đối "
 "tượng được chỉ ra"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)…[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "chọn các tập tin theo kiểu khác biệt"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<tập_tin>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "Xuất ra một tập tin cụ thể"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
-msgstr ""
-"nhận thấy đổi tên không chính xác đã bị bỏ qua bởi có quá nhiều tập tin."
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr "nhận thấy đổi tên toàn diện đã bị bỏ qua bởi có quá nhiều tập tin."
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "chỉ tìm thấy các bản sao từ đường dẫn đã sửa đổi bởi vì có quá nhiều tập tin."
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3921,7 +3936,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "gặp lỗi khi đọc tập-tin-thứ-tự “%s”"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "Đang thực hiện dò tìm đổi tên không chính xác"
 
@@ -3930,59 +3945,59 @@
 msgid "No such path '%s' in the diff"
 msgstr "Không có đường dẫn %s trong diff"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "đặc tả đường dẫn “%s” không khớp với bất kỳ tập tin nào mà git biết"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "mẫu không được thừa nhận: “%s”"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "mẫu âm không được thừa nhận: “%s”"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr "tập tin sparse-checkout của bạn có lẽ gặp lỗi: mẫu “%s” đã bị lặp lại"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "vô hiệu khớp mẫu nón"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "không thể dùng %s như là một tập tin loại trừ"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "không thể mở thư mục “%s”"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "gặp lỗi khi lấy tên và thông tin của nhân"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "bộ nhớ tạm không theo vết bị tắt trên hệ thống hay vị trí này"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "tập tin ghi bảng mục lục bị hỏng trong kho %s"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "không thể tạo thư mục cho %s"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "không thể di dời thư mục git từ “%s” sang “%s”"
@@ -3992,11 +4007,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "gợi ý: Chờ trình biên soạn của bạn đóng tập tin…%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "Nội dung lọc"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "không thể lấy thống kê tập tin “%s”"
@@ -4006,7 +4021,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "đường dẫn không gian tên git \"%s\" sai"
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "không thể đặt GIT_DIR thành “%s”"
@@ -4171,7 +4186,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "kho nguồn là nông, nên bỏ từ chối nhân bản."
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch gặp lỗi."
 
@@ -4193,7 +4208,7 @@
 msgid "Server supports filter"
 msgstr "Máy chủ hỗ trợ bộ lọc"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "không thể ghi các yêu cầu lên máy phục vụ"
 
@@ -4249,24 +4264,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: cần nhận được trả lời là kết thúc gói"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "không khớp phần đầu máy chủ"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "máy chủ đã không gửi tất cả các đối tượng cần thiết"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "gặp 'ready' đột xuất từ máy chủ"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "không có máy chủ tham chiếu nào như %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
@@ -4287,7 +4302,7 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr "bỏ qua màu không hợp lệ “%.*s” trong log.graphColors"
 
 #: grep.c:531
@@ -4298,18 +4313,18 @@
 "mẫu đã cho có chứa NULL byte (qua -f <file>). Điều này chỉ được hỗ trợ với -"
 "P dưới PCRE v2"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "“%s”: không thể đọc %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "gặp lỗi khi lấy thống kê về “%s”"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "“%s”: đọc ngắn"
@@ -4541,7 +4556,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "“%s” dành cho “object:type=<type>” không phải là kiểu đối tượng hợp lệ"
 
 #: list-objects-filter-options.c:124
@@ -4586,7 +4601,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "mục “%s” trong cây %s có nút blob, nhưng không phải là một blob"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "không thể tải cây gốc cho lần chuyển giao “%s”"
@@ -4633,34 +4648,34 @@
 msgid "bad action '%s' for '%s'"
 msgstr "thao tác sai “%s” cho “%s”"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (không lấy ra được)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (lần chuyển giao không hiện diện)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
 "Gặp lỗi khi hòa trộn mô-đun-con “%s” (lần chuyển giao không theo sau nền-hòa-"
 "trộn)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "Chú ý: Chuyển-tiếp-nhanh mô-đun-con “%s” sang “%s”"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s”"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4669,7 +4684,7 @@
 "Gặp lỗi khi hòa trộn mô-đun-con “%s”, nhưng có cách giải quyết:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4686,7 +4701,7 @@
 "\n"
 "cái mà sẽ chấp nhận gợi ý này.\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4695,21 +4710,21 @@
 "Gặp lỗi khi hòa trộn mô-đun-con “%s”, nhưng có nhiều cách giải quyết:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "Gặp lỗi khi thực hiện trộn nội bộ"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Không thể thêm %s vào cơ sở dữ liệu"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Tự-động-hòa-trộn %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4718,7 +4733,7 @@
 "XUNG ĐỘT: (ngầm đổi tên thư mục): Tập tin/thư mục đã sẵn có tại %s theo cách "
 "của các đổi tên thư mục ngầm đặt (các) đường dẫn sau ở đây: %s."
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4727,7 +4742,7 @@
 "XUNG ĐỘT: (ngầm đổi tên thư mục): Không thể ánh xạ một đường dẫn thành %s; "
 "các đổi tên thư mục ngầm cố đặt các đường dẫn ở đây: %s"
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4738,7 +4753,7 @@
 "thành; nó đã bị đổi tên thành nhiều thư mục khác, với không đích đến nhận "
 "một phần nhiều của các tập tin."
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4747,7 +4762,7 @@
 "CẢNH BÁO: tránh áp dụng %s -> %s đổi thên thành %s, bởi vì bản thân %s cũng "
 "bị đổi tên."
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4756,7 +4771,7 @@
 "Đường dẫn đã được cập nhật: %s được thêm vào trong %s bên trong một thư mục "
 "đã được đổi tên trong %s; di chuyển nó đến %s."
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4765,7 +4780,7 @@
 "Đường dẫn đã được cập nhật: %s được đổi tên thành %s trong %s, bên trong một "
 "thư mục đã được đổi tên trong %s; di chuyển nó đến %s."
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4774,7 +4789,7 @@
 "XUNG ĐỘT (vị trí tệp): %s được thêm vào trong %s trong một thư mục đã được "
 "đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4783,13 +4798,13 @@
 "XUNG ĐỘT (vị trí tệp): %s được đổi tên thành %s trong %s, bên trong một thư "
 "mục đã được đổi tên thành %s, đoán là nó nên được di chuyển đến %s."
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên %s->%s trong %s và thành %s trong %s."
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4800,23 +4815,23 @@
 "VÀ va chạm với một đường dẫn khác; điều này có thể dẫn đến tạo ra các xung "
 "đột lồng nhau."
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "XUNG ĐỘT (đổi-tên/xóa): Đổi tên %s->%s trong %s, nhưng lại bị xóa trong %s."
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "không thể đọc đối tượng %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "đối tượng %s không phải là một blob"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -4825,7 +4840,7 @@
 "XUNG ĐỘT (tập tin/thư mục): thư mục theo cách của %s từ %s; thay vào đó, di "
 "chuyển nó đến %s."
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -4834,7 +4849,7 @@
 "XUNG ĐỘT (các kiểu riêng biệt): %s có các kiểu khác nhau ở mỗi bên; đã đổi "
 "tên cả hai trong số chúng để mỗi cái có thể được ghi lại ở đâu đó."
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -4843,24 +4858,24 @@
 "XUNG ĐỘT (các kiểu riêng biệt): %s có các loại khác nhau ở mỗi bên; đã đổi "
 "tên một trong số chúng để mỗi cái có thể được ghi lại ở đâu đó."
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "nội dung"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "thêm/thêm"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "mô-đun-con"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "XUNG ĐỘT (%s): Xung đột hòa trộn trong %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4869,7 +4884,7 @@
 "XUNG ĐỘT (sửa/xóa): %s bị xóa trong %s và sửa trong %s. Phiên bản %s của %s "
 "còn lại trong cây (tree)."
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -4881,12 +4896,12 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "thu thập thông tin hòa trộn gặp lỗi cho cây %s, %s, %s"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4896,109 +4911,109 @@
 "hòa trộn:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "Đã cập nhật rồi."
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(commit sai)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "addinfo_cache gặp lỗi đối với đường dẫn “%s”; việc hòa trộn bị bãi bỏ."
+msgstr "add_cacheinfo gặp lỗi đối với đường dẫn “%s”; việc hòa trộn bị bãi bỏ."
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
-"addinfo_cache gặp lỗi khi làm mới đối với đường dẫn “%s”; việc hòa trộn bị "
+"add_cacheinfo gặp lỗi khi làm mới đối với đường dẫn “%s”; việc hòa trộn bị "
 "bãi bỏ."
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "gặp lỗi khi tạo đường dẫn “%s”%s"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Gỡ bỏ %s để tạo chỗ (room) cho thư mục con\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ": có lẽ là một xung đột D/F?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "từ chối đóng tập tin không được theo dõi tại “%s”"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "không thể đọc đối tượng %s “%s”"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "mong đợi đối tượng blob cho %s “%s”"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "gặp lỗi khi mở “%s”: %s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "gặp lỗi khi tạo liên kết mềm (symlink) “%s”: %s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "không hiểu phải làm gì với %06o %s “%s”"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s” đến lần chuyển giao sau đây:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s”"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
 "Gặp lỗi khi hòa trộn mô-đun-con “%s” (không tìm thấy các lần chuyển giao "
 "theo sau hòa trộn)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (không chuyển tiếp nhanh được)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "Tìm thấy một giải pháp hòa trộn có thể cho mô-đun-con:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (thấy nhiều hòa trộn đa trùng)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr ""
 "Lỗi: từ chối đóng tập tin không được theo dõi tại “%s”; thay vào đó ghi vào "
 "%s."
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5007,7 +5022,7 @@
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s trong %s. Phiên bản %s của %s "
 "còn lại trong cây (tree)."
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5016,7 +5031,7 @@
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s đến %s trong %s. Phiên bản %s "
 "của %s còn lại trong cây (tree)."
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5025,7 +5040,7 @@
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s trong %s. Phiên bản %s của %s "
 "còn lại trong cây (tree) tại %s."
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5034,45 +5049,45 @@
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s đến %s trong %s. Phiên bản %s "
 "của %s còn lại trong cây (tree) tại %s."
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "đổi tên"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "đã đổi tên"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Từ chối đóng tập tin không được theo dõi tại “%s”"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr ""
 "Từ chối đóng tập tin không được theo dõi tại “%s”, ngay cả khi nó ở trên "
 "đường."
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "XUNG ĐỘT (đổi-tên/thêm): Đổi tên %s->%s trong %s. %s được thêm trong %s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s là một thư mục trong %s thay vào đó thêm vào như là %s"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr ""
 "Từ chối đóng tập tin không được theo dõi tại “%s”; thay vào đó đang thêm "
 "thành %s"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5081,17 +5096,17 @@
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên \"%s\"->\"%s\" trong nhánh \"%s\" đổi "
 "tên \"%s\"->\"%s\" trong \"%s\"%s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (cần giải quyết)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên %s->%s trong %s. Đổi tên %s->%s trong %s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5102,7 +5117,7 @@
 "vì thư mục %s đã bị đổi tên thành nhiều thư mục khác, với không đích đến "
 "nhận một phần nhiều của các tập tin."
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5111,79 +5126,79 @@
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên thư mục %s->%s trong %s. Đổi tên thư mục "
 "%s->%s trong %s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "sửa đổi"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "đã sửa"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Đã bỏ qua %s (đã có sẵn lần hòa trộn này)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Thay vào đó thêm vào %s"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "Đang xóa %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "tập-tin/thư-mục"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "thư-mục/tập-tin"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "XUNG ĐỘT (%s): Ở đây không có thư mục nào có tên %s trong %s. Thêm %s như là "
 "%s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "Thêm \"%s\""
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "XUNG ĐỘT (thêm/thêm): Xung đột hòa trộn trong %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "hòa trộn các cây %s và %s gặp lỗi"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "Đang trộn:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "tìm thấy %u tổ tiên chung:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "hòa trộn không trả về lần chuyển giao nào"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Không thể phân tích đối tượng “%s”"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "Không thể ghi bảng mục lục."
@@ -5192,8 +5207,8 @@
 msgid "failed to read the cache"
 msgstr "gặp lỗi khi đọc bộ nhớ đệm"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "không thể ghi tập tin lưu bảng mục lục mới"
@@ -5267,107 +5282,115 @@
 msgid "failed to locate object %d in packfile"
 msgstr "gặp lỗi khi phân bổ đối tượng “%d” trong tập tin gói"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "không thể lưu trữ tập tin ghi mục lục đảo ngược"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "bỏ qua multi-pack-index sẵn có; tổng kiểm không khớp"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "Đang thêm tập tin gói từ multi-pack-index"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "đã không thấy tập tin gói %s để mà xóa"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "không hiểu \"preferred pack\": %s"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "\"preferred pack\" “%s” đã hết hạn"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "không có tập tin gói để đánh mục lục."
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "gặp lỗi khi gỡ bỏ %s"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "gặp lỗi khi xóa multi-pack-index tại %s"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "đã có tập tin multi-pack-index, nhưng gặp lỗi khi phân tích cú pháp"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "tổng kiểm không đúng"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "Đang khóa cho các gói bị tham chiếu"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "fanout cũ sai thứ tự: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "midx chẳng chứa oid nào"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "Thẩm tra thứ tự OID trong multi-pack-index"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "lookup cũ sai thứ tự: oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "Đang sắp xếp các đối tượng theo tập tin gói"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "Đang thẩm tra các khoảng bù đối tượng"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "gặp lỗi khi tải mục gói cho oid[%d] = %s"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "gặp lỗi khi tải pack-index cho tập tin gói %s"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr ""
 "khoảng bù đối tượng không đúng cho oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "Đang đếm các đối tượng được tham chiếu"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "Đang tìm và xóa các gói không được tham chiếu"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "không thể lấy thông tin thống kê về các đối tượng gói"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "không thể hoàn thiện các đối tượng gói"
 
@@ -5434,266 +5457,267 @@
 msgstr ""
 "thư mục đối tượng %s không tồn tại; kiểm tra .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "không thể thường hóa đường dẫn đối tượng thay thế: “%s”"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s: đang bỏ qua kho đối tượng thay thế, lồng nhau quá sâu"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "không thể chuẩn hóa thư mục đối tượng: “%s”"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "không thể fdopen tập tin khóa thay thế"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "không thể đọc tập tin thay thế"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "không thể di chuyển tập tin thay thế vào chỗ"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "đường dẫn “%s” không tồn tại"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "kho tham chiếu “%s” như là lấy ra liên kết vẫn chưa được hỗ trợ."
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "kho tham chiếu “%s” không phải là một kho nội bộ."
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "kho tham chiếu “%s” là nông"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "kho tham chiếu “%s” bị cấy ghép"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "dòng không hợp lệ trong khi phân tích các tham chiếu thay thế: %s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "đang cố để mmap %<PRIuMAX> vượt quá giới hạn %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap gặp lỗi"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap gặp lỗi%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "tập tin đối tượng %s trống rỗng"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "đối tượng mất hỏng “%s”"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "gặp rác tại cuối của đối tượng bị mất “%s”"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "kiểu đối tượng không hợp lệ"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "không thể giải nén phần đầu gói %s với --allow-unknown-type"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "không thể giải gói phần đầu %s"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "không thể phân tích phần đầu gói %s với --allow-unknown-type"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "không thể phân tích phần đầu của “%s”"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "gặp lỗi khi đọc đối tượng “%s”"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "c%s thay thế không được tìm thấy cho %s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "đối tượng mất %s (được lưu trong %s) bị hỏng"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "đối tượng đã đóng gói %s (được lưu trong %s) bị hỏng"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "không thể ghi tập tin %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "không thể đặt quyền thành “%s”"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "lỗi ghi tập tin"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "gặp lỗi trong khi đóng tập tin đối tượng"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr ""
 "không đủ thẩm quyền để thêm một đối tượng vào cơ sở dữ liệu kho chứa %s"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "không thể tạo tập tin tạm thời"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "không thể ghi tập tin đối tượng đã mất"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "không thể xả nén đối tượng mới %s (%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "deflateEnd trên đối tượng %s gặp lỗi (%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "chưa rõ ràng baowir dữ liệu nguồn đối tượng không ổn định cho %s"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "gặp lỗi utime() trên “%s”"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "không thể đọc đối tượng cho %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "lần chuyển giao sai hỏng"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "thẻ sai hỏng"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "gặp lỗi đọc khi đánh mục lục %s"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "không đọc ngắn khi đánh mục lục %s"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s: gặp lỗi khi thêm vào cơ sở dữ liệu"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s: kiểu tập tin không được hỗ trợ"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s không phải là một đối tượng hợp lệ"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s không phải là một đối tượng “%s” hợp lệ"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "không thể mở %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "mã băm không khớp cho %s (cần %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "không thể mmap %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "không thể giải gói phần đầu của “%s”"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "không thể phân tích phần đầu của “%s”"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "không thể giải gói nội dung của “%s”"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "mã đối tượng dạng rút gọn %s chưa rõ ràng"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "Các ứng cử là:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5717,22 +5741,22 @@
 "này\n"
 "bằng cách chạy lệnh \"git config advice.objectNameWarning false\""
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "nhật ký cho “%.*s” chỉ trở lại đến %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "nhật ký cho “%.*s” chỉ có %d mục"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "đường dẫn “%s” có ở trên đĩa, nhưng không trong “%.*s”"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5741,12 +5765,12 @@
 "đường dẫn “%s” tồn tại, nhưng không phải “%s”\n"
 "gợi ý: Có phải ý bạn là “%.*s:%s” aka “%.*s:./%s”?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "đường dẫn “%s” không tồn tại trong “%.*s”"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5755,7 +5779,7 @@
 "đường dẫn “%s” nằm trong chỉ mục, nhưng không phải ở giai đoạn %d\n"
 "gợi ý: Có phải ý bạn là “:%d:%s”?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5764,21 +5788,21 @@
 "đường dẫn “%s” nằm trong chỉ mục, nhưng không phải “%s”\n"
 "gợi ý: Có phải ý bạn là “:% d:%s “ aka “:%d:./%s”?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "đường dẫn “%s” tồn tại trên đĩa, nhưng không có trong chỉ mục"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "đường dẫn “%s” không tồn tại (không trên đĩa cũng không trong mục lục)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "cú pháp đường dẫn tương đối không thể thể dùng ngoài cây làm việc"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "“%.*s” không phải là tên đối tượng hợp lệ."
@@ -5793,27 +5817,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "đối tượng %s là một %s, không phải là một %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "đối tượng %s có mã kiểu %d chưa biết"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "không thể phân tích đối tượng: “%s”"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "mã băm không khớp %s"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "không thể lấy kích cỡ của %s"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "không thể dung lượng đĩa đã dùng của %s"
@@ -5866,12 +5890,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "vị trí tương đối trước điểm kết thúc của tập tin gói (.idx hỏng à?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "tập tin gói %s không thể được ánh xạ %s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "vị trí tương đối nằm trước chỉ mục gói cho %s (mục lục bị hỏng à?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -6077,8 +6106,8 @@
 msgstr "không thể ghi gói delim"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "không thể ghi gói phân tách không trạng thái"
+msgid "unable to write response end packet"
+msgstr "không thể ghi gói cuối trả về"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6137,20 +6166,20 @@
 msgid "unable to parse --pretty format"
 msgstr "không thể phân tích định dạng --pretty"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote: không thể rẽ nhánh tuyến trình con fetch"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "promisor-remote: không thể ghi tiến trình con fetch"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr ""
 "promisor-remote: không thể đóng đầu vào tiêu chuẩn tiến trình con fetch"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "tên máy chủ hứa hẹn không thể bắt đầu bằng “/”: %s"
@@ -6171,7 +6200,7 @@
 msgid "could not read `log` output"
 msgstr "không thể đọc kết xuất “log”"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "không thể phân tích lần chuyển giao “%s”"
@@ -6190,65 +6219,65 @@
 msgid "could not parse git header '%.*s'"
 msgstr "không thể phân tích cú pháp phần đầu git “%.*s”"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "gặp lỗi khi tạo khác biệt"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only và --right-only loại từ lẫn nhau"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "không thể phân tích nhật ký cho “%s”"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr ""
 "sẽ không thêm các bí danh “%s” (“%s” đã có từ trước trong bảng mục lục)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "không thể tạo một blob rỗng trong cơ sở dữ liệu đối tượng"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr ""
 "%s: chỉ có thể thêm tập tin thông thường, liên kết mềm hoặc git-directories"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "“%s” không có một lần chuyển giao nào được lấy ra"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "không thể đánh mục lục tập tin “%s”"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "không thể thêm %s vào bảng mục lục"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "không thể lấy thống kê “%s”"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "%s có vẻ không phải là tập tin và cũng chẳng phải là một thư mục"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "Làm tươi mới bảng mục lục"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6257,7 +6286,7 @@
 "index.version được đặt, nhưng giá trị của nó lại không hợp lệ.\n"
 "Dùng phiên bản %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6266,143 +6295,143 @@
 "GIT_INDEX_VERSION được đặt, nhưng giá trị của nó lại không hợp lệ.\n"
 "Dùng phiên bản %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "chữ ký sai 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "phiên bản mục lục sai %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "chữ ký dạng sha1 cho tập tin mục lục không đúng"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "mục lục dùng phần mở rộng %.4s, cái mà chúng tôi không hiểu được"
 
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "đang lờ đi phần mở rộng %.4s"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "không hiểu định dạng mục lục 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "trường tên sai sạng trong mục lục, gần đường dẫn “%s”"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "các mục tin stage không đúng thứ tự trong mục lục"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "nhiều mục stage cho tập tin hòa trộn “%s”"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "các mục tin stage không đúng thứ tự cho “%s”"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "tập tin ghi bảng mục lục bị hỏng"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "không thể tạo tuyến load_cache_entries: %s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "không thể gia nhập tuyến load_cache_entries: %s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s: mở tập tin mục lục gặp lỗi"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s: không thể lấy thống kê bảng mục lục đã mở"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s: tập tin mục lục nhỏ hơn mong đợi"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s: không thể ánh xạ tập tin mục lục"
+msgid "%s: unable to map index file%s"
+msgstr "%s: không thể ánh xạ tập tin mục lục%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "không thể tạo tuyến load_index_extensions: %s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "không thể gia nhập tuyến load_index_extensions: %s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "không thể làm tươi mới mục lục đã chia sẻ “%s”"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "mục lục bị hỏng, cần %s trong %s, nhưng lại nhận được %s"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "không thể đóng “%s”"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "gặp lỗi khi chuyển đổi sang \"sparse-index\""
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "không thể lấy thông tin thống kê về “%s”"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "không thể mở thư mục git: %s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "không thể bỏ liên kết (unlink): “%s”"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "không thể sửa các bít phân quyền trên “%s”"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s: không thể xóa bỏ stage #0"
@@ -6525,8 +6554,8 @@
 "Tuy nhiên, nếu bạn xóa bỏ mọi thứ, việc cải tổ sẽ bị bãi bỏ.\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "không thể ghi “%s”"
@@ -6571,7 +6600,7 @@
 msgid "could not read '%s'."
 msgstr "không thể đọc “%s”."
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "đã ra đi"
 
@@ -6590,132 +6619,132 @@
 msgid "ahead %d, behind %d"
 msgstr "trước %d, sau %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "cần định dạng: %%(color:<color>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "không nhận ra màu: %%(màu:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Giá trị nguyên cần tên tham chiếu:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Giá trị nguyên cần tên tham chiếu:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "đối số không được thừa nhận %%(%s): %s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) không nhận các đối số"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "tham số không được thừa nhận %%(objectname): %s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) không nhận các đối số"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) không nhận các đối số"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "tham số không được thừa nhận %%(subject): %s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "cần %%(trailers:key=<giá trị>)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "không hiểu tham số %%(trailers): %s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "cần nội dung mang giá trị dương:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "đối số không được thừa nhận %%(contents): %s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "cần giá trị dương “%s” trong %%(%s)"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "đối số “%s” không được thừa nhận trong %%(%s)"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "không nhận ra tùy chọn thư điện tử: “%s”"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "cần định dạng: %%(align:<width>,<position>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "vị trí không được thừa nhận:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "chiều rộng không được thừa nhận:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "đối số không được thừa nhận %%(align): %s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "cần giá trị độ rộng dương với nguyên tử %%(align)"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "đối số không được thừa nhận %%(if): %s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "tên trường dị hình: %.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "không hiểu tên trường: %.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
@@ -6723,116 +6752,116 @@
 "không phải là một kho git, nhưng trường “%.*s” yêu cầu truy cập vào dữ liệu "
 "đối tượng"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "định dạng: nguyên tử %%(if) được dùng mà không có nguyên tử %%(then)"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "định dạng: nguyên tử %%(then) được dùng mà không có nguyên tử %%(if)"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "định dạng: nguyên tử %%(then) được dùng nhiều hơn một lần"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "định dạng: nguyên tử %%(then) được dùng sau %%(else)"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "định dạng: nguyên tử %%(else) được dùng mà không có nguyên tử %%(if)"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "định dạng: nguyên tử %%(else) được dùng mà không có nguyên tử %%(then)"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "định dạng: nguyên tử %%(else) được dùng nhiều hơn một lần"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "định dạng: nguyên tử %%(end) được dùng mà không có nguyên tử tương ứng"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "chuỗi định dạng dị hình %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(không nhánh, đang cải tổ %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(không nhánh, đang cải tổ HEAD %s đã tách rời)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(không nhánh, di chuyển nửa bước được bắt đầu tại %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD được tách rời tại %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD được tách rời từ %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(không nhánh)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "thiếu đối tượng %s cho %s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer gặp lỗi trên %s cho %s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "đối tượng dị hình tại “%s”"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "đang lờ đi tham chiếu với tên hỏng %s"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "đang lờ đi tham chiếu hỏng %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "định dạng: thiếu nguyên tử %%(end)"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "tên đối tượng dị hình %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "tùy chọn “%s” phải chỉ đến một lần chuyển giao"
@@ -7290,8 +7319,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "Preimage đã được ghi lại cho “%s”"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "không thể tạo thư mục “%s”"
@@ -7329,38 +7358,38 @@
 msgid "could not determine HEAD revision"
 msgstr "không thể dò tìm điểm xét duyệt HEAD"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "gặp lỗi khi tìm cây của %s"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<packfile> không còn được hỗ trợ nữa"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "nhánh hiện tại của bạn có vẻ như bị hỏng"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "nhánh hiện tại của bạn “%s” không có một lần chuyển giao nào cả"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L vẫn chưa hỗ trợ định dạng khác biệt nào ngoài -p và -s"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "gặp lỗi khi mở “/dev/null”"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "không thể tạo tuyến async: %s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7396,15 +7425,15 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "đẩy đàm phán thất bại; vẫn tiếp tục xử lý bằng lệnh đẩy"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "kết thúc nhận không hỗ trợ các tùy chọn của lệnh push"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
 msgstr "kết thúc nhận không hỗ trợ đẩy --signed"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -7412,11 +7441,11 @@
 "đừng gửi giấy chứng nhận đẩy trước khi kết thúc nhận không hỗ trợ đẩy --"
 "signed"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
 msgstr "kết thúc nhận không hỗ trợ đẩy --atomic"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "kết thúc nhận không hỗ trợ các tùy chọn của lệnh push"
 
@@ -7476,7 +7505,7 @@
 msgstr "không thể khóa “%s”"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "không thể ghi vào “%s”"
@@ -7487,7 +7516,7 @@
 msgstr "không thể ghi eol vào “%s”"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "gặp lỗi khi hoàn thành “%s”"
@@ -7537,8 +7566,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "không thể giải trích dẫn giá trị của “%s”"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "không thể mở “%s” để đọc"
@@ -7694,7 +7723,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s không phải là một lần chuyển giao!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "không thể phân tích commit (lần chuyển giao) HEAD"
 
@@ -7702,7 +7731,7 @@
 msgid "unable to parse commit author"
 msgstr "không thể phân tích tác giả của lần chuyển giao"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "lệnh git write-tree gặp lỗi khi ghi một cây"
 
@@ -7720,12 +7749,13 @@
 msgid "corrupt author: missing date information"
 msgstr "tác giả sai hỏng: thiếu thông tin này tháng"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "gặp lỗi khi ghi đối tượng chuyển giao"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "không thể cập nhật %s"
@@ -7777,7 +7807,7 @@
 msgid "need a HEAD to fixup"
 msgstr "cần một HEAD để sửa"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "không thể đọc HEAD"
 
@@ -7918,7 +7948,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "bảng tùy chọn dị hình: “%s”"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "lần chuyển giao trống rỗng đặt là hợp quy cách"
 
@@ -7949,7 +7979,7 @@
 msgid "could not lock HEAD"
 msgstr "không thể khóa HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "không cherry-pick hay hoàn nguyên trong tiến trình"
 
@@ -7961,7 +7991,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "không thể hủy bỏ từ một nhánh mà nó còn chưa được tạo ra"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "không mở được “%s”"
@@ -8011,7 +8041,7 @@
 "bạn đã sẵn sàng chuyển giao chưa?\n"
 "thử \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "không thể đọc HEAD"
 
@@ -8095,90 +8125,90 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "tên nhãn dị hình: “%.*s”"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "ghi lần chuyển giao gốc giả"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "đang ghi squash-onto"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "không thể phân giải “%s”"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "không thể hòa trộn mà không có một điểm xét duyệt hiện tại"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "không thể phân tích “%.*s”"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "chẳng có gì để hòa trộn: “%.*s”"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "hòa trộn octopus không thể được thực thi trên đỉnh của một [new root]"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "không thể lấy chú thích của lần chuyển giao của “%s”"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "không thể ngay cả khi thử hòa trộn “%.*s”"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "merge: Không thể ghi tập tin lưu bảng mục lục mới"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "Không thể autostash"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "Gặp đáp ứng stash không cần: “%s”"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "Không thể tạo thư mục cho “%s”"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "Đã tạo autostash: %s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "không thể reset --hard"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Đã áp dụng autostash.\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "không thử lưu “%s”"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8190,29 +8220,29 @@
 "Bạn có thể chạy lệnh \"git stash pop\" hay \"git stash drop\" bất kỳ lúc "
 "nào.\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "Áp dụng autostash có hiệu quả trong các xung đột."
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "Autostash đã sẵn có; nên tạo một mục stash mới."
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "không thể tách rời HEAD"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "Dừng lại ở HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "Dừng lại ở %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8233,58 +8263,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "Đang cải tổ (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Dừng lại ở %s…  %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "không hiểu câu lệnh %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "không thể đọc orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "không thể đọc “onto”."
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "không thể cập nhật HEAD thành %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "Cài tổ và cập nhật %s một cách thành công.\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "không thể cải tổ: Bạn có các thay đổi chưa được đưa lên bệ phóng."
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "không thể tu bỏ một lần chuyển giao không tồn tại"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "tập tin không hợp lệ: “%s”"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "nội dung không hợp lệ: “%s”"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8294,50 +8324,50 @@
 "Bạn có các thay đổi chưa chuyển giao trong thư mục làm việc. Vui lòng\n"
 "chuyển giao chúng trước và sau đó chạy lệnh “git rebase --continue” lần nữa."
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "không thể ghi tập tin: “%s”"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "không thể xóa bỏ CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "không thể chuyển giao các thay đổi đã đưa lên bệ phóng."
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: không thể cherry-pick một %s"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: điểm xét duyệt sai"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "không thể hoàn nguyên một lần chuyển giao khởi tạo"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script: các tùy chọn được không xử lý"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script: lỗi chuẩn bị điểm hiệu chỉnh"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "không có gì để làm"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "không thể bỏ qua các lệnh cậy (pick) không cần thiết"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "văn lệnh đã sẵn được sắp đặt rồi."
 
@@ -8388,92 +8418,94 @@
 msgid "unable to set up work tree using invalid config"
 msgstr "không thể cài đặt thư mục làm việc sử dụng cấu hình không hợp lệ"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "thao tác này phải được thực hiện trong thư mục làm việc"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Cần phiên bản kho git <= %d, nhưng lại nhận được %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "tìm thấy phần mở rộng kho chưa biết:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "tìm thấy phần mở rộng kho chưa biết:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "phiên bản kho là 0, nhưng lại tìm thấy phần mở rộng chỉ v1:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "phiên bản kho là 0, nhưng lại tìm thấy phần mở rộng chỉ v1:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "tập tin .git là quá lớn: “%s”"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "gặp lỗi khi đọc %s"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "định dạng tập tin git không hợp lệ: %s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "không có đường dẫn trong tập tin git: %s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "không phải là kho git: %s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "“$%s” quá lớn"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "không phải là kho git: “%s”"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "không thể chdir (chuyển đổi thư mục) sang “%s”"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "không thể quay lại cwd"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "gặp lỗi khi lấy thống kê về “%*s%s%s”"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "Không thể đọc thư mục làm việc hiện hành"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "không thể chuyển sang “%s”"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "không phải là kho git (hoặc bất kỳ thư mục cha mẹ nào): %s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8483,7 +8515,7 @@
 "Dừng tại biên của hệ thống tập tin (GIT_DISCOVERY_ACROSS_FILESYSTEM chưa "
 "đặt)."
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8492,27 +8524,27 @@
 "gặp vấn đề với giá trị chế độ tập tin core.sharedRepository (0%.3o).\n"
 "người sở hữu tập tin phải luôn có quyền đọc và ghi."
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "gặp lỗi khi mở “/dev/null” hay dup"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "gặp lỗi khi rẽ nhánh tiến trình"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "setsid gặp lỗi"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "cố gắng sử dụng chỉ mục thưa thớt mà không có chế độ hình nón"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "không thể cập nhật cây bộ nhớ đệm, chỗ chứa bị đầy"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "mục tin mục lục là một thư mục, nhưng không \"sparse\" (%08x)"
@@ -8567,7 +8599,7 @@
 msgid_plural "%u bytes/s"
 msgstr[0] "%u byte/giây"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8585,7 +8617,7 @@
 
 #: submodule-config.c:304
 msgid "negative values not allowed for submodule.fetchjobs"
-msgstr "không cho phép giá trị âm ở submodule.fetchJobs"
+msgstr "không cho phép giá trị âm ở submodule.fetchjobs"
 
 #: submodule-config.c:402
 #, c-format
@@ -8639,7 +8671,7 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "đối số --ignore-submodules sai: %s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -8648,13 +8680,13 @@
 "Mô-đun-con trong lần chuyển giao %s tại đường dẫn: “%s” va chạm với mô-đun-"
 "con cùng tên. Nên bỏ qua nó."
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr ""
 "mục tin mô-đun-con “%s” (%s) là một %s, không phải là một lần chuyển giao"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -8663,36 +8695,36 @@
 "Không thể chạy lệnh “git rev-list <các lần chuyển giao> --not --remotes -n "
 "1” trong mô-đun-con “%s”"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "xử lý cho mô-đun-con “%s” gặp lỗi"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Gặp lỗi khi phân giải HEAD như là một tham chiếu hợp lệ."
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "Đẩy lên mô-đun-con “%s”\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "Không thể đẩy lên mô-đun-con “%s”\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "Đang lấy về mô-đun-con %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "Không thể truy cập mô-đun-con “%s”\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8701,61 +8733,61 @@
 "Có lỗi khi lấy về mô-đun-con:\n"
 " “%s”"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "không nhận ra “%s” là một kho git"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "Không thể chạy “git status --porcelain=2” trong mô-đun-con “%s”"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "“git status --porcelain=2” gặp lỗi trong mô-đun-con “%s”"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "không thể lấy thống kê “git status” trong mô-đun-con “%s”"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "không thể chạy “git status” trong mô-đun-con “%s”"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "Không thể đặt core.worktree trong mô-đun-con “%s”"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "không thể đệ quy vào trong mô-đun-con “%s”"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "không thể đặt lại mục lục của mô-đun-con"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "mô-đun-con “%s” có mục lục còn bẩn"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "Mô-đun-con “%s” không thể được cập nhật."
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "thư mục git mô đun con “%s” là bên trong git DIR “%.*s”"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8763,17 +8795,17 @@
 "relocate_gitdir cho mô-đun-con “%s” với nhiều hơn một cây làm việc là chưa "
 "được hỗ trợ"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "không thể tìm kiếm tên cho mô-đun-con “%s”"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "từ chối di chuyển “%s” vào trong một thư mục git sẵn có"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8784,11 +8816,11 @@
 "“%s” sang\n"
 "“%s”\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "không thể lấy thông tin thống kê về ls-files trong .."
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree trả về mã không như mong đợi %d"
@@ -8825,7 +8857,7 @@
 msgid "could not read input file '%s'"
 msgstr "không đọc được tập tin đầu vào “%s”"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "không thể đọc từ đầu vào tiêu chuẩn"
 
@@ -8915,7 +8947,7 @@
 msgid "invalid remote service path"
 msgstr "đường dẫn dịch vụ máy chủ không hợp lệ"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "thao tác không được gia thức hỗ trợ"
 
@@ -8924,7 +8956,7 @@
 msgid "can't connect to subservice %s"
 msgstr "không thể kết nối đến dịch vụ phụ %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only cần giao thức v2"
 
@@ -9058,46 +9090,46 @@
 msgid "could not read bundle '%s'"
 msgstr "không thể đọc bó “%s”"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "vận chuyển: tùy chọn độ sâu “%s” không hợp lệ"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "xem protocol.version trong “git help config” để có thêm thông tin"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "các tùy chọn máy chủ yêu cầu giao thức phiên bản 2 hoặc mới hơn"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
-msgstr "Máy chủ không hỗ trợ wait-for-done"
+msgstr "máy chủ không hỗ trợ wait-for-done"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "không thể phân tích cú pháp cấu hình transport.color.*"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "việc hỗ trợ giao thức v2 chưa được thực hiện"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "không hiểu giá trị cho cho cấu hình “%s”: %s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "không cho phép phương thức vận chuyển “%s”"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync không còn được hỗ trợ nữa"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -9106,7 +9138,7 @@
 "Các đường dẫn mô-đun-con sau đây có chứa các thay đổi cái mà\n"
 "có thể được tìm thấy trên mọi máy phục vụ:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9133,11 +9165,11 @@
 "để đẩy chúng lên máy phục vụ.\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "Bãi bỏ."
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "gặp lỗi khi đẩy dữ liệu của tất cả các mô-đun-con cần thiết"
 
@@ -9423,11 +9455,11 @@
 "HOA/thường trên một hệ thống tập tin không phân biệt HOA/thường)\n"
 "và chỉ một từ cùng một nhóm xung đột là trong cây làm việc hiện tại:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "Đang cập nhật các cờ mục lục"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr ""
@@ -9470,100 +9502,100 @@
 msgid "Fetching objects"
 msgstr "Đang lấy về các đối tượng"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "gặp lỗi khi đọc “%s”"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "“%s” tại cây làm việc chình không phải là thư mục kho"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "tập tin “%s” không chứa đường dẫn tuyệt đối đến vị trí cây làm việc hiện"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" không tồn tại"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "“%s” không phải là tập tin .git, mã lỗi %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "“%s” không chỉ ngược đến “%s”"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "không phải thư mục"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git không phải là một tập tin"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr "tệp .git bị hỏng"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr "tập tin .git không chính xác"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "không phải là một đường dẫn hợp lệ"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "không thể phân bổ kho chứa; .git không phải là một tập tin"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "không thể phân bổ kho chứa; tập tin .git tham chiếu đến một kho"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "không thể phân bổ kho chứa; tập tin .git bị hỏng"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir không thể đọc được"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir không chính xác"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "không phải thư mục hợp lệ"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "tập tin gitdir không tồn tại"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "không thể đọc tập tin gitdir (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "đọc ngắn (cần %<PRIuMAX> byte, đọc %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "tập tin gitdir (thư mục git) không hợp lệ"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "tập tin gitdir chỉ đến vị trí không tồn tại"
 
@@ -9614,11 +9646,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (dùng \"git rm <tập-tin>…\" để đánh dấu là cần giải quyết)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "Những thay đổi sẽ được chuyển giao:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "Các thay đổi chưa được đặt lên bệ phóng để chuyển giao:"
 
@@ -9722,21 +9754,21 @@
 msgid "untracked content, "
 msgstr "nội dung chưa được theo dõi, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Bạn hiện nay ở trong phần cất đi đang có %d mục"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "Những mô-đun-con đã bị thay đổi nhưng chưa được cập nhật:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "Những mô-đun-con thay đổi đã được chuyển giao:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9744,7 +9776,7 @@
 "Không sửa hay xóa bỏ đường ở trên.\n"
 "Mọi thứ phía dưới sẽ được xóa bỏ."
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9755,109 +9787,109 @@
 "Nó cần %.2f giây để tính toán giá trị của trước/sau của nhánh.\n"
 "Bạn có thể dùng “--no-ahead-behind” tránh phải điều này.\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "Bạn có những đường dẫn chưa được hòa trộn."
 
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (sửa các xung đột rồi chạy \"git commit\")"
 
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (dùng \"git merge --abort\" để bãi bỏ việc hòa trộn)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tất cả các xung đột đã được giải quyết nhưng bạn vẫn đang hòa trộn."
 
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (dùng \"git commit\" để hoàn tất việc hòa trộn)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "Bạn đang ở giữa của một phiên “am”."
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "Miếng vá hiện tại bị trống rỗng."
 
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (sửa các xung đột và sau đó chạy lệnh \"git am --continue\")"
 
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (dùng \"git am --skip\" để bỏ qua miếng vá này)"
 
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (dùng \"git am --abort\" để phục hồi lại nhánh nguyên thủy)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "thiếu git-rebase-todo."
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "Không thực hiện lệnh nào."
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Lệnh thực hiện cuối (%d lệnh được thực thi):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (xem thêm trong %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "Không có lệnh nào còn lại."
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Lệnh cần làm kế tiếp (%d lệnh còn lại):"
 
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (dùng lệnh \"git rebase --edit-todo\" để xem và sửa)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Bạn hiện nay đang thực hiện việc “rebase” nhánh “%s” trên “%s”."
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "Bạn hiện nay đang thực hiện việc “rebase” (cải tổ)."
 
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 "  (sửa các xung đột và sau đó chạy lệnh “cải tổ” \"git rebase --continue\")"
 
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (dùng lệnh “cải tổ” \"git rebase --skip\" để bỏ qua lần vá này)"
 
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (dùng lệnh “cải tổ” \"git rebase --abort\" để check-out nhánh nguyên thủy)"
 
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh “cải tổ” \"git rebase --"
 "continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -9865,165 +9897,169 @@
 "Bạn hiện nay đang thực hiện việc chia tách một lần chuyển giao trong khi "
 "đang “rebase” nhánh “%s” trên “%s”."
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 "Bạn hiện tại đang cắt đôi một lần chuyển giao trong khi đang thực hiện việc "
 "rebase."
 
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Một khi thư mục làm việc của bạn đã gọn gàng, chạy lệnh “cải tổ” \"git "
 "rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Bạn hiện nay đang thực hiện việc sửa chữa một lần chuyển giao trong khi đang "
 "rebase nhánh “%s” trên “%s”."
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "Bạn hiện đang sửa một lần chuyển giao trong khi bạn thực hiện rebase."
 
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (dùng \"git commit --amend\" để “tu bổ” lần chuyển giao hiện tại)"
 
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (chạy lệnh “cải tổ” \"git rebase --continue\" một khi bạn cảm thấy hài "
 "lòng về những thay đổi của mình)"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "Cherry-pick hiện tại đang được thực hiện."
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Bạn hiện nay đang thực hiện việc cherry-pick lần chuyển giao %s."
 
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 "  (sửa các xung đột và sau đó chạy lệnh \"git cherry-pick --continue\")"
 
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (chạy lệnh \"git cherry-pick --continue\" để tiếp tục)"
 
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh \"git cherry-pick --"
 "continue\")"
 
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (dùng \"git cherry-pick --skip\" để bỏ qua miếng vá này)"
 
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (dùng \"git cherry-pick --abort\" để hủy bỏ thao tác cherry-pick)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "Hoàn nguyên hiện tại đang thực hiện."
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Bạn hiện nay đang thực hiện thao tác hoàn nguyên lần chuyển giao “%s”."
 
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (sửa các xung đột và sau đó chạy lệnh \"git revert --continue\")"
 
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (chạy lệnh \"git revert --continue\" để tiếp tục)"
 
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh \"git revert --continue\")"
 
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (dùng lệnh \"git revert --skip\" để bỏ qua lần vá này)"
 
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (dùng \"git revert --abort\" để hủy bỏ thao tác hoàn nguyên)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr ""
 "Bạn hiện nay đang thực hiện thao tác di chuyển nửa bước (bisect), bắt đầu từ "
 "nhánh “%s”."
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "Bạn hiện tại đang thực hiện việc bisect (di chuyển nửa bước)."
 
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (dùng \"git bisect reset\" để quay trở lại nhánh nguyên thủy)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "Bạn đang trong lần lấy ra sparse."
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr ""
 "Bạn đang ở trong lần lấy ra sparser %d%% của các tập tin được theo dõi hiện "
 "tại."
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "Trên nhánh "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "rebase ở chế độ tương tác đang được thực hiện; lên trên "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "rebase đang được thực hiện: lên trên "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "HEAD được tách rời tại "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "HEAD được tách rời từ "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "Hiện tại chẳng ở nhánh nào cả."
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "Lần chuyển giao khởi tạo"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "Vẫn chưa chuyển giao"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "Những tập tin chưa được theo dõi"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "Những tập tin bị lờ đi"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10035,32 +10071,32 @@
 "có lẽ làm nó nhanh hơn, nhưng bạn phải cẩn thận đừng quên mình phải\n"
 "tự thêm các tập tin mới (xem “git help status”.."
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Những tập tin chưa được theo dõi không được liệt kê ra %s"
 
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (dùng tùy chọn -u để hiển thị các tập tin chưa được theo dõi)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "Không có thay đổi nào"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "không có thay đổi nào được thêm vào để chuyển giao (dùng \"git add\" và/hoặc "
 "\"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "không có thay đổi nào được thêm vào để chuyển giao\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -10069,87 +10105,87 @@
 "không có gì được thêm vào lần chuyển giao nhưng có những tập tin chưa được "
 "theo dõi hiện diện (dùng \"git add\" để đưa vào theo dõi)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 "không có gì được thêm vào lần chuyển giao nhưng có những tập tin chưa được "
 "theo dõi hiện diện\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "không có gì để chuyển giao (tạo/sao-chép các tập tin và dùng \"git add\" để "
 "đưa vào theo dõi)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "không có gì để chuyển giao\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "không có gì để chuyển giao (dùng -u xem các tập tin chưa được theo dõi)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "không có gì để chuyển giao, thư mục làm việc sạch sẽ\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "Vẫn không thực hiện lệnh chuyển giao nào "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD (không nhánh)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "khác"
 
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "đằng sau "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "phía trước "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "không thể %s: Bạn có các thay đổi chưa được đưa lên bệ phóng."
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 "thêm vào đó, bảng mục lục của bạn có chứa các thay đổi chưa được chuyển giao."
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
 "không thể %s: Mục lục của bạn có chứa các thay đổi chưa được chuyển giao."
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "không thể gửi lệnh IPC"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "không thể đọc đáp ứng IPC"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "không thể khởi chạy accept_thread “%s”"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "không thể khởi chạy bộ làm việc worker[0] cho “%s”"
@@ -10187,7 +10223,7 @@
 msgstr ""
 "Đưa ra khỏi bệ phóng các thay đổi sau khi làm tươi mới lại bảng mục lục:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "Không thể đọc bảng mục lục"
 
@@ -10224,8 +10260,8 @@
 "Các đường dẫn theo sau đây sẽ bị lờ đi bởi một trong các tập tin .gitignore "
 "của bạn:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "chạy thử"
@@ -10234,7 +10270,7 @@
 msgid "interactive picking"
 msgstr "sửa bằng cách tương tác"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "chọn “hunks” theo kiểu tương tác"
 
@@ -10369,13 +10405,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod tham số “%s” phải hoặc là -x hay +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file xung khắc với các tham số đặc tả đường dẫn"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul cần --pathspec-from-file"
 
@@ -10394,109 +10430,109 @@
 "Tắt thông báo này bằng cách chạy lệnh\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "không thể phân tích cú pháp văn lệnh tác giả"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "“%s” bị xóa bởi móc applypatch-msg"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Dòng đầu vào dị hình: “%s”."
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Gặp lỗi khi sao chép ghi chú (note) từ “%s” tới “%s”"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "fseek gặp lỗi"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "không thể phân tích cú pháp “%s”"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "Chỉ có một sê-ri miếng vá StGIT được áp dụng một lúc"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "dấu thời gian không hợp lệ"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "dòng Ngày tháng không hợp lệ"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "độ lệch múi giờ không hợp lệ"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "Dò tìm định dạng miếng vá gặp lỗi."
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "tạo thư mục \"%s\" gặp lỗi"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "Gặp lỗi khi chia nhỏ các miếng vá."
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "Khi bạn đã giải quyết xong trục trặc này, hãy chạy \"%s --continue\"."
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr ""
 "Nếu bạn muốn bỏ qua miếng vá này, hãy chạy lệnh \"%s --skip\" để thay thế."
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr "Để phục hồi lại nhánh gốc và dừng vá, hãy chạy \"%s --abort\"."
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr ""
 "Miếng vá được gửi với format=flowed; khoảng trống ở cuối của các dòng có thể "
 "bị mất."
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "Miếng vá trống rỗng."
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "thiếu dòng tác giả trong lần chuyển gia %s"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "dòng định danh không hợp lệ: %.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr "Kho thiếu đối tượng blob cần thiết để thực hiện “3-way merge”."
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr ""
 "Sử dụng thông tin trong bảng mục lục để cấu trúc lại một cây (tree) cơ sở…"
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10504,24 +10540,24 @@
 "Bạn đã sửa miếng vá của mình bằng cách thủ công à?\n"
 "Nó không thể áp dụng các blob đã được ghi lại trong bảng mục lục của nó."
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "Đang dùng phương án dự phòng: vá bản cơ sở và “hòa trộn 3-đường”…"
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "Gặp lỗi khi trộn vào các thay đổi."
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "áp dụng vào một lịch sử trống rỗng"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "không thể phục hồi: %s không tồn tại."
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "Thân của lần chuyển giao là:"
 
@@ -10529,41 +10565,41 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr ""
 "Áp dụng? đồng ý [y]/khô[n]g/chỉnh sửa [e]/hiển thị miếng [v]á/chấp nhận tất "
 "cả [a]: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "không thể ghi tập tin lưu mục lục"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "Bảng mục lục bẩn: không thể áp dụng các miếng vá (bẩn: %s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "Áp dụng: %.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "Không thay đổi gì cả -- Miếng vá đã được áp dụng rồi."
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "Gặp lỗi khi vá tại %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr "Dùng “git am --show-current-patch=diff” để xem miếng vá bị lỗi"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10574,7 +10610,7 @@
 "đã sẵn được đưa vào với cùng nội dung thay đổi; bạn có lẽ muốn bỏ qua miếng "
 "vá này."
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10587,17 +10623,17 @@
 "Bạn có lẽ muốn chạy “git rm“ trên một tập tin để chấp nhận \"được xóa bởi họ"
 "\" cho nó."
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Không thể phân tích đối tượng “%s”."
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "gặp lỗi khi dọn bảng mục lục"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
@@ -10605,91 +10641,91 @@
 "Bạn có lẽ đã có HEAD đã bị di chuyển đi kể từ lần “am” thất bại cuối cùng.\n"
 "Không thể chuyển tới ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "Giá trị không hợp lệ cho --patch-format: %s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "Giá trị không hợp lệ cho --show-current-patch: %s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s xung khắc với --show-current-patch=%s"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<các tùy chọn>] [(<mbox>|<Maildir>)…]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<các tùy chọn>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "chạy kiểu tương tác"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "tùy chọn lịch sử -- không-toán-tử"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "cho phép quay trở lại để hòa trộn kiểu “3way” nếu cần"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "im lặng"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "thêm dòng Signed-off-by vào cuối ghi chú của lần chuyển giao"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "chuyển mã thành utf8 (mặc định)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "chuyển cờ -k cho git-mailinfo"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "chuyển cờ -b cho git-mailinfo"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "chuyển cờ -m cho git-mailinfo"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "chuyển cờ --keep-cr cho git-mailsplit với định dạng mbox"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr ""
 "đừng chuyển cờ --keep-cr cho git-mailsplit không phụ thuộc vào am.keepcr"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "cắt mọi thứ trước dòng scissors"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "chuyển nó qua git-mailinfo"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "chuyển nó qua git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10698,67 +10734,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "định dạng"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "định dạng (các) miếng vá theo"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "đè lên các lời nhắn lỗi khi xảy ra lỗi vá nghiêm trọng"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "tiếp tục áp dụng các miếng vá sau khi giải quyết xung đột"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "đồng nghĩa với --continue"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "bỏ qua miếng vá hiện hành"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "phục hồi lại nhánh gốc và loại bỏ thao tác vá"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "bỏ qua thao tác vá nhưng vẫn giữ HEAD nơi nó chỉ đến"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "hiển thị miếng vá đã được áp dụng rồi"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "nói dối về ngày chuyển giao"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "dùng dấu thời gian hiện tại cho ngày tác giả"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "mã-số-khóa"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "Các lần chuyển giao ký-GPG"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(dùng nội bộ cho git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10766,16 +10802,16 @@
 "Tùy chọn -b/--binary đã không dùng từ lâu rồi, và\n"
 "nó sẽ được bỏ đi. Xin đừng sử dụng nó thêm nữa."
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "gặp lỗi đọc bảng mục lục"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "thư mục rebase trước %s không sẵn có nhưng mbox lại đưa ra."
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10784,11 +10820,11 @@
 "Tìm thấy thư mục lạc %s.\n"
 "Dùng \"git am --abort\" để loại bỏ nó đi."
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Thao tác phân giải không được tiến hành, chúng ta không phục hồi lại."
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "chế độ tương tác yêu cầu có các miếng vá trên dòng lệnh"
 
@@ -10862,7 +10898,7 @@
 
 #: builtin/bisect--helper.c:30
 msgid "git bisect--helper --bisect-state (good|old) [<rev>...]"
-msgstr "git bisect--helper --bisect-reset (good|old) [<lần_chuyển_giao>…]"
+msgstr "git bisect--helper --bisect-state (good|old) [<lần_chuyển_giao>…]"
 
 #: builtin/bisect--helper.c:31
 msgid "git bisect--helper --bisect-replay <filename>"
@@ -10882,36 +10918,36 @@
 msgid "could not write to file '%s'"
 msgstr "không thể ghi vào tập tin “%s”"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "“%s” không phải một thời hạn hợp lệ"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "không thể dùng lệnh tích hợp “%s” như là một thời kỳ"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "không thể thay đổi nghĩa của thời kỳ “%s”"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "vui lòng dùng hai thời kỳ khác nhau"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "Chúng tôi đang không bisect.\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "“%s” không phải một lần chuyển giao hợp lệ"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -10919,27 +10955,27 @@
 "không thể lấy ra HEAD nguyên thủy của “%s”. Hãy thử “git bisect reset <lần-"
 "chuyển-giao>”."
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "Đối số bisect_write sai: %s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "không thể lấy oid của điểm xét duyệt “%s”"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "không thể mở tập tin “%s”"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "Lệnh không hợp lệ: bạn hiện đang ở một bisect %s/%s"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10948,7 +10984,7 @@
 "Bạn phải chỉ cho tôi ít nhất một điểm %s và một %s.\n"
 "Bạn có thể sử dụng \"git bisect %s\" và \"git bisect %s\" cho cái đó."
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10959,7 +10995,7 @@
 "Bạn sau đó cần phải chỉ cho tôi ít nhất một điểm xét duyệt %s và một %s.\n"
 "Bạn có thể sử dụng \"git bisect %s\" và \"git bisect %s\" cho chúng."
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "chỉ thực hiện việc bisect với một lần chuyển giao %s"
@@ -10968,15 +11004,15 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "Bạn có chắc chắn chưa [Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "chưa định nghĩa thời kỳ nào"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
@@ -10985,7 +11021,7 @@
 "Bạn hiện tại đang ở thời kỳ %s cho tình trạng cũ\n"
 "và %s cho tình trạng mới.\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10994,52 +11030,52 @@
 "tham số không hợp lệ %s cho “git bisect terms”.\n"
 "Các tùy chọn hỗ trợ là: --term-good|--term-old và --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "gặp lỗi cài đặt việc di chuyển qua các điểm xét duyệt\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "không thể mở “%s” để nối thêm"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "” không phải một thời hạn hợp lệ"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tùy chọn không được thừa nhận: “%s”"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "“%s” không có vẻ như là một điểm xét duyệt hợp lệ"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "sai HEAD - Tôi cần một HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "lấy ra “%s” ra gặp lỗi. Hãy thử \"git bisect reset <nhánh_hợp_lệ>\"."
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "sẽ không di chuyển nửa bước trên cây được cg-seek"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "sai HEAD - tham chiếu mềm kỳ lạ"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "refspec không hợp lệ: “%s”"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "Bạn cần khởi đầu bằng \"git bisect start\"\n"
 
@@ -11047,105 +11083,105 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "Bạn có muốn tôi thực hiện điều này cho bạn không [Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "Hãy gọi “--bisect-state” với ít nhất một đối số"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "“git bisect %s” có thể lấy chỉ một đối số."
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "Đầu vào rev sai: %s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "Đầu vào rev sai (không phải là lần chuyển giao): %s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "Chúng tôi không bisect."
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "'%s'?? bạn đang nói gì thế?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "không thể đọc tập tin '%s' để thao diễn lại"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "đặt lại trạng di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "kiểm tra xem các thời điểm xấu/tốt có tồn tại không"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "in ra các thời điểm di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "bắt đầu phiên di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "tìm lần chuyển giao không di chuyển phân đôi"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "đánh dấu trạng thái ref (hoặc refs)"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "liệt kê các bước bisection đi quá xa"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "phát lại quá trình bisection từ tệp đã cho"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "bỏ qua một số lần chuyển giao để lấy ra"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "không có nhật ký cho BISECT_WRITE"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 "--bisect-reset requires không nhận đối số cũng không nhận lần chuyển giao"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check cần 2 hoặc 3 tham số"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms cần 0 hoặc 1 tham số"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next cần 0 tham số"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log cần 0 tham số"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "chưa chỉ ra tập tin ghi nhật ký"
 
@@ -11198,10 +11234,10 @@
 msgid "show work cost statistics"
 msgstr "hiển thị thống kê công sức làm việc"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "ép buộc báo cáo tiến triển công việc"
 
@@ -11249,7 +11285,7 @@
 msgid "ignore whitespace differences"
 msgstr "bỏ qua các khác biệt do khoảng trắng gây ra"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "rev"
 
@@ -11838,19 +11874,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <tập tin> [<tên tham chiếu>…]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "không hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "hiển thị bộ đo tiến triển trong suốt pha ghi đối tượng"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "tương tự --all-progress khi bộ đo tiến trình được xuất hiện"
 
@@ -11862,29 +11898,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "Cần một kho chứa để có thể tạo một bundle."
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "không hiển thị chi tiết bundle (bó)"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "“%s” tốt\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "Cần một kho chứa để có thể giải nén một bundle."
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "chi tiết; phải được đặt trước một lệnh-con"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Không hiểu câu lệnh con: %s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11892,7 +11928,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <kiểu> | --textconv) | --filters) [--path=<đường/dẫn>] <đối_tượng>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11900,72 +11936,72 @@
 "git cat-file (--batch[=<định dạng>] | --batch-check[=<định dạng>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "chỉ một tùy chọn batch được chỉ ra"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<kiểu> là một trong số: blob, tree, commit hoặc tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "hiển thị kiểu đối tượng"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "hiển thị kích thước đối tượng"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "thoát với 0 khi không có lỗi"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "in nội dung đối tượng dạng dễ đọc"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "với đối tượng blob, chạy lệnh textconv trên nội dung của đối tượng"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "với đối tượng blob, chạy lệnh filters trên nội dung của đối tượng"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "dùng một đường dẫn rõ ràng cho --textconv/--filters"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "cho phép -s và -t để làm việc với các đối tượng sai/hỏng"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "đệm kết xuất --batch"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "hiển thị thông tin và nội dung của các đối tượng lấy từ đầu vào tiêu chuẩn"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "hiển thị các thông tin về đối tượng fed  từ đầu vào tiêu chuẩn"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "theo liên kết mềm trong-cây (được dùng với --batch hay --batch-check)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "hiển thị mọi đối tượng với --batch hay --batch-check"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "đừng sắp xếp đầu ra --batch-all-objects"
 
@@ -11993,8 +12029,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "chấm dứt các bản ghi vào và ra bằng ký tự NULL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "chặn các báo cáo tiến trình hoạt động"
 
@@ -12052,9 +12088,11 @@
 msgstr "git checkout--worker [<các tùy chọn>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "chuỗi"
 
@@ -12149,66 +12187,66 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "Không thể thêm kết quả hòa trộn cho “%s”"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "Đã tạo lại %d xung đột hòa trộn"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "Đã cập nhật đường dẫn %d từ %s"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "Đã cập nhật đường dẫn %d từ mục lục"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "không được dùng “%s” với các đường dẫn cập nhật"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "không được dùng “%s” với %s"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr ""
 "Không thể cập nhật các đường dẫn và chuyển đến nhánh “%s” cùng một lúc."
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "không chỉ định “%s” cũng không “%s”"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "phải có “%s” khi không chỉ định “%s”"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "“%s” hay “%s” không thể được sử dụng với %s"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "đường dẫn “%s” không được hòa trộn"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "bạn cần phải giải quyết bảng mục lục hiện tại của bạn trước đã"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12218,50 +12256,50 @@
 "sau:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Không thể thực hiện reflog cho “%s”: %s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD hiện giờ tại"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "không thể cập nhật HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Đặt lại nhánh “%s”\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Đã sẵn sàng trên “%s”\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Đã chuyển tới và đặt lại nhánh “%s”\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Đã chuyển đến nhánh mới “%s”\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Đã chuyển đến nhánh “%s”\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " … và nhiều hơn %d.\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12280,7 +12318,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12301,19 +12339,19 @@
 " git branch <tên_nhánh_mới> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "lỗi nội bộ trong khi di chuyển qua các điểm xét duyệt"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "Vị trí trước kia của HEAD là"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "Bạn tại nhánh mà nó chưa hề được sinh ra"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12322,7 +12360,7 @@
 "“%s” không thể là cả tập tin nội bộ và một nhánh theo dõi.\n"
 "Vui long dùng -- (và tùy chọn thêm --no-guess) để tránh lẫn lộn"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12342,51 +12380,51 @@
 "chưa rõ ràng, ví dụ máy chủ “origin”, cân nhắc cài đặt\n"
 "checkout.defaultRemote=origin trong cấu hình của bạn."
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "“%s” khớp với nhiều (%d) nhánh máy chủ được theo dõi"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "chỉ cần một tham chiếu"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "chỉ cần một tham chiếu, nhưng lại đưa ra %d."
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tham chiếu không hợp lệ: %s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "tham chiếu không phải là một cây:%s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được thẻ “%s”"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được nhánh máy phục vụ “%s”"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được “%s”"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "cần một nhánh, nhưng lại nhận được “%s”"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12394,7 +12432,7 @@
 "không thể chuyển nhánh trong khi đang hòa trộn\n"
 "Cân nhắc dung \"git merge --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12402,7 +12440,7 @@
 "không thể chuyển nhanh ở giữa một phiên am\n"
 "Cân nhắc dùng \"git am --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12410,7 +12448,7 @@
 "không thể chuyển nhánh trong khi cải tổ\n"
 "Cân nhắc dùng \"git rebase --quit\" hay \"git worktree add\"."
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12418,7 +12456,7 @@
 "không thể chuyển nhánh trong khi  cherry-picking\n"
 "Cân nhắc dùng \"git cherry-pick --quit\" hay \"git worktree add\"."
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12426,143 +12464,143 @@
 "không thể chuyển nhánh trong khi hoàn nguyên\n"
 "Cân nhắc dùng \"git revert --quit\" hoặc \"git worktree add\"."
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr ""
 "bạn hiện tại đang thực hiện việc chuyển nhánh trong khi đang di chuyển nửa "
 "bước"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "các đường dẫn không thể dùng cùng với các nhánh chuyển"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "“%s” không thể được sử dụng với các nhánh chuyển"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "“%s” không thể được dùng với “%s”"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "“%s” không thể nhận <điểm-đầu>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Không thể chuyển nhánh đến một thứ không phải là lần chuyển giao “%s”"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "thiếu tham số là nhánh hoặc lần chuyển giao"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "thực hiện hòa trộn kiểu 3-way với nhánh mới"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "kiểu"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "xung đột kiểu (hòa trộn hoặc diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "rời bỏ HEAD tại lần chuyển giao theo tên"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "đặt thông tin thượng nguồn cho nhánh mới"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "ép buộc lấy ra (bỏ đi những thay đổi nội bộ)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "nhánh-mới"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "nhánh không cha mới"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "cập nhật các tập tin bị bỏ qua (mặc định)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr "không kiểm tra nếu cây làm việc khác đang giữ tham chiếu đã cho"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr ""
 "lấy ra (checkout) phiên bản của chúng ta cho các tập tin chưa được hòa trộn"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr ""
 "lấy ra (checkout) phiên bản của chúng họ cho các tập tin chưa được hòa trộn"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "không giới hạn đặc tả đường dẫn thành chỉ các mục rải rác"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c và --orphan loại từ lẫn nhau"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p và --overlay loại từ lẫn nhau"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track cần tên một nhánh"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "thiếu tên nhánh; hãy thử -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "không thể phân giải “%s”"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "đường dẫn đã cho không hợp lệ"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 "“%s” không phải là một lần chuyển giao và một nhánh'%s” không thể được tạo "
 "từ đó"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach không nhận một đối số đường dẫn “%s”"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file xung khắc với --detach"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file xung khắc với --patch"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -12570,70 +12608,71 @@
 "git checkout: --ours/--theirs, --force và --merge là xung khắc với nhau khi\n"
 "checkout bảng mục lục (index)."
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "bạn phải chỉ định các thư mục muốn hồi phục"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "nhánh"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "tạo và checkout một nhánh mới"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "tạo/đặt_lại và checkout một nhánh"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "tạo reflog cho nhánh mới"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "đoán thứ hai “git checkout <không-nhánh-nào-như-vậy>” (mặc định)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "dùng chế độ che phủ (mặc định)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "tạo và chuyển đến một nhánh mới"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "tạo/đặt_lại và chuyển đến một nhánh"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "gợi ý thứ hai \"git checkout <không-nhánh-nào-như-vậy>\""
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "vứt bỏ các sửa đổi địa phương"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "lấy ra từ tree-ish nào"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "phục hồi bảng mục lục"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "phục hồi cây làm việc (mặc định)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "dùng chế độ che phủ"
 
@@ -12669,7 +12708,7 @@
 msgid "could not lstat %s\n"
 msgstr "không thể lấy thông tin thống kê đầy đủ của %s\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12682,7 +12721,7 @@
 "foo        - chọn mục trên cơ sở tiền tố duy nhất\n"
 "           - (để trống) không chọn gì cả\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12703,33 +12742,33 @@
 "*          - chọn tất\n"
 "           - (để trống) kết thúc việc chọn\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Hả (%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Mẫu để lọc các tập tin đầu vào cần lờ đi>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "CẢNH BÁO: Không tìm thấy các mục được khớp bởi: %s"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "Chọn mục muốn xóa"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "Xóa bỏ “%s” [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12747,51 +12786,51 @@
 "help                - hiển thị chính trợ giúp này\n"
 "?                   - trợ giúp dành cho chọn bằng cách nhắc"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Có muốn gỡ bỏ (các) mục sau đây không:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "Không còn tập-tin nào để dọn dẹp, đang thoát ra."
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "không hiển thị tên của các tập tin đã gỡ bỏ"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "ép buộc"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "dọn bằng kiểu tương tác"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "gỡ bỏ toàn bộ thư mục"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "mẫu"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "thêm <mẫu> vào trong qui tắc bỏ qua"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "đồng thời gỡ bỏ cả các tập tin bị bỏ qua"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "chỉ gỡ bỏ những tập tin bị bỏ qua"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12799,7 +12838,7 @@
 "clean.requireForce được đặt thành true và không đưa ra tùy chọn -i, -n mà "
 "cũng không -f; từ chối lệnh dọn dẹp (clean)"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12807,7 +12846,7 @@
 "clean.requireForce mặc định được đặt là true và không đưa ra tùy chọn -i, -n "
 "mà cũng không -f; từ chối lệnh dọn dẹp (clean)"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x và -X không thể dùng cùng nhau"
 
@@ -12823,7 +12862,7 @@
 msgid "don't create a checkout"
 msgstr "không tạo một checkout"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "tạo kho thuần"
 
@@ -12855,26 +12894,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "số lượng mô-đun-con được nhân bản đồng thời"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "thư-mục-mẫu"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "thư mục mà tại đó các mẫu sẽ được dùng"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "kho tham chiếu"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "chỉ dùng --reference khi nhân bản"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "tên"
@@ -12891,7 +12930,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "đường dẫn đến git-upload-pack trên máy chủ"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "độ-sâu"
@@ -12900,7 +12939,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "tạo bản sao không đầy đủ cho mức sâu đã cho"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "thời-gian"
@@ -12918,8 +12957,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "làm sâu hơn lịch sử của bản sao shallow, bằng điểm xét duyệt loại trừ"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "chỉ nhân bản một nhánh, HEAD hoặc --branch"
 
@@ -12933,11 +12972,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "mọi mô-đun-con nhân bản sẽ là shallow (nông)"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "không dùng chung thư mục dành riêng cho git và thư mục làm việc"
 
@@ -12950,22 +12989,22 @@
 msgstr "đặt cấu hình bên trong một kho chứa mới"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "đặc-tả-máy-phục-vụ"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "tùy chọn để chuyển giao"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "chỉ dùng địa chỉ IPv4"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "chỉ dùng địa chỉ IPv6"
 
@@ -13064,7 +13103,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "không thể bỏ liên kết tập tin thay thế tạm thời"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "Có quá nhiều đối số."
 
@@ -13086,7 +13125,7 @@
 msgid "repository '%s' does not exist"
 msgstr "kho chứa “%s” chưa tồn tại"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "độ sâu %s không phải là một số nguyên dương"
@@ -13108,7 +13147,7 @@
 msgstr "cây làm việc “%s” đã sẵn tồn tại rồi."
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "không thể tạo các thư mục dẫn đầu của “%s”"
@@ -13170,12 +13209,16 @@
 msgid "--local is ignored"
 msgstr "--local bị lờ đi"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "vận chuyển máy mạng đã báo cáo lỗi"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Nhánh máy chủ %s không tìm thấy trong thượng nguồn %s"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "Bạn hình như là đã nhân bản một kho trống rỗng."
 
@@ -13235,7 +13278,7 @@
 msgstr "không thể tìm thấy thư mục đối tượng khớp với “%s”"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "tmục"
 
@@ -13338,7 +13381,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "cha mẹ bị trùng lặp %s đã bị bỏ qua"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "không phải là tên đối tượng hợp lệ “%s”"
@@ -13366,13 +13409,13 @@
 msgid "id of a parent commit object"
 msgstr "mã số của đối tượng chuyển giao cha mẹ"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "chú thích"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "chú thích của lần chuyển giao"
 
@@ -13380,7 +13423,7 @@
 msgid "read commit log message from file"
 msgstr "đọc chú thích nhật ký lần chuyển giao từ tập tin"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "Ký lần chuyển giao dùng GPG"
@@ -13536,7 +13579,7 @@
 "không thể chọn một ký tự ghi chú cái mà không được dùng\n"
 "trong phần ghi chú hiện tại"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "không thể tìm kiếm commit (lần chuyển giao) %s"
@@ -13572,7 +13615,49 @@
 msgid "could not write commit template"
 msgstr "không thể ghi mẫu chuyển giao"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những\n"
+"dòng được bắt đầu bằng “%c” sẽ được bỏ qua.\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những dòng "
+"được\n"
+"bắt đầu bằng “%c” sẽ được bỏ qua, nếu phần chú thích rỗng sẽ hủy bỏ lần "
+"chuyển giao.\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những dòng "
+"được\n"
+"bắt đầu bằng “%c” sẽ được bỏ qua; bạn có thể xóa chúng đi nếu muốn thế.\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những dòng "
+"được\n"
+"bắt đầu bằng “%c” sẽ được bỏ qua; bạn có thể xóa chúng đi nếu muốn thế.\n"
+"Phần chú thích này nếu trống rỗng sẽ hủy bỏ lần chuyển giao.\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13586,7 +13671,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13600,99 +13685,76 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những dòng "
-"được\n"
-"bắt đầu bằng “%c” sẽ được bỏ qua, nếu phần chú thích rỗng sẽ hủy bỏ lần "
-"chuyển giao.\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"Hãy nhập vào các thông tin để giải thích các thay đổi của bạn. Những dòng "
-"được\n"
-"bắt đầu bằng “%c” sẽ được bỏ qua; bạn có thể xóa chúng đi nếu muốn thế.\n"
-"Phần chú thích này nếu trống rỗng sẽ hủy bỏ lần chuyển giao.\n"
-
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sTác giả:           %.*s <%.*s>"
 
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sNgày tháng:        %s"
 
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sNgười chuyển giao: %.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "Không đọc được bảng mục lục"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "không thể chuyển phần đuôi cho “--trailers”"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "Gặp lỗi khi xây dựng cây"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Xin hãy cung cấp lời chú giải hoặc là dùng tùy chọn -m hoặc là -F.\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author “%s” không phải là “Họ và tên <thư điện tửl>” và không khớp bất kỳ "
 "tác giả nào sẵn có"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Chế độ bỏ qua không hợp lệ “%s”"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Chế độ cho các tập tin chưa được theo dõi không hợp lệ “%s”"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
-msgstr "hai tùy chọn -long và -z không tương thích với nhau"
+msgstr "hai tùy chọn --long và -z không tương thích với nhau"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr ""
 "Bạn đang ở giữa của quá trình hòa trộn -- không thể thực hiện việc “reword”."
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr ""
 "Bạn đang ở giữa của quá trình cherry-pick -- không thể thực hiện việc "
 "“reword”."
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr "không thể tổ hợp tùy chọn \"reword\" của --fixup với đường dẫn '%s'"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
@@ -13700,109 +13762,109 @@
 "tùy chọn \"reword\" của --fixup là loại trừ qua lại với --patch/--"
 "interactive/--all/--include/--only"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Sử dụng cả hai tùy chọn --reset-author và --author không hợp lý"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "Không có gì để mà “tu bổ” cả."
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình hòa trộn -- không thể thực hiện việc “tu bổ”."
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình cherry-pick -- không thể thực hiện việc “tu "
 "bổ”."
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình cải tổ -- nên không thể thực hiện việc “tu bổ”."
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Các tùy chọn --squash và --fixup không thể sử dụng cùng với nhau"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Chỉ được dùng một trong số tùy chọn trong số -c/-C/-F/--fixup."
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Tùy chọn -m không thể được tổ hợp cùng với -c/-C/-F."
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "--reset-author chỉ có thể được sử dụng với tùy chọn -C, -c hay --amend."
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Chỉ một trong các tùy chọn --include/--only/--all/--interactive/--patch được "
 "sử dụng."
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "không hiểu tùy chọn: --fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "các đường dẫn “%s …” với tùy chọn -a không hợp lý"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "hiển thị trạng thái ở dạng súc tích"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "hiển thị thông tin nhánh"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "hiển thị thông tin về tạm cất"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "tính đầy đủ giá trị trước/sau"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "phiên bản"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "kết xuất dạng máy-có-thể-đọc"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "hiển thị trạng thái ở định dạng dài (mặc định)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "chấm dứt các mục bằng NUL"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "chế độ"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "hiển thị các tập tin chưa được theo dõi  dấu vết, các chế độ tùy chọn:  all, "
 "normal, no. (Mặc định: all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13810,11 +13872,11 @@
 "hiển thị các tập tin bị bỏ qua, các chế độ tùy chọn: traditional, matching, "
 "no. (Mặc định: traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "khi"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -13822,199 +13884,199 @@
 "bỏ qua các thay đổi trong mô-đun-con, tùy chọn khi: all, dirty, untracked. "
 "(Mặc định: all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "hiển thị danh sách các tập-tin chưa được theo dõi trong các cột"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "không dò tìm các tên thay đổi"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "dò các tên thay đổi, tùy ý đặt mục lục tương tự"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Không hỗ trỡ tổ hợp các tham số các tập tin bị bỏ qua và không được theo dõi"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "không hiển thị tổng kết sau khi chuyển giao thành công"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "hiển thị sự khác biệt trong mẫu tin nhắn chuyển giao"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "Các tùy chọn ghi chú commit"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "đọc chú thích từ tập tin"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "tác giả"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "ghi đè tác giả cho commit"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "ngày tháng"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "ghi đè ngày tháng cho lần chuyển giao"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "lần_chuyển_giao"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "dùng lại các ghi chú từ lần chuyển giao đã cho nhưng có cho sửa chữa"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "dùng lại các ghi chú từ lần chuyển giao đã cho"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]commit"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr ""
 "dùng ghi chú có định dạng autosquash để sửa chữa hoặc tu bổ/reword lần "
 "chuyển giao đã chỉ ra"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "dùng lời nhắn có định dạng tự động nén để nén lại các lần chuyển giao đã chỉ "
 "ra"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "lần chuyển giao nhận tôi là tác giả (được dùng với tùy chọn -C/-c/--amend)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "bộ dò vết"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "thêm đuôi tự chọn"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "thêm dòng Signed-off-by vào cuối"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "sử dụng tập tin mẫu đã cho"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "ép buộc sửa lần commit"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "bao gồm các trạng thái trong mẫu ghi chú chuyển giao"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "Các tùy nội dung ghi chú commit"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "chuyển giao tất cả các tập tin có thay đổi"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "thêm các tập tin đã chỉ ra vào bảng mục lục để chuyển giao"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "thêm các tập-tin bằng tương tác"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "thêm các thay đổi bằng tương tác"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "chỉ chuyển giao các tập tin đã chỉ ra"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "vòng qua móc (hook) pre-commit và commit-msg"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "hiển thị xem cái gì có thể được chuyển giao"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "“tu bổ” (amend) lần commit trước"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "vòng qua móc (hook) post-rewrite"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "ok để ghi lại một thay đổi trống rỗng"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "ok để ghi các thay đổi với lời nhắn trống rỗng"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Tập tin MERGE_HEAD sai hỏng (%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "không thể đọc MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "không thể đọc phần chú thích (message) của lần chuyển giao: %s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Bãi bỏ việc chuyển giao bởi vì phần chú thích của nó trống rỗng.\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 "Đang bỏ qua việc chuyển giao; bạn đã không biên soạn phần chú thích "
 "(message).\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr ""
 "Bãi bỏ việc chuyển giao bởi vì phần thân chú thích của nó trống rỗng.\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14276,7 +14338,7 @@
 
 #: builtin/config.c:684
 msgid "$HOME not set"
-msgstr "Chưa đặt biến môi trường HOME"
+msgstr "Chưa đặt biến môi trường $HOME"
 
 #: builtin/config.c:708
 msgid ""
@@ -14653,35 +14715,35 @@
 msgid "you may want to cleanup or recover these."
 msgstr "bạn có lẽ muốn dọn dẹp hay phục hồi ở đây."
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "dùng “diff.guitool“ thay vì dùng “diff.tool“"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "thực hiện một diff toàn thư mục"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "đừng nhắc khi khởi chạy công cụ diff"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "dùng liên kết mềm trong diff-thư-mục"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "công cụ"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "dùng công cụ diff đã cho"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "in ra danh sách các công cụ dif cái mà có thẻ dùng với “--tool“"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -14689,31 +14751,31 @@
 "làm cho “git-difftool” thoát khi gọi công cụ diff trả về mã không phải số "
 "không"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "chỉ định một lệnh tùy ý để xem diff"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "chuyển cho “diff”"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool cần cây làm việc hoặc --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff xung khắc với --no-index"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui, --tool và --extcmd loại từ lẫn nhau"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "chưa đưa ra <công_cụ> cho --tool=<công_cụ>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "chưa đưa ra <lệnh> cho --extcmd=<lệnh>"
 
@@ -14805,7 +14867,7 @@
 msgid "skip output of blob data"
 msgstr "bỏ qua kết xuất của dữ liệu blob"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "refspec"
 
@@ -15129,7 +15191,7 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
+msgid "rejected %s because shallow roots are not allowed to be updated"
 msgstr "từ chối %s bởi vì các gốc nông thì không được phép cập nhật"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
@@ -15232,48 +15294,52 @@
 msgid "You need to specify a tag name."
 msgstr "Bạn phải định rõ tên thẻ."
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only cần một tham số hay nhiều --negotiate-tip=* hơn"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "Mức sâu là số âm trong --deepen là không được hỗ trợ"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
-msgstr "Các tùy chọn--deepen và --depth loại từ lẫn nhau"
+msgstr "Các tùy chọn --deepen và --depth loại từ lẫn nhau"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "tùy chọn --depth và --unshallow không thể sử dụng cùng với nhau"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow trên kho hoàn chỉnh là không hợp lý"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "lệnh lấy về \"fetch --all\" không lấy đối số kho chứa"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "lệnh lấy về \"fetch --all\" không hợp lý với refspecs"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Không có nhóm máy chủ hay máy chủ như thế: %s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Việc lấy về cả một nhóm và chỉ định refspecs không hợp lý"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "phải cung cấp máy chủ khi sử dụng --negotiate-only"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "Giao thức không hỗ trợ --negotiate-only, nên thoát."
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -15281,11 +15347,11 @@
 "--filter chỉ có thể được dùng với máy chủ được cấu hình bằng extensions."
 "partialclone"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic chỉ có thể dùng khi lấy về từ một máy chủ"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin chỉ có thể dùng khi lấy về từ một máy chủ"
 
@@ -15384,19 +15450,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<config> <command-args>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "config"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "khóa cấu hình lưu trữ danh sách đường dẫn kho lưu trữ"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "thiếu --config=<config>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "không hiểu"
 
@@ -15412,16 +15478,16 @@
 msgid "warning in %s %s: %s"
 msgstr "có cảnh báo trong %s %s: %s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "liên kết gãy từ %7s %s"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "kiểu đối tượng sai trong liên kết"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15430,211 +15496,211 @@
 "liên kết gãy từ %7s %s \n"
 "              tới %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "thiếu %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "không tiếp cận được %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "dangling %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "không thể tạo lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "không thể hoàn thành “%s”"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "Đang kiểm tra %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Đang kiểm tra kết nối (%d đối tượng)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "Đang kiểm tra %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "các liên kết bị gẫy"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "gốc %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "đã đánh thẻ %s %s (%s) trong %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: đối tượng thiếu hay hỏng"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: mục reflog không hợp lệ %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Đang kiểm tra việc đổi tên của “%s” thành “%s”"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: con trỏ sha1 không hợp lệ %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: không phải là một lần chuyển giao"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "cảnh báo: Không có các tham chiếu mặc định"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: thiếu đối tượng hoặc hỏng: %s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: không thể phân tích cú đối tượng: %s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "tập tin sha1 sai: %s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "Đang kiểm tra thư mục đối tượng"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "Đang kiểm tra các thư mục đối tượng"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "Đang lấy liên kết %s"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "%s không hợp lệ"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s chỉ đến thứ gì đó xa lạ (%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: HEAD đã tách rời không chỉ vào đâu cả"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "chú ý: %s chỉ đến một nhánh chưa sinh (%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "Đang kiểm tra cây nhớ tạm"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: con trỏ sha1 không hợp lệ trong cache-tree"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "non-tree trong cache-tree"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<các tùy chọn>] [<đối-tượng>…]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "hiển thị các đối tượng không thể đọc được"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "hiển thị các đối tượng không được quản lý"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "báo cáo các thẻ"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "báo cáo node gốc"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "tạo “index objects head nodes”"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "tạo “reflogs head nodes” (mặc định)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "cũng cân nhắc đến các đối tượng gói và thay thế"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "chỉ kiểm tra kết nối"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "cho phép kiểm tra hạn chế hơn"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "ghi các đối tượng không được quản lý trong .git/lost-found"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "hiển thị quá trình"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "hiển thị tên chi tiết cho các đối tượng đọc được"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "Đang kiểm tra các đối tượng"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: thiếu đối tượng"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "tham số không hợp lệ: cần sha1, nhưng lại nhận được “%s”"
@@ -15919,8 +15985,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "không hỗ trợ đa tuyến, bỏ qua %s"
@@ -15935,243 +16001,243 @@
 msgid "unable to grep from object of type %s"
 msgstr "không thể thực hiện lệnh grep (lọc tìm) từ đối tượng thuộc kiểu %s"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "chuyển đến “%c” cần một giá trị bằng số"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "tìm trong bảng mục lục thay vì trong cây làm việc"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "tìm trong nội dung không được quản lý bởi git"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "tìm kiếm các tập tin được và chưa được theo dõi dấu vết"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "các tập tin bị bỏ qua được chỉ định thông qua “.gitignore”"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "tìm kiếm đệ quy trong từng mô-đun-con"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "hiển thị những dòng không khớp với mẫu"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "phân biệt HOA/thường"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "chỉ khớp mẫu tại đường ranh giới từ"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "xử lý tập tin nhị phân như là dạng văn bản thường"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "không khớp mẫu trong các tập tin nhị phân"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "xử lý tập tin nhị phân với các bộ lọc “textconv”"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "tìm kiếm trong thư mục con (mặc định)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "hạ xuống ít nhất là mức <sâu>"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "dùng biểu thức chính qui POSIX có mở rộng"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "sử dụng biểu thức chính quy kiểu POSIX (mặc định)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "diễn dịch các mẫu như là chuỗi cố định"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "sử dụng biểu thức chính quy tương thích Perl"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "hiển thị số của dòng"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "hiển thị số cột của khớp với mẫu đầu tiên"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "không hiển thị tên tập tin"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "hiển thị các tên tập tin"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "hiển thị tên tập tin tương đối với thư mục đỉnh (top)"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "chỉ hiển thị tên tập tin thay vì những dòng khớp với mẫu"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "đồng nghĩa với --files-with-matches"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "chỉ hiển thị tên cho những tập tin không khớp với mẫu"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "thêm NUL vào sau tên tập tin"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "chỉ hiển thị những phần khớp với mẫu của một dòng"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "hiển thị số lượng khớp thay vì những dòng khớp với mẫu"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "tô sáng phần khớp mẫu"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "hiển thị dòng trống giữa các lần khớp từ các tập tin khác biệt"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr ""
 "hiển thị tên tập tin một lần phía trên các lần khớp từ cùng một tập tin"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "hiển thị <n> dòng nội dung phía trước và sau các lần khớp"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "hiển thị <n> dòng nội dung trước khớp"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "hiển thị <n> dòng nội dung sau khớp"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "dùng <n> tuyến trình làm việc"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "dạng viết tắt của -C SỐ"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "hiển thị dòng vói tên hàm trước các lần khớp"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "hiển thị hàm bao quanh"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "đọc mẫu từ tập-tin"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "match <mẫu>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "tổ hợp mẫu được chỉ ra với tùy chọn -e"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "đưa ra gợi ý với trạng thái thoát mà không có kết xuất"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr "chỉ hiển thị những cái khớp từ tập tin mà nó khớp toàn bộ các mẫu"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "dàn trang"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "hiển thị các tập tin khớp trong trang giấy"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "cho phép gọi grep(1) (bị bỏ qua bởi lần dịch này)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "chưa chỉ ra mẫu"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index hay --untracked không được sử dụng cùng với revs"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "không thể phân giải điểm xét duyệt: %s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "tùy chọn --untracked không được hỗ trợ với --recurse-submodules"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "tổ hợp tùy chọn không hợp lệ, bỏ qua --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "không hỗ trợ đa tuyến, bỏ qua --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "số tuyến chỉ ra không hợp lệ (%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager chỉ làm việc trên cây-làm-việc"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached hay --untracked không được sử dụng với --no-index"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked không thể được sử dụng với tùy chọn --cached"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard không thể sử dụng cho nội dung lưu dấu vết"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "cả hai --cached và các cây phải được chỉ ra"
 
@@ -16294,30 +16360,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "“%s”: không rõ chương trình xem man."
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "không có trình xem trợ giúp dạng manpage tiếp hợp với yêu cầu"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "không có trình xem trợ giúp dạng info tiếp hợp với yêu cầu"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "“%s” được đặt bí danh thành “%s”"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "chuỗi alias.%s sai: %s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "cách dùng: %s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "Chạy lệnh “git help config” để có thêm thông tin"
 
@@ -16354,7 +16420,7 @@
 msgid "used more bytes than were available"
 msgstr "sử dụng nhiều hơn số lượng byte mà nó sẵn có"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "gói quá lớn so với định nghĩa hiện tại của kiểu off_t"
 
@@ -16381,233 +16447,233 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "không hỗ trợ phiên bản gói %<PRIu32>"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "gói có đối tượng sai tại khoảng bù %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "xả nén trả về %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "tràn giá trị khoảng bù cho đối tượng delta cơ sở"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "khoảng bù cơ sở cho delta nằm ngoài phạm vi"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "không hiểu kiểu đối tượng %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "không thể chạy hàm pread cho tập tin gói"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "tập tin gói bị kết thúc sớm, thiếu %<PRIuMAX> byte"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "sự mâu thuẫn xả nén nghiêm trọng"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SỰ VA CHẠM SHA1 ĐÃ XẢY RA VỚI %s!"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "không thể đọc %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "không thể đọc thông tin đối tượng sẵn có %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "không thể đọc đối tượng đã tồn tại %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "đối tượng blob không hợp lệ %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "lỗi fsck trong đối tượng đóng gói"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Không phải tất cả các đối tượng con của %s là có thể với tới được"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "gặp lỗi khi áp dụng delta"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "Đang nhận về các đối tượng"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "Các đối tượng bảng mục lục"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "gói bị sai hỏng (SHA1 không khớp)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "không thể lấy thông tin thống kê packfile"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "pack có phần thừa ở cuối"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "lộn xộn hơn cả điên rồ khi chạy hàm parse_pack_objects()"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "Đang phân giải các delta"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "không thể tạo tuyến: %s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "lộn xộn hơn cả điên rồ"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "đầy đủ với %d đối tượng nội bộ"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Gặp tổng kiểm tra tail không cần cho %s (đĩa hỏng?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "gói có %d delta chưa được giải quyết"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "không thể xả nén đối tượng nối thêm (%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "đối tượng nội bộ %s bị hỏng"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "tên tập tin tập tin gói “%s” không được kết thúc “.%s”"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "không thể ghi %s tập tin “%s”"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "không thể đóng tập tin được ghi %s “%s”"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "gặp lỗi trong khi đóng tập tin gói"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "không thể lưu tập tin gói"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "không thể lưu trữ tập tin ghi mục lục"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "sai pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Không thể mở tập tin gói đã sẵn có “%s”"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Không thể mở tập tin idx của gói cho “%s”"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "không delta: %d đối tượng"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "chiều dài xích = %d: %lu đối tượng"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "Không thể quay lại cwd"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "%s sai"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "không hiểu thuật toán băm dữ liệu “%s”"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin không thể được dùng mà không có --stdin"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin cần một kho git"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format không thể được dùng với --stdin"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "dùng tùy chọn --verify mà không đưa ra tên packfile"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "lỗi fsck trong các đối tượng gói"
 
@@ -16651,56 +16717,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "không sao chép các mẫu từ “%s”: %s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "tên nhánh khởi tạo không hợp lệ: “%s”"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "không thể xử lý (handle) tập tin kiểu %d"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "không di chuyển được %s vào %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "cố để khởi tạo lại một kho với kiểu băm dữ liệu khác"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s đã có từ trước rồi"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: --initial-branch=%s bị bỏ qua"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Đã khởi tạo lại kho Git chia sẻ sẵn có trong %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Đã khởi tạo lại kho Git sẵn có trong %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Đã khởi tạo lại kho Git chia sẻ trống rỗng sẵn có trong %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Đã khởi tạo lại kho Git trống rỗng sẵn có trong %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16708,41 +16774,41 @@
 "git init [-q | --quiet] [--bare] [--template=<thư-mục-tạm>] [--shared[=<các-"
 "quyền>]] [thư-mục]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "các quyền"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "chỉ ra cái mà kho git được chia sẻ giữa nhiều người dùng"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "ghi đè lên tên của nhánh khởi tạo"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "băm"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "chỉ định thuật toán băm dữ liệu muốn dùng"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "Các tùy chọn --separate-git-dir và --bare loại từ lẫn nhau"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "không thể mkdir (tạo thư mục): %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "không thể chdir (chuyển đổi thư mục) sang %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -16751,12 +16817,12 @@
 "%s (hoặc --work-tree=<thư-mục>) không cho phép không chỉ định %s (hoặc --git-"
 "dir=<thư-mục>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Không thể truy cập cây (tree) làm việc “%s”"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir xung khắc với kho thuần"
 
@@ -16831,7 +16897,7 @@
 #: builtin/log.c:113
 #, c-format
 msgid "invalid --decorate option: %s"
-msgstr "tùy chọn--decorate không hợp lệ: %s"
+msgstr "tùy chọn --decorate không hợp lệ: %s"
 
 #: builtin/log.c:180
 msgid "show source"
@@ -16865,85 +16931,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<vùng>:<tập_tin> không thể được sử dụng với đặc tả đường dẫn"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Kết xuất cuối cùng: %d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: sai tập tin"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "không thể đọc đối tượng %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "không nhận ra kiểu: %d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s: bao bọc không hợp lệ từ chế độ mô tả"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers không có giá trị cụ thể"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "không thể mở tập tin miếng vá: %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "cần chính xác một vùng"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "không phải là một vùng"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "“cover letter” cần cho định dạng thư"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "gặp lỗi khi tạo các tập tin cover-letter"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "in-reply-to điên rồ: %s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<các tùy chọn>] [<kể-từ> | <vùng-xem-xét>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "hai thư mục kết xuất?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "không hiểu lần chuyển giao %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "gặp lỗi khi phân giải “%s” như là một tham chiếu hợp lệ"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "không tìm thấy nền hòa trộn chính xác"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16954,293 +17020,294 @@
 "nhánh máy chủ. Hoặc là bạn có thể chỉ định lần chuyển giao nền bằng\n"
 "\"--base=<base-commit-id>\" một cách thủ công"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "gặp lỗi khi tìm nền hòa trộn chính xác"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "lần chuyển giao nền không là tổ tiên của danh sách điểm xét duyệt"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "lần chuyển giao nền không được trong danh sách điểm xét duyệt"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "không thể lấy mã miếng vá"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
 "gặp lỗi khi suy luận range-diff (vùng khác biệt) gốc của sê-ri hiện tại"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "dùng “%s” như là gốc range-diff của sê-ri hiện tại"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "dùng [PATCH n/m] ngay cả với miếng vá đơn"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "dùng [VÁ] ngay cả với các miếng vá phức tạp"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "hiển thị miếng vá ra đầu ra chuẩn"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "tạo bì thư"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "sử dụng chỗi dãy số dạng đơn giản cho tên tập-tin xuất ra"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "sử dụng <sfx> thay cho “.patch”"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "bắt đầu đánh số miếng vá từ <n> thay vì 1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "đếm reroll"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "đánh dấu chuỗi nối tiếp dạng thứ-N re-roll"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "chiều dài tên tập tin đầu ra tối đa"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "dùng [VÁ RFC] thay cho [VÁ]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "cover-from-description-mode"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "tạo ra các phần của một lá thư bao gồm dựa trên mô tả của nhánh"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "dùng [<tiền-tố>] thay cho [VÁ]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "lưu các tập tin kết quả trong <t.mục>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "không strip/add [VÁ]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "không kết xuất diff (những khác biệt) nhị phân"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "xuất mọi mã băm all-zero trong phần đầu From"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "không bao gồm miếng vá khớp với một lần chuyển giao thượng nguồn"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "hiển thị định dạng miếng vá thay vì mặc định (miếng vá + thống kê)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "Lời nhắn"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "đầu đề thư"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "thêm đầu đề thư"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "thư điện tử"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "thêm To: đầu đề thư"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "thêm Cc: đầu đề thư"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "thụt lề"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr ""
 "đặt “Địa chỉ gửi” thành <thụ lề> (hoặc thụt lề người commit nếu bỏ quên)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "dùng thư đầu tiên để trả lời <message-id>"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "ranh giới"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "đính kèm miếng vá"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "dùng miếng vá làm nội dung"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "cho phép luồng lời nhắn, kiểu: “shallow”, “deep”"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "chữ ký"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "thêm chữ ký"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "lần_chuyển_giao_nền"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "add trước hết đòi hỏi thông tin cây tới sê-ri miếng vá"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "thêm chữ ký từ một tập tin"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "không hiển thị các tên tập tin của miếng vá"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "hiển thị bộ đo tiến triển trong khi tạo các miếng vá"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr ""
 "hiển thị các thay đổi dựa trên <rev> trong các chữ bao bọc hoặc miếng vá đơn"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr ""
 "hiển thị các thay đổi dựa trên <refspec> trong các chữ bao bọc hoặc miếng vá "
 "đơn"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "tỷ lệ phần trăm theo cái tạo là weighted"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "dòng định danh không hợp lệ: %s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n và -k loại trừ lẫn nhau"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc và -k xung khắc nhau"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only không hợp lý"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status không hợp lý"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check không hợp lý"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
-msgstr "Các tùy chọn--stdout, --output, và --output-directory loại từ lẫn nhau"
+msgstr ""
+"Các tùy chọn --stdout, --output, và --output-directory loại từ lẫn nhau"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff cần --cover-letter hoặc vá đơn"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "Interdiff:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "Interdiff dựa trên v%d:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor yêu cầu --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff yêu cầu --cover-letter hoặc miếng vá đơn"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "Range-diff:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "Range-diff dựa trên v%d:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "không thể đọc tập tin chữ ký “%s”"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "Đang tạo các miếng vá"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "gặp lỗi khi tạo các tập tin kết xuất"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<thượng-nguồn> [<đầu> [<giới-hạn>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17609,14 +17676,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<các tùy chọn>] [<commit>…]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "switch “m” yêu cầu một giá trị"
@@ -17760,38 +17819,38 @@
 msgid "'%s' does not point to a commit"
 msgstr "“%s” không chỉ đến một lần chuyển giao nào cả"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Chuỗi branch.%s.mergeoptions sai: %s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "Không cầm nắm gì ngoài hai head hòa trộn."
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Không hiểu tùy chọn cho merge-recursive: -X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "không thể ghi %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Không thể đọc từ “%s”"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
 "Vẫn chưa hòa trộn các lần chuyển giao; sử dụng lệnh “git commit” để hoàn tất "
 "việc hòa trộn.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17803,11 +17862,11 @@
 "topic.\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "Nếu phần chú thích rỗng sẽ hủy bỏ lần chuyển giao.\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
@@ -17816,75 +17875,75 @@
 "Những dòng được bắt đầu bằng “%c” sẽ được bỏ qua, và nếu phần chú\n"
 "thích rỗng sẽ hủy bỏ lần chuyển giao.\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "Chú thích của lần commit (chuyển giao) bị trống rỗng."
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Tuyệt vời.\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Việc tự động hòa trộn gặp lỗi; hãy sửa các xung đột sau đó chuyển giao kết "
 "quả.\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "Không phải nhánh hiện hành."
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "Không có máy chủ cho nhánh hiện hành."
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "Không có thượng nguồn mặc định được định nghĩa cho nhánh hiện hành."
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Không nhánh mạng theo dõi cho %s từ %s"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Giá trị sai “%s” trong biến môi trường “%s”"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "không phải là một thứ gì đó mà chúng tôi có thể hòa trộn trong %s: %s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "không phải là thứ gì đó mà chúng tôi có thể hòa trộn"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort không nhận các đối số"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 "Ở đây không có lần hòa trộn nào được hủy bỏ giữa chừng cả (thiếu MERGE_HEAD)."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit không nhận các đối số"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue không nhận đối số"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Ở đây không có lần hòa trộn nào đang được xử lý cả (thiếu MERGE_HEAD)."
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17892,7 +17951,7 @@
 "Bạn chưa kết thúc việc hòa trộn (MERGE_HEAD vẫn tồn tại).\n"
 "Hãy chuyển giao các thay đổi trước khi bạn có thể hòa trộn."
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17900,90 +17959,90 @@
 "Bạn chưa kết thúc việc cherry-pick (CHERRY_PICK_HEAD vẫn tồn tại).\n"
 "Hãy chuyển giao các thay đổi trước khi bạn có thể hòa trộn."
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Bạn chưa kết thúc việc cherry-pick (CHERRY_PICK_HEAD vẫn tồn tại)."
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Bạn không thể kết hợp --squash với --no-ff."
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "Bạn không thể kết hợp --squash với --commit."
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Không chỉ ra lần chuyển giao và merge.defaultToUpstream chưa được đặt."
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "Squash commit vào một head trống rỗng vẫn chưa được hỗ trợ"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Chuyển giao không-chuyển-tiếp-nhanh không hợp lý ở trong một head trống rỗng"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - không phải là thứ gì đó mà chúng tôi có thể hòa trộn"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 "Không thể hòa trộn một cách đúng đắn một lần chuyển giao vào một head rỗng"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "từ chối hòa trộn lịch sử không liên quan"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Đang cập nhật %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Đang thử hòa trộn kiểu “trivial in-index”…\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "Không.\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "Thực hiện lệnh chuyển-tiếp-nhanh là không thể được, đang bỏ qua."
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Đang tua lại cây thành thời xa xưa…\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Đang thử chiến lược hòa trộn %s…\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Không có chiến lược hòa trộn nào được nắm giữ (handle) sự hòa trộn.\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Hòa trộn với chiến lược %s gặp lỗi.\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Sử dụng %s để chuẩn bị giải quyết bằng tay.\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Sử dụng chiến lược %s để chuẩn bị giải quyết bằng tay.\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -18085,7 +18144,7 @@
 "trong suốt quá trình đóng gói lại, gom các tập tin gói có kích cỡ nhỏ hơn "
 "vào một bó cái mà lớn hơn kích thước này"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "không hiểu câu lệnh con: %s"
@@ -18627,7 +18686,7 @@
 msgid "read object names from the standard input"
 msgstr "đọc tên đối tượng từ thiết bị nhập chuẩn"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "không gỡ bỏ, chỉ hiển thị"
 
@@ -18643,26 +18702,26 @@
 msgid "use notes from <notes-ref>"
 msgstr "dùng “notes” từ <notes-ref>"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "không hiểu câu lệnh con: %s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [các tùy chọn…] [< <danh-sách-tham-chiếu> | < "
 "<danh-sách-đối-tượng>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [các tùy chọn…] <base-name> [< <danh-sách-ref> | < <danh-"
 "sách-đối-tượng>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18671,108 +18730,108 @@
 "write_reuse_object: không thể phân bổ %s, cần tại vị trí bù %<PRIuMAX> trong "
 "gói %s"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "CRC của đối tượng gói sai với %s"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "đối tượng đã đóng gói sai hỏng cho %s"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "dò thấy delta đệ quy cho đối tượng %s"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "đã sắp xếp %u đối tượng, cần %<PRIu32>"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "cần đối tượng tại khoảng bù %<PRIuMAX> trong gói: %s"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "tắt ghi bitmap, các gói bị chia nhỏ bởi vì pack.packSizeLimit"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "Đang ghi lại các đối tượng"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "gặp lỗi khi lấy thông tin thống kê về %s"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "đã ghi %<PRIu32> đối tượng trong khi cần %<PRIu32>"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "tắt ghi bitmap, như vậy một số đối tượng sẽ không được đóng gói"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "khoảng bù cơ sở cho delta bị tràn trong gói cho %s"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "khoảng bù cơ sở cho delta nằm ngoài phạm cho %s"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "Đang đếm các đối tượng"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "không thể phân tích phần đầu đối tượng của “%s”"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "không thể đọc đối tượng %s"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "đối tượng %s không nhất quán về chiều dài đối tượng (%<PRIuMAX> so với "
 "%<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - hết bộ nhớ"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Nén delta dùng tới %d tuyến trình"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "không thể đóng gói các đối tượng tiếp cận được từ thẻ “%s”"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "Đang nén các đối tượng"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "mâu thuẫn với số lượng delta"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18781,7 +18840,7 @@
 "giá trị của uploadpack.blobpackfileuri phải có dạng “<object-hash> <pack-"
 "hash> <uri>” (nhận “%s”)"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -18789,17 +18848,17 @@
 "đối tượng đã được cấu hình trong một uploadpack.blobpackfileuri khác (đã "
 "nhận “%s”)"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "không thể lấy kiểu của đối tượng “%s” trong gói “%s”"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "không thể tìm thấy gói “%s”"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18808,7 +18867,7 @@
 "cần ID đối tượng cạnh, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18817,248 +18876,248 @@
 "cần ID đối tượng, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "giá trị cho --missing không hợp lệ"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "không thể mở mục lục của gói"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "đối tượng mất tại %s không thể đã kiểm tra"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "không thể buộc mất đối tượng"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "không phải một rev “%s”"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "điểm xem xét sai “%s”"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "không thể thêm các đối tượng mới dùng"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "phiên bản mục lục không được hỗ trợ %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "phiên bản mục lục sai “%s”"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<phiên bản>[,offset]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr "ghi tập tin bảng mục lục gói (pack) ở phiên bản định dạng idx đã cho"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "kcíh thước tối đa cho tập tin gói được tạo"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "bỏ qua các đối tượng vay mượn từ kho đối tượng thay thế"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "bỏ qua các đối tượng đóng gói"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "giới hạn cửa sổ đóng gói theo đối tượng"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "giới hạn cửa sổ đóng gói theo bộ nhớ cộng thêm với giới hạn đối tượng"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "độ dài tối đa của chuỗi móc xích “delta” được phép trong gói kết quả"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "dùng lại các delta sẵn có"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "dùng lại các đối tượng sẵn có"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "dùng các đối tượng OFS_DELTA"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "sử dụng các tuyến trình khi tìm kiếm cho các mẫu khớp delta tốt nhất"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "không thể tạo kết xuất gói trống rỗng"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "đọc tham số “revision” từ thiết bị nhập chuẩn"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "giới hạn các đối tượng thành những cái mà chúng vẫn chưa được đóng gói"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "bao gồm các đối tượng có thể đọc được từ bất kỳ tham chiếu nào"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "bao gồm các đối tượng được tham chiếu bởi các mục reflog"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "bao gồm các đối tượng được tham chiếu bởi mục lục"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "đọc các gói từ đầu vào tiêu chuẩn"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "xuất gói ra đầu ra tiêu chuẩn"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "bao gồm các đối tượng tham chiếu đến các đối tượng được đóng gói"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "giữ lại các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "pack mất các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 "xả nén (gỡ khỏi gói) các đối tượng không thể đọc được mới hơn <thời-gian>"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "sử dụng thuật toán “sparse reachability”"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "tạo gói nhẹ"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "tạo gói để phù hợp cho lấy về nông (shallow)"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "bỏ qua các gói mà nó có tập tin .keep đi kèm"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "bỏ qua gói này"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "mức nén gói"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "không ẩn các lần chuyển giao bởi “grafts”"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "dùng mục lục ánh xạ nếu có thể được để nâng cao tốc độ đếm đối tượng"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "ghi một mục lục ánh xạ cùng với mục lục gói"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "ghi mục lục ánh xạ nếu được"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "xử lý cho thiếu đối tượng"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "không thể đóng gói các đối tượng trong các tập tin gói hứa hẹn"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "tôn trọng island trong suốt quá trình nén “delta”"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "giao thức"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "loại trừ bất kỳ cấu hình uploadpack.blobpackfileuri với giao thức này"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "mức sau xích delta %d là quá sâu, buộc dùng %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit là quá cao, ép dùng %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size không thể được sử dụng để xây dựng một gói để vận chuyển"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "giới hạn kích thước tối thiểu của gói là 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin không thể được dùng để xây dựng gói đánh mục lục được"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable và --unpack-unreachable xung khắc nhau"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "không thể dùng tùy chọn --filter mà không có --stdout"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "không thể dùng tùy chọn --filter với --stdin-packs"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "không thể dùng danh sách rev bên trong với --stdin-packs"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "Đánh số các đối tượng"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19285,21 +19344,21 @@
 "hoặc --ff-only trên dòng lệnh để ghi đè mặc định được cấu hình cho mỗi\n"
 "lần gọi.\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Đang cập nhật một nhánh chưa được sinh ra với các thay đổi được thêm vào "
 "bảng mục lục."
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "pull với rebase"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "xin hãy chuyển giao hoặc tạm cất (stash) chúng."
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19310,7 +19369,7 @@
 "đang chuyển-tiếp-nhanh cây làm việc của bạn từ\n"
 "lần chuyển giaot %s."
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19328,15 +19387,15 @@
 "$ git reset --hard\n"
 "để khôi phục lại."
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Không thể hòa trộn nhiều nhánh vào trong một head trống rỗng."
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "Không thể thực hiện lệnh rebase (cải tổ) trên nhiều nhánh."
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "không thể cải tổ với các thay đổi mô-đun-con được ghi lại một cách cục bộ"
@@ -19402,7 +19461,7 @@
 "\n"
 "    git push %s HEAD:<tên-của-nhánh-máy-chủ>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19416,12 +19475,19 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Nhánh hiện tại %s có nhiều nhánh thượng nguồn, từ chối push."
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Bạn đã không chỉ ra một refspecs nào để đẩy lên, và push.default là \"không "
+"là gì cả\"."
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19433,14 +19499,7 @@
 "nhánh hiện tại “%s” của bạn, mà không báo cho tôi biết là cái gì được push\n"
 "để cập nhật nhánh máy chủ nào."
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr ""
-"Bạn đã không chỉ ra một refspecs nào để đẩy lên, và push.default là \"không "
-"là gì cả\"."
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19453,7 +19512,7 @@
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19467,7 +19526,7 @@
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19482,11 +19541,11 @@
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Việc cập nhật bị từ chối bởi vì thẻ đã sẵn có từ trước trên máy chủ."
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19498,7 +19557,7 @@
 "đối tượng\n"
 "không phải chuyển giao, mà không sử dụng tùy chọn “--force”.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19510,103 +19569,103 @@
 "tích hợp các thay đổi này một cách cục bộ (v.d. \"git pull …\")\n"
 "trước khi ép buộc một cập nhật.\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Đang đẩy lên %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "gặp lỗi khi đẩy tới một số tham chiếu đến “%s”"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "kho"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "đẩy tất cả các tham chiếu"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "mirror tất cả các tham chiếu"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "xóa các tham chiếu"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "đẩy các thẻ (không dùng cùng với --all hay --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "ép buộc cập nhật"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<tên-tham-chiếu>:<cần>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "yêu cầu giá-trị cũ của tham chiếu thì là giá-trị này"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "yêu cầu máy chủ cập nhật để thích hợp với máy cục bộ"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "điều khiển việc đẩy lên (push) đệ qui của mô-đun-con"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "tạo gói nhẹ"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "chương trình nhận gói"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "đặt thượng nguồn cho git pull/status"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "xén tỉa những tham chiếu bị gỡ bỏ"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "vòng qua móc tiền-đẩy (pre-push)"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "push phần bị thiếu nhưng các thẻ lại thích hợp"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "ký lần đẩy dùng GPG"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "yêu cầu giao dịch hạt nhân bên phía máy chủ"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete là xung khắc với các tùy chọn --all, --mirror và --tags"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete không hợp lý nếu không có bất kỳ tham chiếu nào"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "repository (kho) sai “%s”"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19627,27 +19686,27 @@
 "\n"
 "    git push <tên>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all và --tags xung khắc nhau"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all không thể được tổ hợp cùng với đặc tả đường dẫn"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror và --tags xung khắc nhau"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror không thể được tổ hợp cùng với đặc tả đường dẫn"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all và --mirror xung khắc nhau"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "các tùy chọn push phải không có ký tự dòng mới"
 
@@ -20206,7 +20265,7 @@
 #: builtin/rebase.c:1442
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
-"Hình như đang trong quá trình thực hiện lệnh “git-am”. Không thể rebase."
+"Hình như đang trong quá trình thực hiện lệnh “git am”. Không thể rebase."
 
 #: builtin/rebase.c:1483
 msgid ""
@@ -20237,7 +20296,7 @@
 "Hành động “--edit-todo” chỉ có thể dùng trong quá trình “rebase” (sửa lịch "
 "sử) tương tác."
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "Không thể đọc HEAD"
 
@@ -20343,8 +20402,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "nghiêm trọng: không có nhánh/lần chuyển giao “%s” như thế"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "Không có tham chiếu nào như thế: %s"
@@ -20413,7 +20472,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <thư-mục-git>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20443,7 +20502,7 @@
 "Để chấm dứt lời nhắn này và vẫn giữ cách ứng xử mặc định, hãy đặt\n"
 "biến cấu hình “receive.denyCurrentBranch” thành “refuse”."
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20464,11 +20523,11 @@
 "\n"
 "Để chấm dứt lời nhắn này, bạn hãy đặt nó thành “refuse”."
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "im lặng"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "Bạn phải chỉ định thư mục."
 
@@ -21442,15 +21501,15 @@
 msgstr ""
 "git rerere [clear | forget <đường dẫn>… | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "sổ ghi dọn sạch các phân giải trong bản mục lục"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "“git rerere forget” mà không có các đường dẫn là đã lạc hậu"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "không thể tạo khác biệt cho “%s”"
@@ -21592,7 +21651,8 @@
 "\n"
 "Cần %.2f giây để kiểm đếm các thay đổi chưa đưa lên bệ phóng sau khi đặt "
 "lại.\n"
-"Bạn có thể sử dụng để tránh việc này. Đặt reset.quiet thành true trong\n"
+"Bạn có thể sử dụng '--quiet' để tránh việc này. Đặt reset.quiet thành true "
+"trong\n"
 "cài đặt config nếu bạn muốn thực hiện nó như là mặc định.\n"
 
 #: builtin/reset.c:434
@@ -21604,19 +21664,19 @@
 msgid "Could not write new index file."
 msgstr "Không thể ghi tập tin lưu bảng mục lục mới."
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "không thể tổ hợp --exclude-promisor-objects và --missing"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "lọc đối tượng yêu cầu --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list không hỗ trợ hiển thị các ghi chú"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "được đánh dấu đếm là xung khắc với --objects"
 
@@ -21636,6 +21696,18 @@
 msgid "output in stuck long form"
 msgstr "kết xuất trong định dạng gậy dài"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "đầu vào chấm dứt bất thường"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "không có chuỗi cách dùng nào được đưa ra trước dấu phân cách '--'"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "Cần một điểm xét duyệt đơn"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21650,6 +21722,50 @@
 "\n"
 "Chạy lệnh \"git rev-parse --parseopt -h\" để có thêm thông tin về cách dùng."
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir cần một tham số"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "không phải một thư mục git “%s”"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path cần một tham số"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n cần một tham số"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format cần một tham số"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "không hiểu tham số cho --path-format: %s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default cần một tham số"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix cần một tham số"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "không hiểu chế độ cho --abbrev-ref: %s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "không hiểu chế độ cho --show-object-format: %s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<các tùy chọn>] <commit-ish>…"
@@ -22138,37 +22254,37 @@
 msgid "failed to open '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "không thể thường hóa đường dẫn “%s”"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <các mẫu>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "không thể bỏ trích dẫn chuỗi kiểu C “%s”"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "không thể tải các mẫu sparse-checkout"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "đọc các mẫu từ đầu vào tiêu chuẩn"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "gặp lỗi khi đọc lại thư mục làm việc"
 
@@ -22192,10 +22308,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <tên-nhánh> [<stash>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22345,93 +22457,93 @@
 msgid "only show untracked files in the stash"
 msgstr "chỉ hiển thị các tập tin không được theo dõi trong stash"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "Không thể cập nhật %s với %s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "phần chú thích cho stash"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" cần một đối số <lần chuyển giao>"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "Chưa có thay đổi nào được chọn"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "Bạn chưa còn có lần chuyển giao khởi tạo"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "Không thể ghi lại trạng thái bảng mục lục hiện hành"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "Không thể ghi lại các tập tin chưa theo dõi"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "Không thể ghi lại trạng thái cây-làm-việc hiện hành"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "Không thể ghi lại trạng thái cây làm việc hiện hành"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "Không thể dùng --patch và --include-untracked hay --all cùng một lúc"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "Có lẽ bạn đã quên “git add ” phải không?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "Không có thay đổi nội bộ nào được ghi lại"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "Không thể khởi tạo stash"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "Không thể ghi lại trạng thái hiện hành"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "Đã ghi lại thư mục làm việc và trạng thái mục lục %s"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "Không thể gỡ bỏ các thay đổi cây-làm-việc"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "giữ nguyên bảng mục lục"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "cất đi ở chế độ miếng vá"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "chế độ im lặng"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "bao gồm các tập tin không được theo dõi trong stash"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "bao gồm các tập tin bị bỏ qua"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22455,40 +22567,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "treo trước ký tự ghi chú và ký tự khoảng trắng cho từng dòng"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Cần tên tham chiếu dạng đầy đủ, nhưng lại nhận được %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote takes không nhận tham số"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "không thể cắt bỏ một thành phần ra khỏi “%s” url"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "điểm neo thay thế cho các đường dẫn tương đối"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=</đường/dẫn>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Không tìm thấy url cho đường dẫn mô-đun-con “%s” trong .gitmodules"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "Đang vào “%s”\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22497,7 +22610,7 @@
 "run_command trả về trạng thái khác không cho %s\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22508,20 +22621,20 @@
 "con lồng nhau của %s\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "chặn kết xuất của từng lệnh mô-đun-con"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "đệ quy vào trong mô-đun-con lồng nhau"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--]  <lệnh>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
@@ -22530,56 +22643,56 @@
 "không thể tìm thấy cấu hình “%s”. Coi rằng đây là kho thượng nguồn có quyền "
 "sở hữu chính nó."
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Gặp lỗi khi đăng ký url cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Mô-đun-con “%s” (%s) được đăng ký cho đường dẫn “%s”\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "cảnh báo: chế độ lệnh cập nhật được gợi ý cho mô-đun-con “%s”\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Gặp lỗi khi đăng ký chế độ cập nhật cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "chặn kết xuất của khởi tạo một mô-đun-con"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<các tùy chọn>] [</đường/dẫn>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 "không tìm thấy ánh xạ (mapping) mô-đun-con trong .gitmodules cho đường dẫn "
 "“%s”"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "không thể phân giải tham chiếu HEAD bên trong mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "gặp lỗi khi đệ quy vào trong mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "chặn kết xuất về tình trạng mô-đun-con"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -22587,103 +22700,102 @@
 "dùng lần chuyển giao lưu trong mục lục thay cho cái được lưu trong HEAD mô-"
 "đun-con"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
 "git submodule status [--quiet] [--cached] [--recursive] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name </đường/dẫn>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr ""
 "* %s %s(blob)->%s(\n"
 ")"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(mô-đun-con)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "không thể băm đối tượng từ “%s”"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "gặp chế độ không như mong chờ %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "hùng lần chuyển giao đã lưu trong mục lục thay cho HEAD mô-đun-con"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr ""
-"để so sánh lần chuyển giao lưu trong mục lục với cái trong HEAD mô-đun-con"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "để so sánh lần trong mục lục với cái trong HEAD mô-đun-con"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr ""
 "bỏ qua các mô-đun-con với giá trị của “ignore_config” được đặt thành “all”"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "giới hạn kích cỡ tổng hợp"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr ""
 "git submodule--helper summary [<các tùy chọn>] [<lần_chuyển_giao>] [--] [</"
 "đường/dẫn>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "không thể lấy về một điểm xem xét cho HEAD"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "Các tùy chọn --cached và --files loại từ lẫn nhau"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Url mô-đun-con đồng bộ hóa cho “%s”\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "gặp lỗi khi đăng ký url cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "gặp lỗi khi lấy máy chủ mặc định cho mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "gặp lỗi khi cập nhật cho mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "chặn kết xuất của url mô-đun-con đồng bộ"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [</đường/dẫn>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22692,7 +22804,7 @@
 "Cây làm việc mô-đun-con “%s” có chứa thư mục .git (dùng “rm -rf” nếu bạn "
 "thực sự muốn gỡ bỏ nó cùng với toàn bộ lịch sử của chúng)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -22701,45 +22813,45 @@
 "Cây làm việc mô-đun-con “%s” chứa các thay đổi nội bộ; hãy dùng “-f” để loại "
 "bỏ chúng đi"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Đã xóa thư mục “%s”\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Không thể gỡ bỏ cây làm việc mô-đun-con “%s”\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "không thể tạo thư mục mô-đun-con rỗng “%s”"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Mô-đun-con “%s” (%s) được đăng ký cho đường dẫn “%s”\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr "gỡ bỏ cây làm việc của mô-đun-con ngay cả khi nó có thay đổi nội bộ"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "bỏ đăng ký tất cả các trong mô-đun-con"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--]  [</đường/dẫn>…]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Dùng “--all” nếu bạn thực sự muốn hủy khởi tạo mọi mô-đun-con"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22754,154 +22866,155 @@
 "bằng\n"
 "“--reference-if-able” thay vì dùng “--reference”."
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "mô-đun-con “%s” không thể thêm thay thế: %s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Giá trị “%s” cho submodule.alternateErrorStrategy không được thừa nhận"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Giá trị “%s” cho submodule.alternateLocation không được thừa nhận"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "từ chối tạo/dùng “%s” trong một thư mục git của mô đun con"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "việc sao “%s” vào đường dẫn mô-đun-con “%s” gặp lỗi"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "thư mục không trống: “%s”"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "không thể lấy thư mục mô-đun-con cho “%s”"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "nhân bản mô-đun-con mới vào chỗ nào"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "tên của mô-đun-con mới"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "url nơi mà nhân bản mô-đun-con từ đó"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "chiều sâu lịch sử khi tạo bản sao"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "ép buộc tiến trình nhân bản"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "làm đầy đủ dữ liệu cho bản sao vào trong một thư mục trống rỗng"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
 "<url> --path <path>"
 msgstr ""
 "git submodule--helper clone [--prefix=</đường/dẫn>] [--quiet] [--reference "
-"<kho>] [--name <tên>] [--depth <sâu>] [--single-branch] [--url <url>] --path "
-"</đường/dẫn>"
+"<kho>] [--name <tên>] [--depth <sâu>] [--single-branch] --url <url> --path </"
+"đường/dẫn>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "từ chối tạo/dùng “%s” trong một thư mục git của mô đun con"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "việc sao “%s” vào đường dẫn mô-đun-con “%s” gặp lỗi"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "thư mục không trống: “%s”"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "không thể lấy thư mục mô-đun-con cho “%s”"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "Chế độ cập nhật “%s” không hợp lệ cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr ""
 "Chế độ cập nhật “%s” không hợp lệ được cấu hình cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Đường dẫn mô-đun-con “%s” chưa được khởi tạo"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Có lẽ bạn là bạn muốn dùng \"update --init\" phải không?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Bỏ qua các mô-đun-con chưa được hòa trộn %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Bỏ qua mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Gặp lỗi khi nhân bản “%s”. Thử lại lịch trình"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Gặp lỗi khi nhân bản “%s” lần thứ hai nên bãi bỏ"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "đường dẫn đến cây làm việc"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "đường dẫn đến cây làm việc, chéo biên giới mô-đun-con lồng nhau"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout hoặc không làm gì cả"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 "tạo một bản sao nông được cắt ngắn thành số lượng điểm xét duyệt đã cho"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "công việc đồng thời"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "nhân bản lần đầu có nên theo khuyến nghị là nông hay không"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "đừng in tiến trình nhân bản"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr ""
 "git submodule--helper update-clone [--prefix=</đường/dẫn>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "giá trị cho  tham số cập nhật bị sai"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -22910,86 +23023,143 @@
 "Nhánh mô-đun-con (%s) được cấu hình kế thừa nhánh từ siêu dự án, nhưng siêu "
 "dự án lại không trên bất kỳ nhánh nào"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "không thể lấy thẻ quản kho cho mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "đệ quy vào trong mô-đun-con"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<các tùy chọn>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "chọn nếu nó là an toàn để ghi vào tập tin .gitmodules"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "bỏ đặt cấu hình trong tập tin .gitmodules"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <tên> [<giá trị>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <tên>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "hãy đảm bảo rằng tập tin .gitmodules có trong cây làm việc"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "chặn kết xuất cho cài đặt url của một mô-đun-con"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] </đường/dẫn> <url_mới>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "đặt nhánh theo dõi mặc định thành master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "đặt nhánh theo dõi mặc định"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet](-d|--default)</đường/dẫn>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <nhánh> </đường/"
 "dẫn>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "cần --branch hoặc --default"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "Các tùy chọn --branch và --default loại từ lẫn nhau"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Đang thêm repo có sẵn tại “%s” vào bảng mục lục\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "“%s” đã tồn tại từ trước và không phải là một kho git hợp lệ"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "Thư mục git cho “%s” được tìm thấy một cách cục bộ với các máy chủ:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"Nếu bạn muốn sử dụng lại thư mục nội bộ này thay vì nhân bản lại lần nữa từ\n"
+"  %s\n"
+"dùng tùy chọn “--force”. Nếu thư mục git nội bộ không phải là một kho đúng\n"
+"hoặc là bạn không chắc chắn điều đó nghĩa là gì thì chọn tên khác với tùy "
+"chọn “--name”.\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Phục hồi sự hoạt động của thư mục git nội bộ cho mô-đun-con “%s”.\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "không thể lấy ra mô-đun-con “%s”"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "nhánh của kho để lấy ra khi nhân bản"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "cho phép thêm một đường dẫn mô-đun-con bị bỏ qua khác"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<các tùy chọn>...] --url <url> --path </"
+"đường/dẫn> --name <tên>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s không hỗ trợ --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "“%s” không phải là lệnh con submodule--helper hợp lệ"
@@ -23619,7 +23789,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock </đường/dẫn>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "gặp lỗi khi xóa “%s”"
@@ -23629,25 +23799,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "Đang xóa %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "báo cáo các cây làm việc đã prune"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "các cây làm việc hết hạn cũ hơn khoảng <thời gian>"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "“%s” đã có từ trước rồi"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "đích cây làm việc không sử dụng được “%s”"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23656,7 +23826,7 @@
 "“%s” bị mất nhưng cây làm việc bị khóa;\n"
 "dùng “%s -f -f” để ghi đè, hoặc “unlock” và “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23665,27 +23835,31 @@
 "“%s” bị mất nhưng cây làm việc đã được đăng ký;\n"
 "dùng “%s -f” để ghi đè, hoặc “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "không thể tạo thư mục của “%s”"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "khởi tạo"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Đang chuẩn bị cây làm việc (nhánh mới “%s”)"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "Đang chuẩn bị cây làm việc (đang cài đặt nhánh “%s”, trước đây tại %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Đang chuẩn bị cây làm việc (đang lấy ra “%s”)"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Đang chuẩn bị cây làm việc (HEAD đã tách rời “%s”)"
@@ -23710,84 +23884,92 @@
 msgid "keep the new working tree locked"
 msgstr "giữ cây làm việc mới bị khóa"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:492 builtin/worktree.c:729
+msgid "reason for locking"
+msgstr "lý do khóa"
+
+#: builtin/worktree.c:495
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-branch(1))"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:498
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "có khớp tên tên nhánh mới với một nhánh theo dõi máy chủ"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:506
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "Các tùy chọn -b, -B, và --detach loại từ lẫn nhau"
 
-#: builtin/worktree.c:565
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason cần --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "được thêm với --lock"
+
+#: builtin/worktree.c:574
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track chỉ có thể được dùng nếu một nhánh mới được tạo"
 
-#: builtin/worktree.c:682
+#: builtin/worktree.c:691
 msgid "show extended annotations and reasons, if available"
 msgstr "hiển thị chú thích và lý do mở rộng, nếu có"
 
-#: builtin/worktree.c:684
+#: builtin/worktree.c:693
 msgid "add 'prunable' annotation to worktrees older than <time>"
 msgstr ""
 "thêm chú thích kiểu 'prunable' cho các cây làm việc hết hạn cũ hơn khoảng "
 "<thời gian>"
 
-#: builtin/worktree.c:693
+#: builtin/worktree.c:702
 msgid "--verbose and --porcelain are mutually exclusive"
 msgstr "--verbose và --porcelain loại từ lẫn nhau"
 
-#: builtin/worktree.c:720
-msgid "reason for locking"
-msgstr "lý do khóa"
-
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "%s không phải là cây làm việc"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Cây thư mục làm việc chính không thể khóa hay bỏ khóa được"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "“%s” đã được khóa rồi, lý do: %s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "“%s” đã được khóa rồi"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "“%s” chưa bị khóa"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "cây làm việc có chứa mô-đun-con không thể di chuyển hay xóa bỏ"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "ép buộc ngay cả khi cây làm việc đang bẩn hay bị khóa"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "“%s” là cây làm việc chính"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "không thể phác họa ra tên đích đến “%s”"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23796,7 +23978,7 @@
 "không thể di chuyển một cây-làm-việc bị khóa, khóa vì: %s\n"
 "dùng “move -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23804,38 +23986,38 @@
 "không thể di chuyển một cây-làm-việc bị khóa;\n"
 "dùng “move -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "thẩm tra gặp lỗi, không thể di chuyển một cây-làm-việc: %s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "gặp lỗi khi chuyển “%s” sang “%s”"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "gặp lỗi khi chạy “git status” vào “%s”"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "“%s” có chứa các tập tin đã bị sửa chữa hoặc chưa được theo dõi, hãy dùng --"
 "force để xóa nó"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "gặp lỗi khi chạy “git status” trong “%s”, mã %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr "ép buộc di chuyển thậm chí cả khi cây làm việc đang bẩn hay bị khóa"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23844,7 +24026,7 @@
 "không thể xóa bỏ một cây-làm-việc bị khóa, khóa vì: %s\n"
 "dùng “remove -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23852,17 +24034,17 @@
 "không thể xóa bỏ một cây-làm-việc bị khóa;\n"
 "dùng “remove -f -f” để ghi đè hoặc mở khóa trước đã"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "thẩm tra gặp lỗi, không thể gỡ bỏ một cây-làm-việc: %s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "sửa chữa: %s: %s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "lỗi: %s: %s"
@@ -24210,7 +24392,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Không thể đặt ứng dụng chạy sau SSL cho “%s”: đã đặt rồi"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -24262,95 +24444,95 @@
 msgid "redirecting to %s"
 msgstr "chuyển hướng đến %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "không nên có EOF khi không gentle trên EOF"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "máy phục vụ từ xa gửi các bộ ngăn cách không tình trạng"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "máy phục vụ gửi gói kết thúc không cần"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "không thể tua lại dữ liệu post rpc - thử tăng http.postBuffer"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: ký tự chiều dài dòng bị sai: %.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: gặp đáp ứng là gói kết thúc bất ngờ"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC gặp lỗi; %s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "không thể xử lý đẩy cái lớn này"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "không thể giải nén yêu cầu; có lỗi khi giải nén của zlib %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "không thể giải nén yêu cầu; có lỗi ở cuối %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "đã nhận về phần đầu có chiều dài %d byte"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "phần thân vẫn còn cần %d byte"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "đổ vận chuyển http không hỗ trợ khả năng nông"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "lấy về gặp lỗi."
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "không thể lấy về bằng sha1 thông qua smart http"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "lỗi giao thức: cần sha/ref, nhưng lại nhận được “%s”"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "vận chuyển http không hỗ trợ %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push gặp lỗi"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: usage: git remote-curl <máy chủ> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: gặp lỗi khi đọc luồng dữ liệu lệnh từ git"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: đã cố gắng fetch mà không có kho nội bộ"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: không hiểu lệnh “%s” từ git"
@@ -25214,72 +25396,29 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "“$sm_path” không có lần chuyển giao nào được lấy ra"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "Đang thêm repo có sẵn tại “$sm_path” vào bảng mục lục"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "”$sm_path” đã tồn tại từ trước và không phải là một kho git hợp lệ"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr ""
-"Thư mục git cho “$sm_name” được tìm thấy một cách cục bộ với các máy chủ:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"Nếu bạn muốn sử dụng lại thư mục nội bộ này thay vì nhân bản lại lần nữa từ\n"
-"  $realrepo\n"
-"dùng tùy chọn “--force”. Nếu thư mục git nội bộ không phải là một kho đúng\n"
-"hoặc là bạn không chắc chắn điều đó nghĩa là gì thì chọn tên khác với tùy "
-"chọn “--name”."
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr ""
-"Phục hồi sự hoạt động của thư mục git nội bộ cho mô-đun-con “$sm_name”."
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Không thể lấy ra mô-đun-con “$sm_path”"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Gặp lỗi khi thêm mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Gặp lỗi khi đăng ký với hệ thống mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "Không tìm thấy điểm xét duyệt hiện hành trong đường dẫn mô-đun-con "
 "“$displaypath”"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Không thể lấy về trong đường dẫn mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -25288,7 +25427,7 @@
 "Không thể tìm thấy điểm xét duyệt hiện hành ${remote_name}/${branch} trong "
 "đường dẫn mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
@@ -25297,7 +25436,7 @@
 "Không thể lấy về trong đường dẫn mô-đun-con “$displaypath”; thử lấy về trực "
 "tiếp $sha1:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -25306,50 +25445,50 @@
 "Đã lấy về từ đường dẫn mô-đun con “$displaypath”, nhưng nó không chứa $sha1. "
 "Lấy về theo định hướng của lần chuyển giao đó gặp lỗi."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Không thể lấy ra “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: đã checkout “$sha1”"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Không thể cải tổ “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: được rebase vào trong “$sha1”"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Không thể hòa trộn (merge) “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: được hòa trộn vào “$sha1”"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Thực hiện không thành công lệnh “$command $sha1” trong đường dẫn mô-đun-con "
 "“$displaypath”"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: “$command $sha1”"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Gặp lỗi khi đệ quy vào trong đường dẫn mô-đun-con “$displaypath”"
@@ -26082,39 +26221,39 @@
 msgid "invalid argument %s, expecting --"
 msgstr "đối số không hợp lệ %s, cần --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr "múi giờ nội bộ khác biệt với GMT bởi khoảng thời gian không-phút\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "khoảng bù thời gian nội bộ lớn hơn hoặc bằng 24 giờ\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "lỗi nghiêm trọng: lệnh '%s' chết với mã thoát %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "trình soạn thảo thoát không sạch sẽ, bãi bỏ mọi thứ"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "“%s” có chưa một phiên bản trung gian của thư bạn đã soạn.\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "“%s.final” chứa thư điện tử đã soạn thảo.\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases xung khắc với các tùy chọn khác\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -26124,11 +26263,11 @@
 "git-send-email được cấu hình với các tùy chọn sendemail.* - chú ý “e”.\n"
 "Đặt sendemail.forbidSendmailVariables thành false để tắt kiểm tra này.\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "Không thể chạy git format-patch ở ngoài một kho chứa\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
@@ -26136,37 +26275,37 @@
 "“batch-size” và “relogin” phải được chỉ định cùng với nhau (thông qua dòng "
 "lệnh hoặc tùy chọn cấu hình)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "Không hiểu trường --suppress-cc: “%s”\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "Không hiểu cài đặt --confirm: “%s”\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "cảnh báo: bí danh sendmail với dấu trích dẫn không được hỗ trợ: %s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "cảnh báo: “:include:“ không được hỗ trợ: %s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "cảnh báo: chuyển hướng “/file“ hay “|pipe“ không được hỗ trợ: %s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "cảnh báo: dòng sendmail không nhận ra được: %s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -26181,12 +26320,12 @@
 "    * Nói \"./%s\" nếu ý bạn là một tập tin; hoặc\n"
 "    * Đưa ra tùy chọn --format-patch nếu ý bạn là chuẩn bị.\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "Gặp lỗi khi mở thư mục “%s”: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -26196,17 +26335,17 @@
 "Chưa chỉ định các tập tin miếng vá!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "Không có dòng chủ đề trong %s?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "Gặp lỗi khi mở “%s” để ghi: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -26220,27 +26359,27 @@
 "\n"
 "Xóa nội dung phần thân nếu bạn không muốn gửi tóm tắt.\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "Gặp lỗi khi mở “%s”: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "Gặp lỗi khi mở %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "Thư tổng thể là trống rỗng, nên bỏ qua nó\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Bạn có chắc muốn dùng <%s> [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
@@ -26248,11 +26387,11 @@
 "Các trường sau đây là 8bit, nhưng không khai báo một Content-Transfer-"
 "Encoding.\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "Bảng mã 8bit nào tôi nên khai báo [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -26265,20 +26404,20 @@
 "có chủ đề ở dạng mẫu “*** SUBJECT HERE ***”. Dùng --force nếu bạn thực sự "
 "muốn gửi.\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "Tới người mà thư được gửi (nếu có)?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "nghiêm trọng: bí danh “%s” được khai triển thành chính nó\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr "Message-ID được dùng như là In-Reply-To cho thư đầu tiên (nếu có)? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "lỗi: không thể rút trích một địa chỉ hợp lệ từ: %s\n"
@@ -26286,16 +26425,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "Làm gì với địa chỉ này? (thoát[q]|xóa[d]|sửa[e]): "
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "Đường dẫn CA “%s” không tồn tại"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -26322,114 +26461,114 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "Gửi thư này chứ? ([y]có|[n]không|[e]sửa|[q]thoát|[a]tất): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "Gửi thư này trả lời yêu cầu"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "Máy phục vụ SMTP chưa được định nghĩa một cách thích hợp."
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Máy chủ không hỗ trợ STARTTLS! %s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS gặp lỗi! %s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Không thể khởi tạo SMTP một cách đúng đắn. Kiểm tra cấu hình và dùng --smtp-"
 "debug."
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Gặp lỗi khi gửi %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Thử gửi %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Gửi %s\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "Dry-OK. Nhật ký nói rằng:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK. Nhật ký nói rằng:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "Kết quả: "
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "Kết quả: Tốt\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "không thể mở tập tin “%s”"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Thêm cc: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Đang thêm to: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) Thêm cc: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) Thêm cc: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Không thể thực thi “%s”"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Đang thêm %s: %s từ: “%s”\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) gặp lỗi khi đóng đường ống đến “%s”"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "không thể lấy gửi thư dạng 7 bít"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "bảng mã truyền không hợp lệ"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26440,12 +26579,12 @@
 "%s\n"
 "cảnh báo: không có miếng vá nào được gửi đi\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "không thể mở %s: %s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26454,17 +26593,32 @@
 "nghiêm trọng: %s: %d là dài hơn 998 ký tự\n"
 "cảnh báo: không có miếng vá nào được gửi đi\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "Bỏ qua %s với hậu tố sao lưu dự phòng “%s”.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
 
+#~ msgid "unable to write stateless separator packet"
+#~ msgstr "không thể ghi gói phân tách không trạng thái"
+
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
+
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
+
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
+
+#~ msgid "remote server sent stateless separator"
+#~ msgstr "máy phục vụ từ xa gửi các bộ ngăn cách không tình trạng"
+
 #~ msgid "--cached and --3way cannot be used together."
 #~ msgstr "--cached và --3way không thể dùng cùng nhau."
 
@@ -26850,9 +27004,6 @@
 #~ msgid "Cannot store %s"
 #~ msgstr "Không thể lưu “%s”"
 
-#~ msgid "initialize sparse-checkout"
-#~ msgstr "khởi tạo sparse-checkout"
-
 #~ msgid "set sparse-checkout patterns"
 #~ msgstr "đặt các mẫu sparse-checkout"
 
@@ -27783,9 +27934,6 @@
 #~ msgid "  (unable to update local ref)"
 #~ msgstr "  (không thể cập nhật tham chiếu nội bộ)"
 
-#~ msgid "Reinitialized existing"
-#~ msgstr "Khởi tạo lại đã sẵn có rồi"
-
 #~ msgid "Initialized empty"
 #~ msgstr "Khởi tạo trống rỗng"
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 7ede055..abbf74c 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -141,8 +141,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-06-05 22:10+0800\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 17:27+0800\n"
 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
 "Language-Team: GitHub <https://github.com/jiangxin/git/>\n"
 "Language: zh_CN\n"
@@ -156,8 +156,8 @@
 msgid "Huh (%s)?"
 msgstr "嗯(%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "不能读取索引"
@@ -186,7 +186,7 @@
 msgid "could not stage '%s'"
 msgstr "不能暂存 '%s'"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "不能写入索引"
 
@@ -244,12 +244,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "忽略未合入的:%s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "只有二进制文件被修改。\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "没有修改。\n"
@@ -326,11 +326,11 @@
 msgid "(empty) select nothing"
 msgstr "(空)不选择任何内容"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** 命令 ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "请选择"
 
@@ -342,12 +342,13 @@
 msgid "unstaged"
 msgstr "未缓存"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "路径"
@@ -356,7 +357,7 @@
 msgid "could not refresh index"
 msgstr "不能刷新索引"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "再见。\n"
@@ -647,40 +648,40 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "无法解析数据块头信息 '%.*s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "无法解析彩色数据块头信息 '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "不能解析差异信息"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "不能解析彩色差异信息"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "运行 '%s' 失败"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter 的输出不匹配"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr "您的过滤器必须在其输入和输出的行之间保持一一对应的关系。"
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -689,7 +690,7 @@
 "预期上下文行 #%d 于\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -702,11 +703,11 @@
 "\t不是结尾于:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "手动块编辑模式 -- 查看底部的快速指南。\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -720,7 +721,7 @@
 "以 %c 开始的行将被删除。\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
@@ -729,11 +730,11 @@
 "如果不能干净地应用,您将有机会重新编辑。如果该块的全部内容删除,则\n"
 "此次编辑被终止,该块不会被修改。\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "无法解析数据块头信息"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' 失败"
 
@@ -749,24 +750,24 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr "您的编辑块不能被应用。重新编辑(选择 \"no\" 丢弃!) [y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "选中的块不能应用到索引!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "无论如何都要应用到工作区么?"
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "未应用。\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -788,69 +789,69 @@
 "e - 手动编辑当前块\n"
 "? - 显示帮助\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "没有前一个块"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "没有下一个块"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "没有其它可供跳转的块"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "跳转到哪个块(<回车> 查看更多)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "跳转到哪个块?"
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "无效数字:'%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "对不起,只有 %d 个可用块。"
 msgstr[1] "对不起,只有 %d 个可用块。"
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "没有其它可供查找的块"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "使用正则表达式搜索?"
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "错误的正则表达式 %s:%s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "没有和给定模式相匹配的块"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "对不起,不能拆分这个块"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "拆分为 %d 块。"
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "对不起,不能编辑这个块"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' 失败"
 
@@ -905,7 +906,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "因为存在未解决的冲突而退出。"
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "您尚未结束您的合并(存在 MERGE_HEAD)。"
 
@@ -923,7 +924,8 @@
 "The following pathspecs didn't match any eligible path, but they do match "
 "index\n"
 "entries outside the current sparse checkout:\n"
-msgstr "以下路径规格不匹配任何适合的路径,但它们和当前稀疏检出之外的索引条目匹配:\n"
+msgstr ""
+"以下路径规格不匹配任何适合的路径,但它们和当前稀疏检出之外的索引条目匹配:\n"
 
 #: advice.c:303
 msgid ""
@@ -1278,8 +1280,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s 的类型是 %o,应为 %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "无效路径 '%s'"
@@ -1369,7 +1371,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "无法为 %s 添加缓存条目"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "写入 '%s' 失败"
@@ -1459,7 +1461,7 @@
 msgstr[0] "修复空白错误后,应用了 %d 行。"
 msgstr[1] "修复空白错误后,应用了 %d 行。"
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "无法写入新索引文件"
 
@@ -1471,7 +1473,7 @@
 msgid "apply changes matching the given path"
 msgstr "应用与给出路径向匹配的变更"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "数字"
 
@@ -1521,7 +1523,7 @@
 
 #: apply.c:5027
 msgid "attempt three-way merge, fall back on normal patch if that fails"
-msgstr "尝试三路合并,如果失败则尝试正常补丁模式"
+msgstr "尝试三路合并,如果失败则回落至正常补丁模式"
 
 #: apply.c:5029
 msgid "build a temporary index based on embedded index information"
@@ -1535,9 +1537,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "确保至少匹配 <n> 行上下文"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "动作"
@@ -1567,8 +1569,8 @@
 msgstr "允许重叠的补丁片段"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "冗长输出"
 
@@ -1580,7 +1582,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "不信任补丁片段的头信息中的行号"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "根目录"
 
@@ -1622,7 +1624,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "路径太长(%d 字符,SHA1:%s):%s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "压缩错误 (%d)"
@@ -1656,13 +1658,13 @@
 msgstr "不能读取 %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能读取 '%s'"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "路径规格 '%s' 未匹配任何文件"
@@ -1704,7 +1706,7 @@
 msgid "archive format"
 msgstr "归档格式"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "前缀"
 
@@ -1715,7 +1717,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1746,7 +1748,8 @@
 msgstr "列出支持的归档格式"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "仓库"
 
@@ -1754,7 +1757,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "从远程仓库(<仓库>)提取归档文件"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "命令"
@@ -1938,11 +1941,11 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "版本遍历设置失败"
 
@@ -2094,118 +2097,118 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "工作区 %s 的 HEAD 指向没有被更新"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "未能识别的归档包哈希算法:%s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "未知能力 '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' 不像是一个 v2 或 v3 版本的归档包文件"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "未能识别的包头:%s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能打开 '%s'"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "仓库中缺少这些必备的提交:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "需要一个仓库来校验一个归档包"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "这个归档包中含有这个引用:"
 msgstr[1] "这个归档包中含有 %d 个引用:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "这个归档包记录一个完整历史。"
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "这个归档包需要这个引用:"
 msgstr[1] "这个归档包需要 %d 个引用:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "无法复制归档包描述符"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "不能生成 pack-objects 进程"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects 终止"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 选项排除"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "不支持的归档包版本 %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "不能写入,归档包版本 %d 不支持算法 %s"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "未能识别的参数:%s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "不能创建空的归档包。"
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能创建 '%s'"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack 终止"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "终止块 ID 比预期更早出现"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "不正确的块偏移 %<PRIx64> 和 %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "发现重复的块ID %<PRIx32>"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "最终块有非零 ID %<PRIx32>"
@@ -2273,12 +2276,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "提交图需要溢出世代数据,但是没有"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "无法获得对象 %s 类型"
@@ -2340,7 +2343,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "无法写入正确数量的基础图形 ID"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能为 %s 创建先导目录"
@@ -2389,78 +2392,78 @@
 msgid "too many commits to write graph"
 msgstr "提交太多不能画图"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交图文件的校验码错误,可能已经损坏"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交图形的对象 ID 顺序不正确:%s 然后 %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交图形有不正确的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "无法从提交图形中解析提交 %s"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "正在校验提交图中的提交"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "无法从提交图形的对象库中解析提交 %s"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交图形中的提交 %s 的根树对象 ID 是 %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交图形父提交列表太长了"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交图形父提交是 %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交图形父提交列表过早终止"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号是零,但其它地方非零"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号非零,但其它地方是零"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr "提交图形中的提交 %s 的世代号是 %<PRIuMAX> < %<PRIuMAX>"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交图形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "不能解析 %s"
@@ -2742,7 +2745,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必须是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "错误的打包压缩级别 %d"
@@ -2762,110 +2765,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "不能解析配置对象 '%s'"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "解析 %s 失败"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "无法解析命令行中的配置"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "在读取配置文件时遇到未知错误"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "无效 %s:'%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 的取值 '%d' 应该介于 0 和 100 之间"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "无法解析命令行配置中的 '%s'"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "在文件 '%2$s' 的第 %3$d 行发现错误的配置变量 '%1$s'"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "无效的小节名称 '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s 有多个取值"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "写入新的配置文件 %s 失败"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "不能锁定配置文件 %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "打开 %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "无效模式:%s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "无效的配置文件 %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "对 %s 调用 fstat 失败"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "不能 mmap '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "不能 mmap '%s'%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "对 %s 调用 chmod 失败"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "不能写入配置文件 %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "不能设置 '%s' 为 '%s'"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "不能取消设置 '%s'"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "无效的小节名称:%s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "%s 的取值缺失"
@@ -3041,7 +3044,7 @@
 msgid "unable to fork"
 msgstr "无法 fork"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在检查连通性"
 
@@ -3060,7 +3063,7 @@
 #: convert.c:183
 #, c-format
 msgid "illegal crlf_action %d"
-msgstr "非法的 crlf 动作 %d"
+msgstr "非法的 crlf_action %d"
 
 #: convert.c:196
 #, c-format
@@ -3160,23 +3163,23 @@
 msgid "path name too long for external filter"
 msgstr "外部过滤器的路径名太长"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr "外部过滤器 '%s' 不再可用,但并非所有路径都已过滤"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false 不是有效的工作区编码"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s:clean 过滤器 '%s' 失败"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s:smudge 过滤器 %s 失败"
@@ -3301,36 +3304,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "已标记 %d 个数据岛,结束。\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "未知的 --diff-merges 取值:%s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
 msgstr "--merge-base 不适用于范围"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base 仅适用于提交"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "不能解析 HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "未找到合并基线"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "找到了多条合并基线"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<选项>] <路径> <路径>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3353,7 +3356,7 @@
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
 msgstr ""
-"移动的颜色设置必须是 'no'、'default'、'blocks'、'zebra'、'dimmed_zebra' 或 "
+"移动的颜色设置必须是 'no'、'default'、'blocks'、'zebra'、'dimmed-zebra' 或 "
 "'plain'"
 
 #: diff.c:325
@@ -3385,35 +3388,46 @@
 "发现配置变量 'diff.dirstat' 中的错误:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 退出,停止在 %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr "-G 和 --pickaxe-regex 互斥,使用 --pickaxe-regex 和 -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr "---pickaxe-all 和 --find-object 互斥,使用 --pickaxe-all 与 -G 和 -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明确要求只跟一个路径规格"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "无效的 --stat 值:%s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一个数字值"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3422,200 +3436,200 @@
 "无法解析 --dirstat/-X 选项的参数:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的变更类 '%1$c'"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之后未知的值"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一个字符,得到 '%s'"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "坏的 --color-moved 参数:%s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的无效模式 '%s' "
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 选项有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的参数无效"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "选项 -I 的正则表达式无效:'%s'"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "无法解析 --submodule 选项的参数:'%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "坏的 --word-diff 参数:%s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "差异输出格式化选项"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "生成补丁"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "不显示差异输出"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差异"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差异"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同义"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同义"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "机器友好的 --stat"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "只输出 --stat 的最后一行"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<参数1,参数2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "输出每个子目录相对变更的分布"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同义"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同义词"
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果变更中引入冲突定界符或空白错误,给出警告"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精简摘要,例如创建、重命名和模式变更"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "只显示变更文件的文件名"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "只显示变更文件的文件名和状态"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<宽度>[,<文件名宽度>[,<次数>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "生成差异统计(diffstat)"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<宽度>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "使用给定的长度生成差异统计"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "使用给定的文件名长度生成差异统计"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "使用给定的图形长度生成差异统计"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<次数>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行数的差异统计"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "生成差异统计的简洁摘要"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "输出一个可以应用的二进制差异"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行显示完整的前后对象名称"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "显示带颜色的差异"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<类型>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "对于差异中的上下文、旧的和新的行,加亮显示错误的空白字符"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3623,311 +3637,311 @@
 "在 --raw 或者 --numstat 中,不对路径字符转码并使用 NUL 字符做为输出字段的分隔"
 "符"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<前缀>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "显示给定的源前缀取代 \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "显示给定的目标前缀取代 \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "输出的每一行附加前缀"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "不显示任何源和目标前缀"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "显示指定行数的差异块间的上下文"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<字符>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一个字符取代 '+' 来表示新的一行"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一个字符取代 '-' 来表示旧的一行"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一个字符取代 ' ' 来表示一行上下文"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "差异重命名选项"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "将完全重写的变更打破为成对的删除和创建"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "检测重命名"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "省略删除操作的差异输出"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "检测拷贝"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的文件做为发现拷贝的源"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "禁用重命名探测"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "使用空的数据对象做为重命名的源"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "继续列出文件重命名以外的历史记录"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重命名/拷贝目标超过给定的限制,禁止重命名/拷贝检测"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "差异算法选项"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "生成尽可能小的差异"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "行比较时忽略空白字符"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字符的变更"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字符变更"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的回车符(CR)"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的变更"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<正则>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "忽略所有行都和正则表达式匹配的变更"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "启发式转换差异边界以便阅读"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 算法生成差异"
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 算法生成差异"
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<算法>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "选择一个差异算法"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<文本>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 算法生成差异"
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "显示单词差异,使用 <模式> 分隔变更的单词"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正则表达式> 确定何为一个词"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相当于 --word-diff=color --word-diff-regex=<正则>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "移动的代码行用不同方式着色"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字符"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "其它差异选项"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "当从子目录运行,排除目录之外的变更并显示相对路径"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "把所有文件当做文本处理"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "交换两个输入,反转差异"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差异时退出码为 1,否则为 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "禁用本程序的所有输出"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "允许执行一个外置的差异助手"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr "当比较二进制文件时,运行外部的文本转换过滤器"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<何时>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差异时,忽略子模组的更改"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模组的差异如何显示"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "隐藏索引中 'git add -N' 条目"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "将索引中 'git add -N' 条目当做真实的"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<字符串>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "查找改变了指定字符串出现次数的差异"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "查找改变指定正则匹配出现次数的差异"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "显示使用 -S 或 -G 的变更集的所有变更"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "将 -S 的 <string> 当做扩展的 POSIX 正则表达式"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "控制输出中的文件显示顺序"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<路径>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "先显示指定路径的变更"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "跳过指定路径的输出"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<对象 ID>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "查找改变指定对象出现次数的差异"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "通过差异类型选择文件"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<文件>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "输出到一个指定的文件"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
-msgstr "因为文件太多,略过不严格的重命名检查。"
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr "由于文件太多,跳过详尽的重命名检查。"
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
-msgstr "因为文件太多,只在修改的路径中查找拷贝。"
+msgstr "由于文件太多,只在修改的路径中找到了拷贝。"
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3938,7 +3952,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "读取排序文件 '%s' 失败"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "正在进行非精确的重命名探测"
 
@@ -3947,59 +3961,59 @@
 msgid "No such path '%s' in the diff"
 msgstr "在差异中无此路径 '%s'"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "路径规格 '%s' 未匹配任何 git 已知文件"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "未识别的模式:'%s'"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "未识别的反向模式:'%s'"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr "您的 sparse-checkout 文件可能有问题:重复的模式 '%s'"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "禁止 cone 模式匹配"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "不能将 %s 用作排除文件"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "不能打开目录 '%s'"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "无法获得内核名称和信息"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "缓存未跟踪文件在本系统或位置中被禁用"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "仓库 %s 中的索引文件损坏"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能为 %s 创建目录"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能从 '%s' 迁移 git 目录到 '%s'"
@@ -4009,11 +4023,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "提示:等待您的编辑器关闭文件...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "过滤内容"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "不能对文件 '%s' 调用 stat"
@@ -4023,7 +4037,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "错误的 git 名字空间路径 \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "不能设置 GIT_DIR 为 '%s'"
@@ -4162,7 +4176,7 @@
 
 #: fetch-pack.c:1029
 msgid "Server does not support shallow clients"
-msgstr "服务器不支持 shalllow 客户端"
+msgstr "服务器不支持浅客户端"
 
 #: fetch-pack.c:1089
 msgid "Server does not support --shallow-since"
@@ -4188,7 +4202,7 @@
 msgid "source repository is shallow, reject to clone."
 msgstr "源仓库是浅克隆,拒绝克隆。"
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:获取失败。"
 
@@ -4204,13 +4218,13 @@
 
 #: fetch-pack.c:1279
 msgid "Server does not support shallow requests"
-msgstr "服务器不支持 shalllow 请求"
+msgstr "服务器不支持浅克隆请求"
 
 #: fetch-pack.c:1286
 msgid "Server supports filter"
 msgstr "服务器支持 filter"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "无法将请求写到远程"
 
@@ -4266,24 +4280,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack:预期响应结束包"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "没有匹配的远程分支"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "远程没有发送所有必需的对象"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "来自远程的意外的 'ready'"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "没有这样的远程引用 %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "服务器不允许请求未公开的对象 %s"
@@ -4303,7 +4317,7 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
+msgid "ignored invalid color '%.*s' in log.graphColors"
 msgstr "忽略 log.graphColors 中无效的颜色 '%.*s'"
 
 #: grep.c:531
@@ -4314,18 +4328,18 @@
 "给定的模式包含 NULL 字符(通过 -f <文件> 参数)。只有 PCRE v2 下的 -P 支持此"
 "功能"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s':无法读取 %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "对 '%s' 调用 stat 失败"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s':读取不完整"
@@ -4562,7 +4576,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "'object:type=<type>' 的值 '%s' 不是有效的对象类型"
 
 #: list-objects-filter-options.c:124
@@ -4607,7 +4621,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "树 %2$s 中的条目 '%1$s' 具有数据对象的模式,但不是一个数据对象"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "无法为提交 %s 加载根树"
@@ -4646,39 +4660,39 @@
 
 #: mailinfo.c:1050
 msgid "quoted CRLF detected"
-msgstr "检测到引号中的换行符"
+msgstr "检测到被引用的 CRLF"
 
 #: mailinfo.c:1254 builtin/am.c:176 builtin/mailinfo.c:46
 #, c-format
 msgid "bad action '%s' for '%s'"
 msgstr "'%2$s' 的错误动作 '%1$s'"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
 msgstr "无法合并子模组 %s (没有检出)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "无法合并子模组 %s(提交不存在)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "无法合并子模组 %s (提交未跟随合并基线)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "注意:快进子模组 %s 到 %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "无法合并子模组 %s"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4687,7 +4701,7 @@
 "无法合并子模组 %s,但是存在一个可能的合并方案:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4703,7 +4717,7 @@
 "\n"
 "以接受此建议。\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4712,21 +4726,21 @@
 "无法合并子模组 %s,但是存在多个可能的合并:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "无法执行内部合并"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "不能添加 %s 至对象库"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "自动合并 %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4735,7 +4749,7 @@
 "冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %s,将以下路径放"
 "在:%s。"
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4744,7 +4758,7 @@
 "冲突(隐式目录重命名):无法映射一个以上路径到 %s,隐式目录重命名尝试将这些路"
 "径放置于此:%s"
 
-#: merge-ort.c:1634
+#: merge-ort.c:2087
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -4754,14 +4768,14 @@
 "冲突(分割的目录重命名):不清楚重命名 %s 到哪里,因为它被重命名到多个其他目"
 "录中,没有一个目标目录中包含多数文件。"
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
 "renamed."
 msgstr "警告:避免应用 %s -> %s 的重命名到 %s,因为 %s 本身已被重命名。"
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4769,7 +4783,7 @@
 msgstr ""
 "路径已更新:%s 添加到 %s,位于一个被重命名到 %s 的目录中,将其移动到 %s。"
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4778,7 +4792,7 @@
 "路径已更新:%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,将其移"
 "动到 %5$s。"
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4787,7 +4801,7 @@
 "冲突(文件位置):%s 添加到 %s,位于一个被重命名为 %s 的目录中,建议将其移动"
 "到 %s。"
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4796,13 +4810,13 @@
 "冲突(文件位置):%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,"
 "建议将其移动到 %5$s。"
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "冲突(重命名/重命名):%1$s 重命名为 %3$s 中的 %2$s,以及在 %5$s 中的 %4$s。"
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4812,60 +4826,64 @@
 "冲突(重命名卷入冲突):重命名 %s -> %s 有内容冲突并且和另外一个路径碰撞,这"
 "可能导致嵌套的冲突标签。"
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr "冲突(重命名/删除):%1$s 在 %3$s 中重命名为 %2$s,但在 %4$s 中删除。"
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "不能读取对象 %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "对象 %s 不是一个数据对象"
 
-#: merge-ort.c:2981
+#: merge-ort.c:3613
 #, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
 "%s instead."
 msgstr "冲突(文件/目录):目录已存在于 %2$s 中的 %1$s,将其移动到 %3$s。"
 
-#: merge-ort.c:3055
+#: merge-ort.c:3689
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
 "of them so each can be recorded somewhere."
-msgstr "冲突(不同类型):%s 在每一侧有不同的类型,把它们都重命名以便每个能记录在不同位置。"
+msgstr ""
+"冲突(不同类型):%s 在两侧有不同的类型,将两者都重命名以便它们能记录在不同位"
+"置。"
 
-#: merge-ort.c:3062
+#: merge-ort.c:3696
 #, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
 "of them so each can be recorded somewhere."
-msgstr "冲突(不同类型):%s 在每一侧有不同的类型,重命名它们中的一个以便每个被记录在不同位置。"
+msgstr ""
+"冲突(不同类型):%s 在两侧有不同的类型,将其中之一重命名以便它们能记录在不同"
+"位置。"
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "内容"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "添加/添加"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "子模组"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "冲突(%s):合并冲突于 %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -4874,22 +4892,22 @@
 "冲突(修改/删除):%1$s 在 %2$s 中被删除,在 %3$s 中被修改。%5$s 的 %4$s 版本"
 "在树中被保留。"
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
 "copy renamed to %s"
-msgstr "注意:%s 不是最新的,并且正在检出冲突的版本。旧副本重命名为 %s"
+msgstr "注意:%s 不是最新的,并且与要检出的版本冲突。旧副本重命名为 %s"
 
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "无法收集树 %s、%s、%s 的合并信息"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4898,103 +4916,103 @@
 "您对下列文件的本地修改将被合并操作覆盖:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "已经是最新的。"
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(坏提交)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr "add_cacheinfo 对路径 '%s' 执行失败,合并终止。"
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr "add_cacheinfo 无法刷新路径 '%s',合并终止。"
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "创建路径 '%s'%s 失败"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "删除 %s 以便为子目录留出空间\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ":可能是一个目录/文件冲突?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "拒绝丢弃 '%s' 中的未跟踪文件"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "不能读取对象 %s '%s'"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "%s '%s' 应为数据对象"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "打开 '%s' 失败:%s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "创建符号链接 '%s' 失败:%s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "不知道如何处理 %06o %s '%s'"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "子模组 %s 快进到如下提交:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "快进子模组 %s"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr "无法合并子模组 %s (没发现合并跟随的提交)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "无法合并子模组 %s(非快进)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "找到子模组的一个可能的合并方案:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "无法合并子模组 %s (发现多个合并)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr "错误:拒绝丢失未跟踪文件 '%s',而是写入 %s。"
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5003,7 +5021,7 @@
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本被保留。"
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5012,7 +5030,7 @@
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本被保留。"
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5021,7 +5039,7 @@
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本保留在 %8$s 中。"
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5030,40 +5048,40 @@
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本保留在 %9$s 中。"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "重命名"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "重命名"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "拒绝丢失脏文件 '%s'"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr "拒绝在 '%s' 处失去未跟踪文件,即使它存在于重命名中。"
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr "冲突(重命名/添加):在 %3$s 中重命名 %1$s->%2$s。在 %5$s 中添加 %4$s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s 是 %s 中的一个目录而以 %s 为名被添加"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr "拒绝丢失未跟踪文件 '%s',而是添加为 %s"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5072,18 +5090,18 @@
 "冲突(重命名/重命名):在分支 \"%3$s\" 中重命名 \"%1$s\"->\"%2$s\",在分支 "
 "\"%6$s\" 中重命名 \"%4$s\"->\"%5$s\"%7$s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr "(留下未解决)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "冲突(重命名/重命名):在 %3$s 中重命名 %1$s->%2$s,在 %6$s 中重命名 %4$s->"
 "%5$s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5093,7 +5111,7 @@
 "冲突(分割的目录重命名):不清楚 %s 应该放在哪里,因为目录 %s 被重命名到多个"
 "其它目录,没有目录包含大部分文件。"
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5102,78 +5120,78 @@
 "冲突(重命名/重命名):在 %3$s 中重命名目录 %1$s->%2$s,在 %6$s 中重命名目录 "
 "%4$s->%5$s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "修改"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "修改"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "略过 %s(已经做过相同合并)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "而是以 %s 为名添加"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "删除 %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "文件/目录"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "目录/文件"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr "冲突(%1$s):在 %3$s 中有一个名为 %2$s 的目录。以 %5$s 为名添加 %4$s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "添加 %s"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "冲突(add/add):合并冲突于 %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "无法合并树 %s 和 %s"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "合并:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "发现 %u 个共同祖先:"
 msgstr[1] "发现 %u 个共同祖先:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "合并未返回提交"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "不能解析对象 '%s'"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "不能写入索引。"
@@ -5182,8 +5200,8 @@
 msgid "failed to read the cache"
 msgstr "读取缓存失败"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "无法写新的索引文件"
@@ -5257,106 +5275,114 @@
 msgid "failed to locate object %d in packfile"
 msgstr "在包文件中定位对象 %d 失败"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "无法存储反向索引文件"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "忽略已存在的多包索引,校验码不匹配"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "添加包文件到多包索引"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "没有看到要丢弃的包文件 %s"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "未知的首选包:'%s'"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "首选包 '%s' 已过期"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "没有要索引的包文件。"
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "删除 %s 失败"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "清理位于 %s 的多包索引失败"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "多包索引文件存在,但无法解析"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "不正确的校验码"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "正在查找引用的包文件"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "对象 ID 扇出无序:fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "midx 不包含 oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "校验多包索引中的 OID 顺序"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "对象 ID 查询无序:oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "通过包文件为对象排序"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "校验对象偏移"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "为 oid[%d] = %s 加载包条目失败"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "为包文件 %s 加载包索引失败"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "oid[%d] = %s 错误的对象偏移:%<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "正在对引用对象计数"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "正在查找和删除未引用的包文件"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "不能开始 pack-objects"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "不能结束 pack-objects"
 
@@ -5373,7 +5399,7 @@
 #: name-hash.c:570
 #, c-format
 msgid "unable to join lazy_name thread: %s"
-msgstr "不能加入 lasy_name 线程:%s"
+msgstr "不能加入 lazy_name 线程:%s"
 
 #: notes-merge.c:277
 #, c-format
@@ -5419,265 +5445,266 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr "对象目录 %s 不存在,检查 .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "无法规范化备用对象路径:%s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s:忽略备用对象库,嵌套太深"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "无法规范化对象目录: %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "无法 fdopen 替换锁文件"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "无法读取替代文件"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "无法将新的替代文件移动到位"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "路径 '%s' 不存在"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "尚不支持将参考仓库 '%s' 作为一个链接检出。"
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "参考仓库 '%s' 不是一个本地仓库。"
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "参考仓库 '%s' 是一个浅克隆"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "参考仓库 '%s' 已被移植"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "解析备用引用时无效的行:%s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "尝试 mmap %<PRIuMAX>,超过了最大值 %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap 失败"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap 失败%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "对象文件 %s 为空"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "损坏的松散对象 '%s'"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "松散对象 '%s' 后面有垃圾数据"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "无效的对象类型"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "无法用 --allow-unknown-type 参数解开 %s 头信息"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "无法解开 %s 头部"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "无法用 --allow-unknown-type 参数解析 %s 头信息"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "无法解析 %s 头部"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "读取对象 %s 失败"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "找不到 %2$s 的替代 %1$s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "松散对象 %s(保存在 %s)已损坏"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "打包对象 %s(保存在 %s)已损坏"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "无法写文件 %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "无法为 '%s' 设置权限"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "文件写错误"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "关闭松散对象文件时出错"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr "权限不足,无法在仓库对象库 %s 中添加对象"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "无法创建临时文件"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "不能写松散对象文件"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "不能压缩新对象 %s(%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "在对象 %s 上调用 deflateEnd 失败(%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "被 %s 的不稳定对象源数据搞糊涂了"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "在 %s 上调用 utime() 失败"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "不能读取对象 %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "损坏的提交"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "损坏的标签"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "索引 %s 时读取错误"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "索引 %s 时读入不完整"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s:插入数据库失败"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s:不支持的文件类型"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s 不是一个有效的对象"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s 不是一个有效的 '%s' 对象"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "不能打开 %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "%s 的哈希值不匹配(预期 %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "不能 mmap %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "无法解压缩 %s 的头部"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "无法解析 %s 的头部"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "无法解压缩 %s 的内容"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "短对象ID %s 存在歧义"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "候选者有:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5698,22 +5725,22 @@
 "引用,可能需要删除它们。运行 \"git config advice.objectNameWarning\n"
 "false\" 命令关闭本消息通知。"
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "'%.*s' 的日志仅能回到 %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "'%.*s' 的日志仅有 %d 个条目"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "路径 '%s' 在磁盘上,但是不在 '%.*s' 中"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5722,12 +5749,12 @@
 "路径 '%s' 存在,而 '%s' 不存在\n"
 "提示:您的意思是 '%.*s:%s' 亦即 '%.*s:./%s'?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "路径 '%s' 不在 '%.*s' 中"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5736,7 +5763,7 @@
 "路径 '%s' 在索引中,但不在暂存区 %d 中\n"
 "提示:您的意思是 ':%d:%s'?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5745,21 +5772,21 @@
 "路径 '%s' 在索引中,但 '%s' 不在\n"
 "提示:您的意思是 ':%d:%s' 亦即 ':%d:./%s'?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "路径 '%s' 在磁盘上,但不在索引里"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "路径 '%s' 不存在(既不在磁盘上,也不在索引中)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "不能在工作区之外使用相对路径语法"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "无效的对象名 '%.*s'。"
@@ -5774,27 +5801,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "对象 %s 是一个 %s,不是一个 %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "对象 %s 有未知的类型 id %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "不能解析对象:%s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "哈希值与 %s 不匹配"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "无法得到 %s 的大小"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "无法得到 %s 的磁盘使用量"
@@ -5847,12 +5874,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "偏移量在包文件结束之前(损坏的 .idx?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "包文件 %s 不能被映射%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "偏移量在 %s 的包索引开始之前(损坏的索引?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "偏移量越过了 %s 的包索引的结尾(被截断的索引?)"
@@ -6054,8 +6086,8 @@
 msgstr "无法写 delim 包"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "无法写入无状态分隔符数据包"
+msgid "unable to write response end packet"
+msgstr "无法写入响应结束数据包"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6114,19 +6146,19 @@
 msgid "unable to parse --pretty format"
 msgstr "不能解析 --pretty 格式"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote:无法派生 fetch 子进程"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "promisor-remote:无法向 fetch 子进程写入"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr "promisor-remote:无法关闭至 fetch 子进程的标准输入"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "promisor 远程名称不能以 '/' 开始:%s"
@@ -6147,7 +6179,7 @@
 msgid "could not read `log` output"
 msgstr "不能读取 `log` 的输出"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "不能解析提交 '%s'"
@@ -6164,63 +6196,63 @@
 msgid "could not parse git header '%.*s'"
 msgstr "无法解析 git 头 '%.*s'"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "生成 diff 失败"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only 和 --right-only 互斥"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "不能解析 '%s' 的日志"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "将不会添加文件别名 '%s'('%s' 已经存在于索引中)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "不能在对象数据库中创建空的数据对象"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr "%s:只能添加常规文件、符号链接或 git 目录"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
 msgstr "'%s' 没有检出一个提交"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "无法索引文件 '%s'"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "无法在索引中添加 '%s'"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "无法对 %s 执行 stat"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' 看起来既是文件又是目录"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "刷新索引"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6229,7 +6261,7 @@
 "设置了 index.version,但是取值无效。\n"
 "使用版本 %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6238,144 +6270,144 @@
 "设置了 GIT_INDEX_VERSION,但是取值无效。\n"
 "使用版本 %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "坏的签名 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "坏的索引版本 %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "坏的索引文件 sha1 签名"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "索引使用不被支持的 %.4s 扩展"
 
 # 	
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "忽略 %.4s 扩展"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "未知的索引条目格式 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "索引中靠近路径 '%s' 有错误的名称字段"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "索引中有未排序的暂存条目"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "合并文件 '%s' 有多个暂存条目"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "'%s' 的未排序暂存条目"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "索引文件损坏"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "无法创建 load_cache_entries 线程:%s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "无法加入 load_cache_entries 线程:%s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s:打开索引文件失败"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s:不能对打开的索引执行 stat 操作"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s:索引文件比预期的小"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s:无法对索引文件执行 map 操作"
+msgid "%s: unable to map index file%s"
+msgstr "%s:无法映射索引文件%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "无法创建 load_index_extensions 线程:%s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "无法加入 load_index_extensions 线程:%s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "无法刷新共享索引 '%s'"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "损坏的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "不能关闭 '%s'"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "无法转换为稀疏索引"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "不能对 '%s' 调用 stat"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "不能打开 git 目录:%s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "无法删除:%s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "不能修复 '%s' 的权限位"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s:不能落到暂存区 #0"
@@ -6488,8 +6520,8 @@
 "然而,如果您删除全部内容,变基操作将会终止。\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "不能写入 '%s'"
@@ -6532,7 +6564,7 @@
 msgid "could not read '%s'."
 msgstr "不能读取 '%s'。"
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "丢失"
 
@@ -6551,247 +6583,247 @@
 msgid "ahead %d, behind %d"
 msgstr "领先 %d,落后 %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "期望的格式:%%(color:<颜色>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "未能识别的颜色:%%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "期望整数值 refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "期望整数值 refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "未能识别的 %%(%s) 参数:%s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) 不带参数"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "未能识别的 %%(objectsize) 参数:%s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) 不带参数"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) 不带参数"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "未能识别的 %%(subject) 参数:%s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "预期 %%(trailers:key=<值>)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "未知的 %%(trailers) 参数:%s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "期望一个正数 contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "未能识别的 %%(contents) 参数:%s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "期望 %%(%2$s) 中的 '%1$s' 是一个正数"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "未能识别 %%(%2$s) 中的参数 '%1$s'"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "未识别的邮件选项:%s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "期望的格式:%%(align:<宽度>,<位置>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "未能识别的位置:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "未能识别的宽度:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "未能识别的 %%(align) 参数:%s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "元素 %%(align) 需要一个正数的宽度"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "未能识别的 %%(if) 参数:%s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "格式错误的字段名:%.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "未知的字段名:%.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr "不是 git 仓库,但是字段 '%.*s' 需要访问对象数据"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(if) 元素而没有 %%(then) 元素"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(then) 元素而没有 %%(if) 元素"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "格式:%%(then) 元素用了多次"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "格式:%%(then) 元素用在了 %%(else) 之后"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(else) 元素而没有 %%(if) 元素"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(else) 元素而没有 %%(then) 元素"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "格式:%%(else) 元素用了多次"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "格式:使用了 %%(end) 元素却没有它的对应元素"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "错误的格式化字符串 %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(非分支,正变基 %s)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(非分支,正变基分离头指针 %s)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(非分支,二分查找开始于 %s)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(头指针在 %s 分离)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(头指针自 %s 分离)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(非分支)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "缺失 %2$s 的对象 %1$s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer 失败于 %2$s 的 %1$s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "格式错误的对象 '%s'"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "忽略带有错误名称 %s 的引用"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "忽略损坏的引用 %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "格式:缺少 %%(end) 元素"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "格式错误的对象名 %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "选项 `%s' 必须指向一个提交"
@@ -7241,8 +7273,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "为 '%s' 记录 preimage"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "不能创建目录 '%s'"
@@ -7280,38 +7312,38 @@
 msgid "could not determine HEAD revision"
 msgstr "不能确定 HEAD 版本"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "无法找到 %s 指向的树。"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "不再支持 --unpacked=<packfile>"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "您的当前分支好像被损坏"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "您的当前分支 '%s' 尚无任何提交"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L 尚不支持 -p 和 -s 之外的差异格式"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "不能打开 /dev/null"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "不能创建 async 线程:%s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7344,27 +7376,27 @@
 
 #: send-pack.c:455
 msgid "push negotiation failed; proceeding anyway with push"
-msgstr "推送协商失败;无论如何继续推送"
+msgstr "推送协商失败,但还是继续推送"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "接收端不支持这个仓库的哈希算法"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
-msgstr "接收端不支持签名推送"
+msgstr "接收端不支持签名推送(--signed)"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
-msgstr "未发送推送证书,因为接收端不支持签名推送"
+msgstr "未发送推送证书,因为接收端不支持签名推送(--signed)"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
-msgstr "接收端不支持原子推送"
+msgstr "接收端不支持原子推送(--atomic)"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "接收端不支持推送选项"
 
@@ -7423,7 +7455,7 @@
 msgstr "不能锁定 '%s'"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "不能写入 '%s'"
@@ -7434,7 +7466,7 @@
 msgstr "不能将换行符写入 '%s'"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "无法完成 '%s'"
@@ -7484,8 +7516,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "无法为 '%s' 的值去引号"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "无法打开 '%s' 进行读取"
@@ -7629,7 +7661,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s 不是一个提交!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "不能解析 HEAD 提交"
 
@@ -7637,7 +7669,7 @@
 msgid "unable to parse commit author"
 msgstr "不能解析提交作者"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree 无法写入树对象"
 
@@ -7655,12 +7687,13 @@
 msgid "corrupt author: missing date information"
 msgstr "损坏的作者:缺失日期信息"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "写提交对象失败"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "不能更新 %s"
@@ -7712,7 +7745,7 @@
 msgid "need a HEAD to fixup"
 msgstr "需要一个 HEAD 来修复"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "不能读取 HEAD"
 
@@ -7853,7 +7886,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "格式错误的选项清单:'%s'"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "提供了空的提交集"
 
@@ -7884,7 +7917,7 @@
 msgid "could not lock HEAD"
 msgstr "不能锁定 HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "拣选或还原操作并未进行"
 
@@ -7896,7 +7929,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "不能从尚未建立的分支终止"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "不能打开 '%s'"
@@ -7944,7 +7977,7 @@
 "您已经提交了么?\n"
 "试试 \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "不能读取 HEAD"
 
@@ -8028,90 +8061,90 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "非法的标签名称:'%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "写伪根提交"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "写入 squash-onto"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "无法解析 '%s'"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "没有当前版本不能合并"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "无法解析 '%.*s'"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "无可用合并:'%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "章鱼合并不能在一个新的根提交上执行"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "不能获取 '%s' 的提交说明"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "甚至不能尝试合并 '%.*s'"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "合并:无法写入新索引文件"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
-msgstr "无法 autostash"
+msgstr "无法自动贮藏"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
-msgstr "意外的 stash 响应:'%s'"
+msgstr "意外的贮藏响应:'%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "不能为 '%s' 创建目录"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
-msgstr "创建了 autostash:%s\n"
+msgstr "创建了自动贮藏:%s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
-msgstr "无法 reset --hard"
+msgstr "无法硬性重置(reset --hard)"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
-msgstr "已应用 autostash。\n"
+msgstr "已应用自动贮藏。\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "不能存储 %s"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8122,29 +8155,29 @@
 "您的修改在贮藏区中很安全。\n"
 "您可以在任何时候运行 \"git stash pop\" 或 \"git stash drop\"。\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "应用自动贮藏导致冲突。"
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "自动贮藏已经存在;正在创建一个新的贮藏条目。"
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "不能分离头指针"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "停止在 HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "停止在 %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8164,58 +8197,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "正在变基(%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "停止在 %s... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "未知命令 %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "不能读取 orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "不能读取 'onto'"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "不能更新 HEAD 为 %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "成功变基并更新 %s。\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "不能变基:您有未暂存的变更。"
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "不能修补不存在的提交"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "无效文件:'%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "无效内容:'%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8224,50 +8257,50 @@
 "\n"
 "您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "不能写入文件:'%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "不能删除 CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "不能提交暂存的修改。"
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s:不能拣选一个%s"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s:错误的版本"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "不能作为初始提交回退"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script:有未能处理的选项"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script:准备版本时错误"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "无事可做"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "无法跳过不必要的拣选"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "脚本已经重新编排。"
 
@@ -8316,92 +8349,96 @@
 msgid "unable to set up work tree using invalid config"
 msgstr "无法使用无效配置来创建工作区"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "该操作必须在一个工作区中运行"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "期望 git 仓库版本 <= %d,却得到 %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "发现未知的仓库扩展:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "发现未知的仓库扩展:"
+msgstr[1] "发现未知的仓库扩展:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "仓库的版本是 0,但是发现仅用于 v1 的扩展:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "仓库的版本是 0,但是发现仅用于 v1 的扩展:"
+msgstr[1] "仓库的版本是 0,但是发现仅用于 v1 的扩展:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "打开 '%s' 出错"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "文件太大,无法作为 .git 文件:'%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "读取 %s 出错"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "无效的 gitfile 格式:%s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "在 gitfile 中没有路径:%s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "不是 git 仓库:%s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' 太大"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "不是 git 仓库:'%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "不能切换目录到 '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "获取 '%*s%s%s' 状态(stat)失败"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "不能读取当前工作目录"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "不能切换到 '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "不是 git 仓库(或者任何父目录):%s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8410,7 +8447,7 @@
 "不是 git 仓库(或者直至挂载点 %s 的任何父目录)\n"
 "停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8419,27 +8456,27 @@
 "参数 core.sharedRepository 的文件属性值有问题(0%.3o)。\n"
 "文件属主必须始终拥有读写权限。"
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "不能打开或者复制 /dev/null"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "fork 失败"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "setsid 失败"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "尝试在没有 cone 模式下使用稀疏索引"
 
-#: sparse-index.c:156
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
 msgstr "不能更新缓存树,保持完整"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "索引条目是一个目录,但不是稀疏的 (%08x)"
@@ -8496,7 +8533,7 @@
 msgstr[0] "%u 字节/秒"
 msgstr[1] "%u 字节/秒"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8564,55 +8601,55 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "坏的 --ignore-submodules 参数:%s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr "提交 %s 中位于路径 '%s' 的子模组和同名的子模组冲突。 跳过它。"
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "子模组条目 '%s'(%s)是一个 %s,不是一个提交"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr "无法在子模组 %s 中执行 'git rev-list <提交> --not --remotes -n 1'"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "处理子模组 '%s' 失败"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "无法将 HEAD 解析为有效引用。"
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "正在推送子模组 '%s'\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "无法推送子模组 '%s'\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "正在获取子模组 %s%s\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "无法访问子模组 '%s'\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8621,77 +8658,77 @@
 "获取子模组时的错误:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "无法将 '%s' 识别为 git 仓库"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "无法在子模组 %s 中执行 'git status --porcelain=2'"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "在子模组 %s 中执行 'git status --porcelain=2' 失败"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中启动 'git status'"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中执行 'git status'"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "无法在子模组 '%s' 中取消 core.worktree 的设置"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "无法递归进子模组路径 '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "无法重置子模组索引"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "子模组 '%s' 中有脏索引"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "子模组 '%s' 无法被更新。"
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "子模组 git 目录 '%s' 位于 git 目录 '%.*s' 中"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "不支持对有多个工作区的子模组 '%s' 执行 relocate_gitdir"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "不能查询子模组 '%s' 的名称"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "禁止移动 '%s' 到现存 git 目录中"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8702,11 +8739,11 @@
 "'%s' 迁移至\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "无法在 .. 中启动 ls-files"
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree 返回未知返回值 %d"
@@ -8743,7 +8780,7 @@
 msgid "could not read input file '%s'"
 msgstr "不能读取输入文件 '%s'"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "不能自标准输入读取"
 
@@ -8831,7 +8868,7 @@
 msgid "invalid remote service path"
 msgstr "无效的远程服务路径"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "协议不支持该操作"
 
@@ -8840,7 +8877,7 @@
 msgid "can't connect to subservice %s"
 msgstr "不能连接到子服务 %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only 需要协议 v2"
 
@@ -8973,53 +9010,53 @@
 msgid "could not read bundle '%s'"
 msgstr "无法读取归档包 '%s'"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "传输:无效的深度选项 '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "查看 'git help config' 中的 protocol.version 获取更多信息"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "服务端选项需要版本 2 协议或更高"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "服务器不支持 wait-for-done"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "不能解析 transport.color.* 配置"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "协议 v2 的支持尚未实现"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "配置 '%s' 的取值未知:%s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "传输 '%s' 不允许"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "不再支持 git-over-rsync"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr "下列子模组路径所包含的修改在任何远程源中都找不到:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9046,11 +9083,11 @@
 "以推送至远程。\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "正在终止。"
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模组"
 
@@ -9311,11 +9348,11 @@
 "以下路径发生碰撞(如:在不区分大小写的文件系统上的区分大小写的路径),\n"
 "并且碰撞组中只有一个文件存在工作区中:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "正在更新索引标志"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr "工作树和未跟踪提交具有重复条目:%s"
@@ -9357,99 +9394,99 @@
 msgid "Fetching objects"
 msgstr "正在获取对象"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "读取 '%s' 失败"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作区的 '%s' 不是仓库目录"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "文件 '%s' 不包含工作区的绝对路径"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一个 .git 文件,错误码 %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 没有指回到 '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "不是一个目录"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git 不是一个文件"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ".git 文件损坏"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ".git 文件不正确"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "不是一个有效的路径"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "无法定位仓库,.git 不是一个文件"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "无法定位仓库,.git 文件没有指向一个仓库"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "无法定位仓库,.git 文件损坏"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "gitdir 不可读"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "gitdir 不正确"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "不是一个有效的目录"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "gitdir 文件不存在"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "无法读取 gitdir 文件(%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "无效的 gitdir 文件"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "gitdir 文件指向一个不存在的位置"
 
@@ -9502,11 +9539,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (使用 \"git rm <文件>...\" 标记解决方案)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "要提交的变更:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "尚未暂存以备提交的变更:"
 
@@ -9612,22 +9649,22 @@
 msgid "untracked content, "
 msgstr "未跟踪的内容, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "您的贮藏区当前有 %d 条记录"
 msgstr[1] "您的贮藏区当前有 %d 条记录"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "子模组已修改但尚未更新:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "要提交的子模组变更:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9635,7 +9672,7 @@
 "不要改动或删除上面的一行。\n"
 "其下所有内容都将被忽略。"
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9646,77 +9683,77 @@
 "花了 %.2f 秒才计算出分支的领先/落后范围。\n"
 "为避免,您可以使用 '--no-ahead-behind'。\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "您有尚未合并的路径。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (解决冲突并运行 \"git commit\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (使用 \"git merge --abort\" 终止合并)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "所有冲突已解决但您仍处于合并中。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (使用 \"git commit\" 结束合并)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "您正处于 am 操作过程中。"
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "当前的补丁为空。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (解决冲突,然后运行 \"git am --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (使用 \"git am --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (使用 \"git am --abort\" 恢复原有分支)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo 丢失。"
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "没有命令被执行。"
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "最后一条命令已完成(%d 条命令被执行):"
 msgstr[1] "最后的命令已完成(%d 条命令被执行):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (更多参见文件 %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "未剩下任何命令。"
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
@@ -9724,202 +9761,206 @@
 msgstr[1] "接下来要执行的命令(剩余 %d 条命令):"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (使用 \"git rebase --edit-todo\" 来查看和编辑)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作。"
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "您在执行变基操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (解决冲突,然后运行 \"git rebase --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (使用 \"git rebase --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (使用 \"git rebase --abort\" 以检出原有分支)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时拆分提交。"
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "您在执行变基操作时拆分提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (一旦您工作目录提交干净后,运行 \"git rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时编辑提交。"
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "您在执行变基操作时编辑提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (使用 \"git commit --amend\" 修补当前提交)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (当您对您的修改满意后执行 \"git rebase --continue\")"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "拣选操作正在进行中。"
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "您在执行拣选提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (解决冲突并运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (执行 \"git cherry-pick --continue\" 以继续)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (使用 \"git cherry-pick --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (使用 \"git cherry-pick --abort\" 以取消拣选操作)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
 msgstr "还原操作正在行中。"
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "您在执行反转提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (解决冲突并执行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (执行 \"git revert --continue\" 以继续)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (所有冲突已解决:执行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (使用 \"git revert --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (使用 \"git revert --abort\" 以取消反转提交操作)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "您在执行从分支 '%s' 开始的二分查找操作。"
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "您在执行二分查找操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 以回到原有分支)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "您处于一个稀疏检出中。"
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
-msgstr "您处于稀疏签出状态,包含 %d%% 的跟踪文件"
+msgstr "您处于稀疏检出状态,包含 %d%% 的跟踪文件"
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "位于分支 "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "交互式变基操作正在进行中;至 "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "变基操作正在进行中;至 "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "头指针分离于 "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "头指针分离自 "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "当前不在任何分支上。"
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "尚无提交"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "未跟踪的文件"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "忽略的文件"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9929,112 +9970,112 @@
 "耗费了 %.2f 秒以枚举未跟踪的文件。'status -uno' 也许能提高速度,\n"
 "但您需要小心不要忘了添加新文件(参见 'git help status')。"
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未跟踪的文件没有列出%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr "(使用 -u 参数显示未跟踪的文件)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "没有修改"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "修改尚未加入提交(使用 \"git add\" 和/或 \"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交为空,但是存在尚未跟踪的文件(使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交为空,但是存在尚未跟踪的文件\n"
 
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "无文件要提交(创建/拷贝文件并使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "无文件要提交\n"
 
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "无文件要提交(使用 -u 显示未跟踪的文件)\n"
 
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "无文件要提交,干净的工作区\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "尚无提交在 "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "不同"
 
 #  译者:注意保持句尾空格
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "落后 "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "领先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暂存的变更。"
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的变更。"
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的变更。"
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "无法发送 IPC 命令"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "无法读取 IPC 响应"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
-msgstr "无法启动  accept_thread '%s'"
+msgstr "无法启动 accept_thread '%s'"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "无法启动 '%s' 的 worker[0]"
@@ -10071,7 +10112,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "刷新索引之后尚未被暂存的变更:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "不能读取索引"
 
@@ -10106,8 +10147,8 @@
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路径根据您的一个 .gitignore 文件而被忽略:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "演习"
@@ -10116,7 +10157,7 @@
 msgid "interactive picking"
 msgstr "交互式拣选"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "交互式挑选数据块"
 
@@ -10244,13 +10285,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "参数 --chmod 取值 '%s' 必须是 -x 或 +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 与路径表达式参数不兼容"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
 
@@ -10269,105 +10310,105 @@
 "运行下面的命令来关闭本消息\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "不能解析作者脚本"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' 被 applypatch-msg 钩子删除"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "非法的输入行:'%s'。"
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "从 '%s' 拷贝注解到 '%s' 时失败"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "fseek 失败"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "无法解析补丁 '%s'"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "一次只能有一个 StGIT 补丁队列被应用"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "无效的时间戳"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "无效的日期行"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "无效的时区偏移值"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "补丁格式探测失败。"
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "创建目录 '%s' 失败"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "拆分补丁失败。"
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "当您解决这一问题,执行 \"%s --continue\"。"
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "如果您想要跳过这一补丁,则执行 \"%s --skip\"。"
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr "若要复原至原始分支并停止补丁操作,执行 \"%s --abort\"。"
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr "补丁使用 format=flowed 格式发送,行尾的空格可能会丢失。"
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "补丁为空。"
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "在提交 %s 中缺失作者行"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "无效的身份标识:%.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr "仓库缺乏必要的数据对象以进行三方合并。"
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "使用索引来重建一个(三方合并的)基础目录树..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10375,24 +10416,24 @@
 "您是否曾手动编辑过您的补丁?\n"
 "无法应用补丁到索引中的数据对象上。"
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "回落到基础版本上打补丁及进行三方合并..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "无法合并变更。"
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "正应用到一个空历史上"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "无法继续:%s 不存在。"
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "提交内容为:"
 
@@ -10400,39 +10441,39 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "应用?是[y]/否[n]/编辑[e]/查看补丁[v]/应用所有[a]:"
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "无法写入索引文件"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "脏索引:不能应用补丁(脏文件:%s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "应用:%.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "没有变更 —— 补丁已经应用过。"
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "打补丁失败于 %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr "用 'git am --show-current-patch=diff' 命令查看失败的补丁"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10442,7 +10483,7 @@
 "如果没有什么要添加到暂存区的,则很可能是其它提交已经引入了相同的变更。\n"
 "您也许想要跳过这个补丁。"
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10453,106 +10494,106 @@
 "您应该对已经冲突解决的每一个文件执行 'git add' 来标记已经完成。 \n"
 "你可以对 \"由他们删除\" 的文件执行 `git rm` 命令。"
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "不能解析对象 '%s'。"
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "清空索引失败"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr "您好像在上一次 'am' 失败后移动了 HEAD。未回退至 ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "无效的 --patch-format 值:%s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "无效的 --show-current-patch 值:%s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s 和 --show-current-patch=%s 不兼容"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<选项>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<选项>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "以交互式方式运行"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "老的参数 —— 无作用"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允许使用三方合并。"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "静默模式"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "在提交说明中添加 Signed-off-by 尾注"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "使用 utf8 字符集(默认)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "向 git-mailinfo 传递 -k 参数"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "向 git-mailinfo 传递 -b 参数"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "向 git-mailinfo 传递 -m 参数"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "针对 mbox 格式,向 git-mailsplit 传递 --keep-cr 参数"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr "不向 git-mailsplit 传递 --keep-cr 参数,覆盖 am.keepcr 的设置"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "丢弃裁切线前的所有内容"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "传递给 git-mailinfo"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "传递给 git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10561,67 +10602,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "格式"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "补丁的格式"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "打补丁失败时显示的错误信息"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "冲突解决后继续应用补丁"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "和 --continue 同义"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "跳过当前补丁"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "恢复原始分支并终止打补丁操作"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
 msgstr "终止补丁操作但保持 HEAD 不变"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "显示正在应用的补丁"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "将作者日期作为提交日期"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "用当前时间作为作者日期"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "使用 GPG 签名提交"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(内部使用,用于 git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10629,16 +10670,16 @@
 "参数 -b/--binary 已经很长时间不做任何实质操作了,并且将被移除。\n"
 "请不要再使用它了。"
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "读取索引失败"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "之前的变基目录 %s 仍然存在,但却提供了 mbox。"
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10647,11 +10688,11 @@
 "发现了错误的 %s 目录。\n"
 "使用 \"git am --abort\" 删除它。"
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "解决操作未进行,我们不会继续。"
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "交互式模式需要命令行上提供补丁"
 
@@ -10744,62 +10785,62 @@
 msgid "could not write to file '%s'"
 msgstr "不能写入文件 '%s'"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' 不是一个有效的术语"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "不能使用内置命令 '%s' 作为术语"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "不能修改术语 '%s' 的含义"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "请使用两个不同的术语"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "我们没有在二分查找。\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' 不是一个有效的提交"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
 msgstr "不能检出原始 HEAD '%s'。尝试 'git bisect reset <提交>'。"
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "坏的 bisect_write 参数:%s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "无法获取版本 '%s' 的对象 ID"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "无法打开文件 '%s'"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "无效的命令:您当前正处于一个 %s/%s 二分查找中"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10808,7 +10849,7 @@
 "您需要给我至少一个 %s 和一个 %s 版本。\n"
 "为此您可以用 \"git bisect %s\" 和 \"git bisect %s\"。"
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10819,7 +10860,7 @@
 "然后需要提供我至少一个 %s 和一个 %s 版本。\n"
 "为此您可以用 \"git bisect %s\" 和 \"git bisect %s\" 命令。"
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "在只有一个 %s 提交的情况下二分查找"
@@ -10828,22 +10869,22 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "您确认么[Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "未定义术语"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr "您当前针对旧状态的术语是 %s,对新状态的术语是 %s。\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10852,52 +10893,52 @@
 "命令 'git bisect terms' 的参数 %s 无效。\n"
 "支持的选项有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "版本遍历设置失败\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "无法打开 '%s' 进行追加"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' 不是一个有效的术语"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未识别的选项:'%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起来不是一个有效的版本"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "坏的 HEAD - 我需要一个 HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "检出 '%s' 失败。尝试 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "不会在做了 cg-seek 的树上做二分查找"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "坏的 HEAD - 奇怪的符号引用"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "无效的引用:'%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "您需要执行 \"git bisect start\" 来开始\n"
 
@@ -10905,104 +10946,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "您想让我为您这样做么[Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
 msgstr "请使用至少一个参数调用 `--bisect-state`"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' 只能带一个参数。"
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "坏的版本输入:%s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "坏的版本输入(不是提交):%s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "我们没有在二分查找。"
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "'%s'?? 您在说什么?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "不能读取文件 '%s' 来重放"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "清除二分查找状态"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "检查坏的或好的术语是否存在"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "打印二分查找术语"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "启动二分查找过程"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "查询下一个二分查找提交"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "标记引用的状态"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "列出到目前为止的二分查找步骤"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "从给定文件重放二分查找进程"
 
-#: builtin/bisect--helper.c:1070
+#: builtin/bisect--helper.c:1072
 msgid "skip some commits for checkout"
 msgstr "跳过要检出的一些提交"
 
-#: builtin/bisect--helper.c:1072
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 无日志"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 无需参数或者需要一个提交"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 个参数"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 个参数"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 需要 0 个参数"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log 需要 0 个参数"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "未提供日志文件"
 
@@ -11053,10 +11094,10 @@
 msgid "show work cost statistics"
 msgstr "显示工作消耗统计"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "强制显示进度报告"
 
@@ -11104,7 +11145,7 @@
 msgid "ignore whitespace differences"
 msgstr "忽略空白差异"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "版本"
 
@@ -11158,7 +11199,7 @@
 
 #: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
-msgstr "--progress 不能和 --incremental 或 --porcelain 同时使用"
+msgstr "--progress 不能和 --incremental 或机器内部格式一起使用"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -11688,19 +11729,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <文件> [<引用名>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "不显示进度表"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "显示进度表"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "在对象写入阶段显示进度表"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "当进度表显示时类似于 --all-progress"
 
@@ -11712,29 +11753,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "需要一个仓库来创建归档包。"
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "不显示归档包的细节"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s 可以\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "需要一个仓库来解开归档包。"
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "冗长输出;必须置于子命令之前"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "未知子命令:%s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11742,7 +11783,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <类型> | --textconv | --filters) [--path=<路径>] <对象>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11750,71 +11791,71 @@
 "git cat-file (--batch[=<格式>] | --batch-check[=<格式>]) [--follow-symlinks] "
 "[--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "只能指定一个批处理选项"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<类型> 可以是其中之一:blob、tree、commit、tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "显示对象类型"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "显示对象大小"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "当没有错误时退出并返回零"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "美观地打印对象的内容"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "对于数据对象,对其内容做文本转换"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "对于数据对象,对其内容做过滤"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "数据对象"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "对于 --textconv/--filters 使用一个特定的路径"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "允许 -s 和 -t 对损坏的对象生效"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "缓冲 --batch 的输出"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息和内容"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "跟随树内符号链接(和 --batch 或 --batch-check 共用)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "使用 --batch 或 --batch-check 参数显示所有对象"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "不要对 --batch-all-objects 的输出排序"
 
@@ -11842,8 +11883,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "输入和输出的记录使用 NUL 字符终结"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "不显示进度报告"
 
@@ -11901,9 +11942,11 @@
 msgstr "git checkout--worker [<选项>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "字符串"
 
@@ -11997,68 +12040,68 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "无法为 '%s' 添加合并结果"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "重新创建了 %d 个合并冲突"
 msgstr[1] "重新创建了 %d 个合并冲突"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "从 %2$s 更新了 %1$d 个路径"
 msgstr[1] "从 %2$s 更新了 %1$d 个路径"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "从索引区更新了 %d 个路径"
 msgstr[1] "从索引区更新了 %d 个路径"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' 不能在更新路径时使用"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' 不能和 %s 同时使用"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "不能同时更新路径并切换到分支'%s'。"
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "'%s' 或 '%s' 都没有指定"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "未指定 '%2$s' 时,必须使用 '%1$s'"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' 或 '%s' 不能和 %s 一起使用"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "路径 '%s' 未合并"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "您需要先解决当前索引的冲突"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12067,51 +12110,51 @@
 "不能继续,下列文件有暂存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能对 '%s' 执行 reflog 操作:%s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD 目前位于"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重置分支 '%s'\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已经位于 '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切换并重置分支 '%s'\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切换到一个新分支 '%s'\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切换到分支 '%s'\n"
 
 #  译者:注意保持前导空格
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 个。\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12132,7 +12175,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12159,19 +12202,19 @@
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "在版本遍历时遇到内部错误"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "您位于一个尚未初始化的分支"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12180,7 +12223,7 @@
 "'%s' 既可以是一个本地文件,也可以是一个跟踪分支。\n"
 "请使用 --(和可选的 --no-guess)来消除歧义"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12199,51 +12242,51 @@
 "如果您总是喜欢使用模糊的简短分支名 <名称>,而不喜欢如 'origin' 的远程\n"
 "名称,可以在配置中设置 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 匹配多个(%d 个)远程跟踪分支"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "只期望一个引用"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "应只有一个引用,却给出了 %d 个"
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一个树:%s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一个分支,得到标签 '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一个分支,得到远程分支 '%s'"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一个分支,得到 '%s'"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一个分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12251,7 +12294,7 @@
 "不能在合并时切换分支\n"
 "考虑使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12259,7 +12302,7 @@
 "不能在一个 am 会话期间切换分支\n"
 "考虑使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12267,7 +12310,7 @@
 "不能在变基时切换分支\n"
 "考虑使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12275,7 +12318,7 @@
 "不能在拣选时切换分支\n"
 "考虑使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12283,207 +12326,208 @@
 "不能在还原时切换分支\n"
 "考虑使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "您在执行二分查找时切换分支"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "路径不能和切换分支同时使用"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切换分支同时使用"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同时使用"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不带 <起始点>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切换分支到一个非提交 '%s'"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交参数"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支执行三方合并"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "风格"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "冲突输出风格(merge 或 diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "HEAD 从指定的提交分离"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "为新的分支设置上游信息"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
 msgstr "强制检出(丢弃本地修改)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "新的没有父提交的分支"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "更新忽略的文件(默认)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不检查指定的引用是否被其他工作区所占用"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
 msgstr "对尚未合并的文件检出我们的版本"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
 msgstr "对尚未合并的文件检出他们的版本"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "对路径不做稀疏检出的限制"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track 需要一个分支名"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名,尝试 -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "无法解析 %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "无效的路径规格"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一个提交,不能基于它创建分支 '%s'"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路径参数 '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 与 --detach 不兼容"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 与 --patch 不兼容"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 "git checkout:在从索引检出时,--ours/--theirs、--force 和 --merge 不兼容。"
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "您必须指定一个要恢复的路径"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
 msgstr "创建并检出一个新的分支"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
 msgstr "创建/重置并检出一个分支"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "为新的分支创建引用日志"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜测 'git checkout <无此分支>'(默认)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "使用叠加模式(默认)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "创建并切换一个新分支"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "创建/重置并切换一个分支"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜测 'git switch <无此分支>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "丢弃本地修改"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
 msgstr "要检出哪一个树"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "恢复索引"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "恢复工作区(默认)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "忽略未合并条目"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "使用叠加模式"
 
@@ -12518,7 +12562,7 @@
 msgid "could not lstat %s\n"
 msgstr "不能对 %s 调用 lstat\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12531,7 +12575,7 @@
 "foo        - 通过唯一前缀选择一个选项\n"
 "           - (空)什么也不选择\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12552,33 +12596,33 @@
 "*          - 选择所有选项\n"
 "           - (空)结束选择\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "嗯(%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "输入模版以排除条目>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "警告:无法找到和 %s 匹配的条目"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "选择要删除的条目"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "删除 %s [y/N]?"
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12596,66 +12640,66 @@
 "help                - 显示本帮助\n"
 "?                   - 显示如何在提示符下选择的帮助"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "将删除如下条目:"
 msgstr[1] "将删除如下条目:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "没有要清理的文件,退出。"
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "不打印删除文件的名称"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "强制"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "交互式清除"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "删除整个目录"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "模式"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "添加 <模式> 到忽略规则"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "也删除忽略的文件"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "只删除忽略的文件"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
 msgstr ""
 "clean.requireForce 设置为 true 且未提供 -i、-n 或 -f 选项,拒绝执行清理动作"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr ""
 "clean.requireForce 默认为 true 且未提供 -i、-n 或 -f 选项,拒绝执行清理动作"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x 和 -X 不能同时使用"
 
@@ -12671,7 +12715,7 @@
 msgid "don't create a checkout"
 msgstr "不创建一个检出"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "创建一个纯仓库"
 
@@ -12703,26 +12747,26 @@
 msgid "number of submodules cloned in parallel"
 msgstr "并发克隆的子模组的数量"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "模板目录"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "模板目录将被使用"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "参考仓库"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "仅在克隆时参考 --reference 指向的本地仓库"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "名称"
@@ -12739,7 +12783,7 @@
 msgid "path to git-upload-pack on the remote"
 msgstr "远程 git-upload-pack 路径"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "深度"
@@ -12748,7 +12792,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "时间"
@@ -12766,8 +12810,8 @@
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "深化浅克隆的历史,除了特定版本"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "只克隆一个分支、HEAD 或 --branch"
 
@@ -12779,11 +12823,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "子模组将以浅下载模式克隆"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "git目录"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "git目录和工作区分离"
 
@@ -12796,22 +12840,22 @@
 msgstr "在新仓库中设置配置信息"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "server-specific"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "传输选项"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "只使用 IPv4 地址"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "只使用 IPv6 地址"
 
@@ -12910,7 +12954,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "无法删除临时的 alternates 文件"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "太多参数。"
 
@@ -12932,7 +12976,7 @@
 msgid "repository '%s' does not exist"
 msgstr "仓库 '%s' 不存在"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一个正数"
@@ -12953,7 +12997,7 @@
 msgstr "工作区 '%s' 已经存在。"
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能为 '%s' 创建先导目录"
@@ -13008,12 +13052,16 @@
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "远程传输报告错误"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "远程分支 %s 在上游 %s 未发现"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
 msgstr "您似乎克隆了一个空仓库。"
 
@@ -13072,7 +13120,7 @@
 msgstr "无法找到和 %s 匹配的对象目录"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "目录"
 
@@ -13166,7 +13214,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "忽略重复的父提交 %s"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "不是一个有效的对象名 %s"
@@ -13194,13 +13242,13 @@
 msgid "id of a parent commit object"
 msgstr "父提交对象 ID"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "说明"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "提交说明"
 
@@ -13208,7 +13256,7 @@
 msgid "read commit log message from file"
 msgstr "从文件中读取提交说明"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG 提交签名"
@@ -13353,7 +13401,7 @@
 "in the current commit message"
 msgstr "无法选择一个未被当前提交说明使用的注释字符"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "不能查询提交 %s"
@@ -13389,7 +13437,42 @@
 msgid "could not write commit template"
 msgstr "不能写提交模版"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr "请为您的变更输入提交说明。以 '%c' 开始的行将被忽略。\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"请为您的变更输入提交说明。以 '%c' 开始的行将被忽略,而一个空的提交\n"
+"说明将会终止提交。\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"请为您的变更输入提交说明。以 '%c' 开始的行将被保留,如果您愿意\n"
+"也可以删除它们。\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"请为您的变更输入提交说明。以 '%c' 开始的行将被保留,如果您愿意\n"
+"也可以删除它们。一个空的提交说明将会终止提交。\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13402,7 +13485,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "然后重试。\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13415,393 +13498,375 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "然后重试。\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"请为您的变更输入提交说明。以 '%c' 开始的行将被忽略,而一个空的提交\n"
-"说明将会终止提交。\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"请为您的变更输入提交说明。以 '%c' 开始的行将被保留,如果您原意\n"
-"也可以删除它们。一个空的提交说明将会终止提交。\n"
-
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%s作者:  %.*s <%.*s>"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%s日期:  %s"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%s提交者:%.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "无法读取索引"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "无法将尾注传递给 --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "无法创建树对象"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "请使用 -m 或 -F 选项提供提交说明。\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr "--author '%s' 不是 '姓名 <邮箱>' 格式,且未能在现有作者中找到匹配"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "无效的忽略模式 '%s'"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "无效的未追踪文件参数 '%s'"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long 和 -z 选项不兼容"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "您正处于一个合并过程中 -- 无法改写说明。"
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "您正处于一个拣选过程中 -- 无法改写说明。"
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
-msgstr "不能将 --fixup 的 reword 选项和路径 '%s' 组合使用"
+msgstr "不能将 --fixup 的改写说明选项和路径 '%s' 组合使用"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
-msgstr "--fixup 的 reword 选项和 --patch/--interactive/--all/--include/--only 互斥"
+msgstr ""
+"--fixup 的 reword 选项和 --patch/--interactive/--all/--include/--only 互斥"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "同时使用 --reset-author 和 --author 没有意义"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "您没有可修补的提交。"
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "您正处于一个合并过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "您正处于一个拣选过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "您正处于一个变基过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "选项 --squash 和 --fixup 不能同时使用"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "只能用一个 -c/-C/-F/--fixup 选项。"
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "选项 -m 不能和 -c/-C/-F 同时使用。"
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author 只能和 -C、-c 或 --amend 同时使用。"
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr "只能用一个 --include/--only/--all/--interactive/--patch 选项。"
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "未知选项:--fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "路径  '%s ...' 和 -a 选项同时使用没有意义"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "以简洁的格式显示状态"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "显示分支信息"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "显示贮藏区信息"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "计算完整的领先/落后值"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "版本"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "机器可读的输出"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "以长格式显示状态(默认)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "条目以 NUL 字符结尾"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "模式"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "显示未跟踪的文件,“模式”的可选参数:all、normal、no。(默认:all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
 "显示已忽略的文件,可选模式:traditional、matching、no。(默认:traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "何时"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 "忽略子模组的更改,“何时”的可选参数:all、dirty、untracked。(默认:all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "以列的方式显示未跟踪的文件"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "不检测重命名"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "检测重命名,可以设置索引相似度"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "不支持已忽略和未跟踪文件参数的组合"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "提交成功后不显示概述信息"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "在提交说明模板里显示差异"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "提交说明选项"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "从文件中读取提交说明"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "作者"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "提交时覆盖作者"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "日期"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "提交时覆盖日期"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "提交"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "重用并编辑指定提交的提交说明"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "重用指定提交的提交说明"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]提交"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr "使用自动挤压格式的提交说明对指定的提交进行修正、修补或改写说明"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "使用自动挤压格式的提交说明用以挤压至指定的提交"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "尾注"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "添加自定义尾注"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "添加 Signed-off-by 尾注"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "使用指定的模板文件"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "强制编辑提交"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "在提交说明模板里包含状态信息"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "提交内容选项"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "提交所有改动的文件"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "添加指定的文件到索引区等待提交"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "交互式添加文件"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "交互式添加变更"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "只提交指定的文件"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "绕过 pre-commit 和 commit-msg 钩子"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "显示将要提交的内容"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "修改先前的提交"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "绕过 post-rewrite 钩子"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "允许一个空提交"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "允许空的提交说明"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "损坏的 MERGE_HEAD 文件(%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "不能读取 MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "不能读取提交说明:%s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "终止提交因为提交说明为空。\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "终止提交;您未更改来自模版的提交说明。\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
-msgstr "终止提交因为提交说明的正文为空。\n"
+msgstr "因提交说明的正文为空而终止提交。\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14429,65 +14494,65 @@
 msgid "you may want to cleanup or recover these."
 msgstr "您可能想要清理或者恢复它们。"
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "使用 `diff.guitool` 代替 `diff.tool`"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "执行一个全目录差异比较"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "启动差异比较工具之前不提示"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "在 dir-diff 模式中使用符号链接"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "工具"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "使用指定的差异比较工具"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "显示可以用在 `--tool` 参数后的差异工具列表"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr "当执行 diff 工具返回非零退出码时,使 'git-difftool' 退出"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "指定一个用于查看差异的自定义命令"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "传递给 `diff`"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool 要求工作区或者 --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff 和 --no-index 不兼容"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui、--tool 和 --extcmd 互斥"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "没有为 --tool=<工具> 参数提供 <工具>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "没有为 --extcmd=<命令> 参数提供 <命令>"
 
@@ -14510,14 +14575,14 @@
 #: builtin/env--helper.c:67
 #, c-format
 msgid "option `--default' expects a boolean value with `--type=bool`, not `%s`"
-msgstr "选项 `--default' 和 `type=bool` 期望一个布尔值,不是 `%s`"
+msgstr "选项 `--default' 和 `--type=bool` 期望一个布尔值,不是 `%s`"
 
 #: builtin/env--helper.c:82
 #, c-format
 msgid ""
 "option `--default' expects an unsigned long value with `--type=ulong`, not `"
 "%s`"
-msgstr "选项 `--default' 和 `type=ulong` 期望一个无符号长整型,不是 `%s`"
+msgstr "选项 `--default' 和 `--type=ulong` 期望一个无符号长整型,不是 `%s`"
 
 #: builtin/fast-export.c:29
 msgid "git fast-export [rev-list-opts]"
@@ -14575,7 +14640,7 @@
 msgid "skip output of blob data"
 msgstr "跳过数据对象的输出"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "引用规格"
 
@@ -14888,8 +14953,8 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "拒绝 %s 因为浅克隆不允许被更新"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "拒绝 %s 因为浅克隆的根不允许被更新"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -14989,58 +15054,62 @@
 msgid "You need to specify a tag name."
 msgstr "您需要指定一个标签名称。"
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only 需要一个或多个 --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支持负数深度"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同时使用"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "对于一个完整的仓库,参数 --unshallow 没有意义"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能带一个仓库参数"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 带引用规格没有任何意义"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "没有这样的远程或远程组:%s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "获取组并指定引用规格没有意义"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "在使用 --negotiate-only 时必须提供远程仓库"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "协议不支持 --negotiate-only,退出。"
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
-msgstr "只可以将 --filter 用于在 extensions.partialClone 中配置的远程仓库"
+msgstr "只可以将 --filter 用于在 extensions.partialclone 中配置的远程仓库"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
 msgstr "--atomic 仅在从一个远程仓库获取的时候可用"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin 仅在从一个远程仓库获取的时候可用"
 
@@ -15133,19 +15202,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<配置> <命令参数>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "配置"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "存储着仓库路径列表的配置项键名"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "缺少 --config=<配置>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "未知"
 
@@ -15161,16 +15230,16 @@
 msgid "warning in %s %s: %s"
 msgstr "%s %s 警告:%s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "来自 %7s %s 的损坏的链接"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "链接中错误的对象类型"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15179,211 +15248,211 @@
 "损坏的链接来自于 %7s %s\n"
 "              到 %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "缺失 %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "不可达 %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "悬空 %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "不能创建 lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "不能完成 '%s'"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "正在检查 %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "正在检查连通性(%d 个对象)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "正在检查 %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "损坏的链接"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "根 %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "标记 %s %s (%s) 于 %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s:对象损坏或丢失"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s:无效的引用日志条目 %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "正在检查引用日志 %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s:无效的 sha1 指针 %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s:不是一个提交"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "注意:无默认引用"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s:对象损坏或丢失:%s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s:不能解析对象:%s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "坏的 sha1 文件:%s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "正在检查对象目录"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "正在检查对象目录"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "正在检查 %s 链接"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "无效的 %s"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s 指向奇怪的东西(%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s:分离头指针的指向不存在"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "注意:%s 指向一个尚未诞生的分支(%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "正在检查缓存树"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s:cache-tree 中无效的 sha1 指针"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "cache-tree 中非树对象"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<选项>] [<对象>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "显示不可达的对象"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "显示悬空的对象"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "报告标签"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "报告根节点"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "将索引亦作为检查的头节点"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "将引用日志作为检查的头节点(默认)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "也考虑包和备用对象"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "仅检查连通性"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "启用更严格的检查"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "将悬空对象写入 .git/lost-found 中"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "显示进度"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "显示可达对象的详细名称"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "正在检查对象"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s:对象缺失"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "无效的参数:期望 sha1,得到 '%s'"
@@ -15661,8 +15730,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "没有线程支持,忽略 %s"
@@ -15677,242 +15746,242 @@
 msgid "unable to grep from object of type %s"
 msgstr "无法抓取来自于 %s 类型的对象"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "开关 `%c' 期望一个数字值"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "在索引区搜索而不是在工作区"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "在未被 git 管理的内容中查找"
 
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "在跟踪和未跟踪的文件中搜索"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "忽略 '.gitignore' 包含的文件"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "在每一个子模组中递归搜索"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "显示未匹配的行"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "不区分大小写匹配"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "只在单词边界匹配模式"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "把二进制文件当做文本处理"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "不在二进制文件中匹配模式"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "用 textconv 过滤器处理二进制文件"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "在子目录中寻找(默认)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "最多以指定的深度向下寻找"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "使用扩展的 POSIX 正则表达式"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "使用基本的 POSIX 正则表达式(默认)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "把模式解析为固定的字符串"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "使用 Perl 兼容的正则表达式"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "显示行号"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "显示第一个匹配的列号"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "不显示文件名"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "显示文件名"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "显示相对于顶级目录的文件名"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "只显示文件名而不显示匹配的行"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "和 --files-with-matches 同义"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "只显示未匹配的文件名"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "在文件名后输出 NUL 字符"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "只显示行中的匹配的部分"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "显示总匹配行数,而不显示匹配的行"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "高亮显示匹配项"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "在不同文件的匹配项之间打印空行"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr "只在同一文件的匹配项的上面显示一次文件名"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "显示匹配项前后的 <n> 行上下文"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "显示匹配项前 <n> 行上下文"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "显示匹配项后 <n> 行上下文"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "使用 <n> 个工作线程"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "快捷键 -C 数字"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "在匹配的前面显示一行函数名"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "显示所在函数的前后内容"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "从文件读取模式"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "匹配 <模式>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "组合用 -e 参数设定的模式"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "不输出,而用退出码标识命中状态"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr "只显示匹配所有模式的文件中的匹配"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "分页"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "分页显示匹配的文件"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "允许调用 grep(1)(本次构建忽略)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "未提供匹配模式"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index 或 --untracked 不能和版本同时使用"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "不能解析版本:%s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked 不支持和 --recurse-submodules 共用"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "无效的选项组合,忽略 --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "没有线程支持,忽略 --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的线程数无效(%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager 仅用于工作区"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached 或 --untracked 不能与 --no-index 同时使用"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked 不能与 --cached 同时使用"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard 不能用于已跟踪内容"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "同时给出了 --cached 和树对象"
 
@@ -16035,30 +16104,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s':未知的 man 查看器。"
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "没有 man 查看器处理此请求"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "没有 info 查看器处理此请求"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' 是 '%s' 的别名"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "坏的 alias.%s 字符串:%s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "用法:%s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' 获取更多信息"
 
@@ -16096,7 +16165,7 @@
 msgid "used more bytes than were available"
 msgstr "用掉了超过可用的字节"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超过了当前 off_t 的定义"
 
@@ -16123,238 +16192,238 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "不支持包版本 %<PRIu32>"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "包中有错误的对象位于偏移量 %<PRIuMAX>:%s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "解压缩返回 %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "偏移值覆盖了 delta 基准对象"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "delta 基准偏移越界"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "未知对象类型 %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "无法读取包文件"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "包文件过早结束,缺少 %<PRIuMAX> 字节"
 msgstr[1] "包文件过早结束,缺少 %<PRIuMAX> 字节"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "解压缩严重的不一致"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "发现 %s 出现 SHA1 冲突!"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "不能读 %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "不能读取现存对象信息 %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "不能读取现存对象 %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "无效的数据对象 %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "对打包对象 fsck 检查出错"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "%s 的所有子对象并非都可达"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "应用 delta 失败"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "接收对象中"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "索引对象中"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "包冲突(SHA1 不匹配)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "不能对包文件调用 fstat"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "包的结尾有垃圾数据"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "parse_pack_objects() 中遇到不可理喻的问题"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "处理 delta 中"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能创建线程:%s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "不可理喻"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "完成 %d 个本地对象"
 msgstr[1] "完成 %d 个本地对象"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "对 %s 的尾部校验出现意外(磁盘损坏?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "包有 %d 个未解决的 delta"
 msgstr[1] "包有 %d 个未解决的 delta"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "不能压缩附加对象(%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "本地对象 %s 已损坏"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "包文件名 '%s' 没有以 '.%s' 结尾"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "无法写入 %s 文件 '%s'"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "无法关闭已写入的 %s 文件 '%s'"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "关闭包文件时出错"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "无法存储包文件"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "无法存储索引文件"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "坏的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "无法打开现存包文件 '%s'"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "无法为 %s 打开包索引文件"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "非 delta:%d 个对象"
 msgstr[1] "非 delta:%d 个对象"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "链长 = %d: %lu 对象"
 msgstr[1] "链长 = %d: %lu 对象"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "错误选项 %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "未知的哈希算法 '%s'"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要 git 仓库"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify 没有提供包文件名参数"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "在打包对象中 fsck 检查出错"
 
@@ -16398,56 +16467,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "没有从 '%s' 复制模版:%s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "无效的初始分支名:'%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "不能处理 %d 类型的文件"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "不能移动 %s 至 %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "尝试用不同的哈希算法重新初始化仓库"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s 已经存在"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init:已忽略 --initial-branch=%s"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "重新初始化已存在的共享 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
-msgstr "重新初始化已存在的 Git 仓库于 %s%s\n"
+msgstr "已重新初始化已存在的 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "已初始化空的共享 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "已初始化空的 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16455,53 +16524,53 @@
 "git init [-q | --quiet] [--bare] [--template=<模板目录>] [--shared[=<权限>]] "
 "[<目录>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "权限"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "指定 git 仓库是多个用户之间共享的"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "覆盖初始分支名称"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "指定要使用的哈希算法"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir 和 --bare 是互斥的"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "不能创建目录 %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "不能切换目录到 %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr "不允许 %s(或 --work-tree=<目录>)而没有指定 %s(或 --git-dir=<目录>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "不能访问工作区 '%s'"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir 不能用于纯仓库"
 
@@ -16608,85 +16677,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<范围>:<文件> 不能和路径表达式共用"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "最终输出:%d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: 损坏的文件"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "不能读取对象 %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "未知类型:%d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s:从描述生成附函的模式无效"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers 没有值"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "无法打开补丁文件 %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "只需要一个范围"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "不是一个范围"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "附函需要邮件地址格式"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "无法创建附函文件"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "不正常的 in-reply-to:%s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<选项>] [<从> | <版本范围>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "两个输出目录?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "未知提交 %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "无法将 '%s' 解析为一个有效引用"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "不能找到准确的合并基线"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16696,288 +16765,288 @@
 "git branch --set-upstream-to 来跟踪一个远程分支。或者你可以通过\n"
 "参数 --base=<基线提交> 手动指定一个基线提交"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "无法找到准确的合并基线"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "基线提交应该是版本列表的祖先"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "基线提交不应该出现在版本列表中"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "无法得到补丁 id"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "无法推断当前系列的 range-diff 起始"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "使用 '%s' 作为当前系列的 range-diff 源"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "使用 [PATCH n/m],即使只有一个补丁"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "使用 [PATCH],即使有多个补丁"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "打印补丁到标准输出"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "生成一封附函"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "使用简单的数字序列作为输出文件名"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "后缀"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "使用 <后缀> 代替 '.patch'"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "补丁以 <n> 开始编号,而不是1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "重制-计数"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "标记补丁系列是第几次重制"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "输出文件名的最大长度"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "使用 [RFC PATCH] 代替 [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "从分支描述获取附函的模式"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "基于一个分支描述生成部分附函"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "使用 [<前缀>] 代替 [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "把结果文件存储在 <目录>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "不删除/添加 [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "不输出二进制差异"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "在 From 头信息中输出全为零的哈希值"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "不包含已在上游提交中的补丁"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "显示纯补丁格式而非默认的(补丁+状态)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "邮件发送"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "header"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "添加邮件头"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "邮件地址"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "添加收件人"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "添加抄送"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "标识"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "将 From 地址设置为 <标识>(如若不提供,则用提交者 ID 做为地址)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "邮件标识"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "使第一封邮件作为对 <邮件标识> 的回复"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "边界"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "附件方式添加补丁"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "内联显示补丁"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "启用邮件线索,风格:浅,深"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "签名"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "添加一个签名"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "基线提交"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "为补丁列表添加前置树信息"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "从文件添加一个签名"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "不要打印补丁文件名"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "在生成补丁时显示进度"
 
-#: builtin/log.c:1821
-msgid "show changes against <rev> in cover letter or single patch"
-msgstr "在附函或单个补丁中显示和 <rev> 的差异"
-
 #: builtin/log.c:1824
-msgid "show changes against <refspec> in cover letter or single patch"
-msgstr "在附函或单个补丁中显示和 <refspec> 的差异"
+msgid "show changes against <rev> in cover letter or single patch"
+msgstr "在附函或单个补丁中显示和 <版本> 的差异"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1827
+msgid "show changes against <refspec> in cover letter or single patch"
+msgstr "在附函或单个补丁中显示和 <引用规格> 的差异"
+
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "创建权重的百分比"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "包含无效的身份标识:%s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n 和 -k 互斥"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc 和 -k 互斥"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only 无意义"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status 无意义"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check 无意义"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout、--output 和 --output-directory 是互斥的"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff 需要 --cover-letter 或单一补丁"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "版本间差异:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "对 v%d 的版本差异:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor 需要 --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff 需要 --cover-letter 或单一补丁"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "范围差异:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "对 v%d 的范围差异:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "无法读取签名文件 '%s'"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "生成补丁"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "无法创建输出文件"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<上游> [<头> [<限制>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17184,7 +17253,7 @@
 
 #: builtin/mailinfo.c:60
 msgid "keep non patch brackets in subject"
-msgstr "在标题保持无补丁括号标注"
+msgstr "在主题中保持无补丁括号标注"
 
 #: builtin/mailinfo.c:62
 msgid "copy Message-ID to the end of commit message"
@@ -17216,11 +17285,11 @@
 
 #: builtin/mailinfo.c:74
 msgid "action when quoted CR is found"
-msgstr "找到引用的 CR 时的操作"
+msgstr "找到引号中的 CR 时的操作"
 
 #: builtin/mailinfo.c:77
 msgid "use headers in message's body"
-msgstr "在消息正文中使用标题"
+msgstr "在消息正文中使用标头"
 
 #: builtin/mailsplit.c:241
 #, c-format
@@ -17342,14 +17411,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<选项>] [<提交>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "开关 `m' 需要一个值"
@@ -17492,36 +17553,36 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' 没有指向一个提交"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "坏的 branch.%s.mergeoptions 字符串:%s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "未处理两个头合并之外的任何操作。"
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive 的未知选项:-X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "不能写 %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "不能从 '%s' 读取"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "未提交合并,使用 'git commit' 完成此次合并。\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17531,83 +17592,83 @@
 "合并到主题分支。\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "空的提交说明会终止提交。\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr "以 '%c' 开始的行将被忽略,而空的提交说明将终止提交。\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "空提交信息。"
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "太棒了。\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "自动合并失败,修正冲突然后提交修正的结果。\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "没有当前分支。"
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "当前分支没有对应的远程仓库。"
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "当前分支没有定义默认的上游分支。"
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "对于 %s 没有来自 %s 的远程跟踪分支"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "环境 '%2$s' 中存在坏的取值 '%1$s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "不能在 %s 中合并:%s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "不能合并"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort 不带参数"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "没有要终止的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit 不带参数"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue 不带参数"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "没有进行中的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17615,7 +17676,7 @@
 "您尚未结束您的合并(存在 MERGE_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17623,88 +17684,88 @@
 "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。"
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "您不能将 --squash 和 --no-ff 组合使用。"
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "您不能将 --squash 和 --commit 组合使用。"
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "未指定提交并且 merge.defaultToUpstream 未设置。"
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "尚不支持到空分支的压缩提交"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "到空分支的非快进式提交没有意义"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 不能被合并"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "只能将一个提交合并到空分支上"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "拒绝合并无关的历史"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "更新 %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "尝试非常小的索引内合并...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "无。\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "无法快进,终止。"
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "将树回滚至原始状态...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "尝试合并策略 %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "没有合并策略处理此合并。\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "使用策略 %s 合并失败。\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "使用 %s 以准备手工解决。\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "使用 %s 策略以准备手工解决。\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "自动合并进展顺利,按要求在提交前停止\n"
@@ -17726,7 +17787,7 @@
 #: builtin/mktag.c:41
 #, c-format
 msgid "%d (FSCK_IGNORE?) should never trigger this callback"
-msgstr "%d(忽略 FSCK?)不应该触发这个调用"
+msgstr "%d (FSCK_IGNORE?) 永远不应该触发这个回调"
 
 #: builtin/mktag.c:56
 #, c-format
@@ -17800,7 +17861,7 @@
 "larger than this size"
 msgstr "在 repack 期间,将较小尺寸的包文件收集到大于此大小的批次中"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "未识别的子命令:%s"
@@ -18329,7 +18390,7 @@
 msgid "read object names from the standard input"
 msgstr "从标准输入读取对象名称"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "不删除,只显示"
 
@@ -18345,22 +18406,22 @@
 msgid "use notes from <notes-ref>"
 msgstr "从 <注解引用> 使用注解"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "未知子命令:%s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects --stdout [<选项>...] [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<选项>...] <前缀名称> [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18368,106 +18429,106 @@
 msgstr ""
 "write_reuse_object:无法定位 %1$s,预期在包 %3$s 中的偏移量 %2$<PRIuMAX> 上"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 错的包对象 CRC"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 损坏的包对象"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "发现对象 %s 递归 delta"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 个对象,预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "预期对象在包文件 %2$s 的偏移量 %1$<PRIuMAX> 上"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "禁用 bitmap 写入,因为 pack.packSizeLimit 设置使得包被切分为多个"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "写入对象中"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "对 %s 调用 stat 失败"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "写入 %<PRIu32> 个对象而预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "禁用 bitmap 写入,因为一些对象将不会被打包"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 压缩中 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "对象计数中"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "无法解析对象 %s 头信息"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "对象 %s 无法读取"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "对象 %s 不一致的对象长度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "次优(suboptimal)打包 - 内存不足"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 个线程进行压缩"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "无法为标签 %s 压缩对象"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "压缩对象中"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "不一致的差异计数"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18476,23 +18537,23 @@
 "uploadpack.blobpackfileuri 的取值必须是 '<object-hash> <pack-hash> <uri>' 格"
 "式(得到 '%s')"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr "对象已经在另外的 uploadpack.blobpackfileuri 中配置(得到 '%s')"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "无法获得包 %2$s 中对象 %1$s 的类型"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "不能找到包 '%s'"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18501,7 +18562,7 @@
 "预期边界对象(edge object)ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18510,246 +18571,246 @@
 "预期对象 ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "选项 --missing 的值无效"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "无法打开包文件索引"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "无法检查 %s 处的松散对象"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "无法强制松散对象"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一个版本 '%s'"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "坏的版本 '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "无法添加最近的对象"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支持的索引版本 %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "坏的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<偏移>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本来写包索引文件"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "每个输出包的最大尺寸"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略从备用对象存储里借用对象"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "忽略包对象"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "限制打包窗口的对象数"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除对象数量限制外设置打包窗口的内存限制"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允许的 delta 链的最大长度"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "重用已存在的对象"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 对象"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "使用线程查询最佳 delta 匹配"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "不创建空的包输出"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "从标准输入读取版本号参数"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的对象"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "包括可以从任何引用访问到的对象"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日志引用到的对象"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的对象"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "从标准输入读取包"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "输出包到标准输出"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包对象的标签对象"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "维持不可达的对象"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "打包松散的不可达对象"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "将比给定 <时间> 新的无法访问的对象解包"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可达性算法"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "创建精简包"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "创建适合浅克隆仓库获取的包"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 文件的包"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "忽略该 pack"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "打包压缩级别"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "显示被移植隐藏的提交"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的话)以提高对象计数时的速度"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同时创建 bitmap 索引"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "如果可能,写 bitmap 索引"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "处理丢失的对象"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor 包文件中的对象"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "在增量压缩时参考数据岛"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "协议"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "使用此协议排除任何已配置的 uploadpack.blobpackfileuri"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量链深度 %d 太深了,强制为 %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "配置 pack.deltaCacheLimit 太高了,强制为 %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 来构建传输用的包文件"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包文件大小是 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用于创建一个可索引包"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不兼容"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "不能在没有 --stdout 的情况下使用 --filter"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "不能同时使用 --filter 和 --stdin-packs"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "不能同时使用内部版本列表和 --stdin-packs"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "枚举对象中"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18959,19 +19020,19 @@
 "缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、--no-rebase,\n"
 "或者 --ff-only 参数覆盖缺省设置。\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "更新尚未诞生的分支,变更添加至索引。"
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "变基式拉取"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "请提交或贮藏它们。"
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -18981,7 +19042,7 @@
 "fetch 更新了当前的分支。快进您的工作区\n"
 "至提交 %s。"
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -18998,15 +19059,15 @@
 "$ git reset --hard\n"
 "恢复之前的状态。"
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "无法将多个分支合并到空分支。"
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "无法变基到多个分支。"
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "本地子模组中有修改,无法变基"
 
@@ -19068,7 +19129,7 @@
 "\n"
 "    git push %s HEAD:<远程分支名字>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19081,12 +19142,17 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "当前分支 %s 有多个上游分支,拒绝推送。"
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr "您没有为推送指定任何引用规格,并且 push.default 为 \"nothing\"。"
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19096,12 +19162,7 @@
 "您正推送至远程 '%s'(其并非当前分支 '%s' 的上游),\n"
 "而没有告诉我要推送什么、更新哪个远程分支。"
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr "您没有为推送指定任何引用规格,并且 push.default 为 \"nothing\"。"
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19112,7 +19173,7 @@
 "再次推送前,先与远程变更合并(如 'git pull ...')。详见\n"
 "'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19123,7 +19184,7 @@
 "检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见\n"
 "'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19136,11 +19197,11 @@
 "(如 'git pull ...')。\n"
 "详见 'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "更新被拒绝,因为该标签在远程已经存在。"
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19149,7 +19210,7 @@
 "如果不使用 '--force' 参数,您不能更新一个指向非提交对象的远程引用,\n"
 "也不能更新远程引用让其指向一个非提交对象。\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19159,103 +19220,103 @@
 "更新被拒绝,因为远程跟踪分支的最新提交自从上次检出之后已被更新。\n"
 "在强制更新前,您可能想将这些变更整合到本地(如 'git pull ...')。\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "推送到 %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "推送一些引用到 '%s' 失败"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "仓库"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "推送所有引用"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "镜像所有引用"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "删除引用"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "推送标签(不能使用 --all or --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "强制更新"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<引用名>:<期望值>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "要求引用旧的取值为设定值"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "要求远程更新在本地被整合"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "控制子模组的递归推送"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "使用精简打包"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "接收包程序"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "设置 git pull/status 的上游"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "清除本地删除的引用"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "绕过 pre-push 钩子"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "推送缺失但有关的标签"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "用 GPG 为推送签名"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "需要远端支持原子事务"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete 与 --all、--mirror 及 --tags 不兼容"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete 未接任何引用没有意义"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "坏的仓库 '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19276,27 +19337,27 @@
 "\n"
 "    git push <名称>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all 和 --tags 不兼容"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all 不能和引用规格同时使用"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror 和 --tags 不兼容"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror 不能和引用规格同时使用"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all 和 --mirror 不兼容"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "推送选项不能有换行符"
 
@@ -19841,7 +19902,7 @@
 
 #: builtin/rebase.c:1442
 msgid "It looks like 'git am' is in progress. Cannot rebase."
-msgstr "看起来 'git-am' 正在执行中。无法变基。"
+msgstr "看起来 'git am' 正在执行中。无法变基。"
 
 #: builtin/rebase.c:1483
 msgid ""
@@ -19868,7 +19929,7 @@
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "动作 --edit-todo 只能用在交互式变基过程中。"
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "不能读取 HEAD"
 
@@ -19973,8 +20034,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "致命错误:无此分支/提交 '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "没有这样的引用:%s"
@@ -20042,7 +20103,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <仓库目录>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20068,7 +20129,7 @@
 "若要屏蔽此信息且保持默认行为,设置 'receive.denyCurrentBranch'\n"
 "配置变量为 'refuse'。"
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20087,11 +20148,11 @@
 "\n"
 "若要屏蔽此信息,您可以设置它为 'refuse'。"
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "静默模式"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "您必须指定一个目录。"
 
@@ -21060,15 +21121,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget <路径>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "在索引中注册干净的解决方案"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "没有路径的 'git rerere forget' 已经过时"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "无法为 '%s' 生成差异"
@@ -21219,19 +21280,19 @@
 msgid "Could not write new index file."
 msgstr "不能写入新的索引文件。"
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "不能同时使用 --exclude-promisor-objects 和 --missing 选项"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "对象过滤需要 --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list 不支持显示注解"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "标记计数和 --objects 不兼容"
 
@@ -21251,6 +21312,18 @@
 msgid "output in stuck long form"
 msgstr "以固定长格式输出"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "输入过早结束"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "在 `--' 分隔符之前没有给出使用方法字符串"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "需要一个单独的版本"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21265,6 +21338,50 @@
 "\n"
 "初次使用时执行 \"git rev-parse --parseopt -h\" 来获得更多信息。"
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir 需要一个参数"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "不是一个git目录 '%s'"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path 需要一个参数"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n 需要一个参数"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format 需要一个参数"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "未知的 --path-format 参数:%s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default 需要一个参数"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix 需要一个参数"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "未知的 --abbrev-ref 模式:%s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "未知的 --show-object-format 模式:%s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<选项>] <提交号>..."
@@ -21746,37 +21863,37 @@
 msgid "failed to open '%s'"
 msgstr "无法打开 '%s'"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "无法规范化路径 %s"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <模式>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "无法为 C 语言风格的字符串 '%s' 去引号"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "无法加载现存的稀疏检出模式"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "从标准输入读取模式"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "刷新工作目录时出错"
 
@@ -21800,10 +21917,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <分支名> [<stash>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -21953,93 +22066,93 @@
 msgid "only show untracked files in the stash"
 msgstr "仅显示贮藏中的未跟踪文件"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "无法用 %2$s 更新 %1$s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "贮藏说明"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" 需要一个 <提交> 参数"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "没有选择变更"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "您尚未建立初始提交"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "无法保存当前索引状态"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "无法保存未跟踪文件"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "无法保存当前工作区状态"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "不能记录工作区状态"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "不能同时使用参数 --patch 和 --include-untracked 或 --all"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "您是否忘了执行 'git add'?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "没有要保存的本地修改"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "无法初始化贮藏"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "无法保存当前状态"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "保存工作目录和索引状态 %s"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "无法删除工作区变更"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "保持索引"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "以补丁模式贮藏"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "静默模式"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "贮藏中包含未跟踪文件"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "包含忽略的文件"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22063,40 +22176,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "为每一行的行首添加注释符和空格"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "期望一个完整的引用名称,却得到 %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote 不带参数"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "无法从 url '%s' 剥离一个组件"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "相对路径的替代锚记(anchor)"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<路径>] [<路径>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "在 .gitmodules 中未找到子模组 '%s' 的 url"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "进入 '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22105,7 +22219,7 @@
 "对 %s 执行 run_command 返回非零值。\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22115,169 +22229,169 @@
 "在递归 %s 的子模组执行 run_command 时返回非零值。\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "抑制进入每一个子模组命令的输出"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "递归进入嵌套子模组中"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <命令>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr "无法找到配置 '%s'。假定这个仓库是其自身的官方上游。"
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "无法为子模组 '%s' 注册 url"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "子模组 '%s'(%s)已对路径 '%s' 注册\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "警告:建议子模组 '%s' 使用命令更新模式\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "无法为子模组 '%s' 注册更新模式"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "抑制子模组初始化的输出"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<选项>] [<路径>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "在 .gitmodules 中没有发现路径 '%s' 的子模组映射"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "无法解析子模组 '%s' 的 HEAD 引用"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "递归子模组 '%s' 失败"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "抑制子模组状态输出"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "使用存储在索引中的提交,而非存储在子模组 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<路径>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <路径>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(数据对象)->%s(子模组)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(子模组)->%s(数据对象)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "不能从 '%s' 创建哈希对象"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "意外的模式 %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "使用存储在索引中的提交,而非存储在子模组 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
 msgstr "比较存储在索引和子模组 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "跳过设置了 'ignore_config' 为 'all' 的子模组"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "限制总结的大小"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<选项>] [<提交>] [--] [<路径>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "不能为 HEAD 获取一个版本"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached 和 --files 是互斥的"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "为 '%s' 同步子模组 url\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "无法为子模组路径 '%s' 注册 url"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "无法得到子模组 '%s' 的默认远程关联"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "无法为子模组 '%s' 更新远程关联"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "抑制子模组 URL 同步的输出"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<路径>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22286,52 +22400,52 @@
 "子模组工作区 '%s' 包含一个 .git 目录(如果您确需删除它及其全部历史,使用 'rm "
 "-rf' 命令)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr "子模组工作区 '%s' 包含本地修改;使用 '-f' 丢弃它们"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "已清除目录 '%s'\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "无法移除子模组工作区 '%s'\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "不能创建空的子模组目录 %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "子模组 '%s'(%s)未对路径 '%s' 注册\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr "删除子模组工作区,即使包含本地修改"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "将所有子模组取消注册"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<路径>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "如果您确实想要对所有子模组执行取消初始化,请使用 '--all'"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22343,46 +22457,67 @@
 "Git 不使用备用仓库克隆,或者等效地使用 '--reference-if-able' 而非\n"
 "'--reference' 来克隆。"
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "子模组 '%s' 不能添加仓库备选:%s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "不能识别 submodule.alternateErrorStrategy 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
-msgstr "不能识别 submodule.alternateLocaion 的取值 '%s'"
+msgstr "不能识别 submodule.alternateLocation 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "拒绝在另一个子模组的 git 目录中创建/使用 '%s'"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "无法克隆 '%s' 到子模组路径 '%s'"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "目录非空:'%s'"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "无法得到 '%s' 的子模组目录"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "新的子模组将要克隆的路径"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "新子模组的名称"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "克隆子模组的 url 地址"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "浅克隆的深度"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "强制显示克隆进度"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "不允许克隆到一个非空目录"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -22391,186 +22526,220 @@
 "git submodule--helper clone [--prefix=<路径>] [--quiet] [--reference <仓库>] "
 "[--name <名字>] [--depth <深度>] [--single-branch] --url <url> --path <路径>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "拒绝在另一个子模组的 git dir 中创建/使用 '%s'"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "无法克隆 '%s' 到子模组路径 '%s'"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "目录非空:'%s'"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "无法得到 '%s' 的子模组目录"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "子模组 '%2$s' 的更新模式 '%1$s' 无效"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr "为子模组 '%2$s' 配置的更新模式 '%1$s' 无效"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "子模组 '%s' 尚未初始化"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "也许您想要执行 'update --init'?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "略过未合并的子模组 %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "略过子模组 '%s'"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "克隆 '%s' 失败。按计划重试"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "第二次尝试克隆 '%s' 失败,退出"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "到工作区的路径"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "工作区中的路径,递归嵌套子模组"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase、merge、checkout 或 none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
 msgstr "并发任务"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "初始克隆是否应该遵守推荐的浅克隆选项"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "不要输出克隆进度"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<路径>] [<路径>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "update 参数取值错误"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
 "the superproject is not on any branch"
 msgstr "子模组(%s)的分支配置为继承上级项目的分支,但是上级项目不在任何分支上"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "无法获得子模组 '%s' 的仓库句柄"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "在子模组中递归"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<选项>] [<路径>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "检查写入 .gitmodules 文件是否安全"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "取消 .gitmodules 文件中的设置"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <名称> [<值>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <名称>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "请确认 .gitmodules 文件在工作区里"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "抑制设置子模组 URL 的输出"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <路径> <新地址>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "设置默认跟踪分支为 master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "设置默认跟踪分支"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <路径>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <分支> <路径>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "需要 --branch 或 --default"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch 和 --default 是互斥的"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "向索引中添加位于 '%s' 的已存在的仓库\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "'%s' 已存在并且不是一个有效的 git 仓库"
+
+#: builtin/submodule--helper.c:2828
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "发现一个本地 git 目录 '%s' 及其远程仓库:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"如果您想要重用这个本地 git 目录而非重新克隆自\n"
+"  %s\n"
+"使用 '--force' 选项。如果本地 git 目录不是正确的仓库,或者如果您不确定这里\n"
+"的含义,使用 '--name' 选项指定另外的名称。\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "为子模组 '%s' 重新激活本地 git 目录\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "无法检出子模组 '%s'"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "克隆仓库时要检出的分支"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "允许添加一个被忽略的子模组路径"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr "git submodule--helper add-clone [<选项>...] --url <URL> --path <路径> --name <名称>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支持 --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' 不是一个有效的 submodule--helper 子命令"
@@ -23185,7 +23354,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路径>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "删除 '%s' 失败"
@@ -23195,25 +23364,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "删除 %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "报告清除的工作区"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "将早于 <时间> 的工作区过期"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已经存在"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "无法使用的工作区目标 '%s'"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23222,7 +23391,7 @@
 "'%s' 是一个丢失但锁定的工作区,\n"
 "使用 '%s -f -f' 覆盖,或用 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23231,27 +23400,31 @@
 "'%s' 是一个丢失但已经注册的工作区,\n"
 "使用 '%s -f' 覆盖,或用 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能创建目录 '%s'"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "初始化"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "准备工作区(新分支 '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "准备工作区(重置分支 '%s',之前为 %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "准备工作区(检出 '%s')"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "准备工作区(分离头指针 %s)"
@@ -23276,82 +23449,90 @@
 msgid "keep the new working tree locked"
 msgstr "锁定新工作区"
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr "设置跟踪模式(参见 git-branch(1))"
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr "尝试为新分支名匹配一个远程跟踪分支"
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr "-b、-B 和 --detach 是互斥的"
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr "只能在创建新分支时使用选项 --[no-]track "
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr "显示扩展的注释和原因(如果有)"
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr "向早于 <时间> 的工作区添添加“可修剪”注释"
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr "--verbose 和 --porcelain 互斥"
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr "锁定原因"
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr "设置跟踪模式(参见 git-branch(1))"
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr "尝试为新分支名匹配一个远程跟踪分支"
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr "-b、-B 和 --detach 是互斥的"
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason 需要 --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "由 --lock 添加"
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr "只能在创建新分支时使用选项 --[no-]track "
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr "显示扩展的注释和原因(如果有)"
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "向早于 <时间> 的工作区添添加“可修剪”注释"
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose 和 --porcelain 互斥"
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一个工作区"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作区无法被加锁或解锁"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被锁定,原因:%s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被锁定"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被锁定"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移动或删除包含子模组的工作区"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "强制移动,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一个主工作区"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "无法从 '%s' 算出目标名称"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23360,7 +23541,7 @@
 "无法移动一个锁定的工作区,锁定原因:%s\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23368,36 +23549,36 @@
 "无法移动一个锁定的工作区,\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "验证失败,无法移动工作区:%s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移动 '%s' 到 '%s' 失败"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中执行 'git status' 失败"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未跟踪的文件,使用 --force 删除"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中执行 'git status' 失败,退出码 %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr "强制删除,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23406,7 +23587,7 @@
 "无法删除一个锁定的工作区,锁定原因:%s\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23414,17 +23595,17 @@
 "无法删除一个锁定的工作区,\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "验证失败,无法删除工作区:%s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "修理:%s:%s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "错误:%s:%s"
@@ -23620,7 +23801,7 @@
 
 #: t/helper/test-serve-v2.c:19
 msgid "exit immediately after advertising capabilities"
-msgstr "对能力广告之后立即退出"
+msgstr "通告能力之后立即退出"
 
 #: t/helper/test-simple-ipc.c:262
 #, c-format
@@ -23684,7 +23865,9 @@
 msgid ""
 "test-helper simple-ipc multiple     [<name>] [<threads>] [<bytecount>] "
 "[<batchsize>]"
-msgstr "test-helper simple-ipc multiple     [<名字>] [<线程>] [<字节计数>] [<批处理大小>]"
+msgstr ""
+"test-helper simple-ipc multiple     [<名字>] [<线程>] [<字节计数>] [<批处理大"
+"小>]"
 
 #: t/helper/test-simple-ipc.c:696
 msgid "name or pathname of unix domain socket"
@@ -23762,7 +23945,7 @@
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "无法将 SSL 后端设置为 '%s':已经设置"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23812,95 +23995,95 @@
 msgid "redirecting to %s"
 msgstr "重定向到 %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "当没有设置温和处理文件结束符(EOF)时,不应该有文件结束符"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "远程服务器发送了无状态分隔符"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "远程服务器发送意外的响应结束数据包"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "无法倒回 rpc post 数据 - 尝试增加 http.postBuffer"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl:错误的行宽字符:%.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl:意外响应结束包"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC 失败。%s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "不能处理这么大的推送"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "不能压缩请求,zlib 压缩错误 %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "不能压缩请求,zlib 结束错误 %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "收到了 %d 字节长度的头信息"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "预期仍然需要 %d 个字节的正文"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
-msgstr "哑 http 传输不支持 shalllow 能力"
+msgstr "哑 http 传输不支持浅克隆能力"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "获取失败。"
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "无法通过智能 HTTP 获取 sha1"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "协议错误:期望 sha/ref,却得到 '%s'"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http 传输协议不支持 %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push 失败"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl:用法:git remote-curl <远程> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl:错误读取来自 git 的命令流"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl:尝试没有本地仓库下获取"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl:未知的来自 git 的命令 '%s'"
@@ -24740,81 +24923,41 @@
 msgid "'$sm_path' does not have a commit checked out"
 msgstr "'$sm_path' 没有检出的提交"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "添加位于 '$sm_path' 的现存仓库到索引"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' 已存在且不是一个有效的 git 仓库"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr "本地发现 '$sm_name' 的一个 git 目录,与其对应的远程仓库:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"如果您想要重用这个本地 git 目录而非重新克隆自\n"
-"  $realrepo\n"
-"使用 '--force' 选项。如果本地 git 目录不是正确的仓库\n"
-"或者您不确定这里的含义,使用 '--name' 选项选择另外的名称。"
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "激活本地 git 目录到子模组 '$sm_name'。"
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "不能检出子模组 '$sm_path'"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "无法添加子模组 '$sm_path'"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "无法注册子模组 '$sm_path'"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中找到当前版本"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "无法在子模组路径 '$sm_path' 中获取"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr "无法在子模组路径 '$sm_path' 中找到当前版本 ${remote_name}/${branch}"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr "无法在子模组路径 '$displaypath' 中获取,尝试直接获取 $sha1:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -24822,47 +24965,47 @@
 msgstr ""
 "获取了子模组路径 '$displaypath',但是它没有包含 $sha1。直接获取该提交失败。"
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中检出 '$sha1'"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "子模组路径 '$displaypath':检出 '$sha1'"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中变基 '$sha1'"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "子模组路径 '$displaypath':变基至 '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "无法合并 '$sha1' 到子模组路径 '$displaypath' 中"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "子模组路径 '$displaypath':已合并入 '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "在子模组 '$displaypath' 中执行 '$command $sha1' 失败"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "子模组 '$displaypath':'$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "无法递归进子模组路径 '$displaypath'"
@@ -25561,39 +25704,39 @@
 msgid "invalid argument %s, expecting --"
 msgstr "无效的参数 %s,期望是 --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr "本地时间和 GMT 有不到一分钟间隔\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "本地时间偏移量大于等于 24 小时\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "致命错误:命令 '%s' 已终止,退出代码为 %d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "编辑器非正常退出,终止所有操作"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "'%s' 包含您正在编写的一个中间版本的邮件。\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' 包含编辑的邮件。\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases 和其它选项不兼容\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -25603,47 +25746,47 @@
 "git-send-email 通过 sendemail.* 选项进行设置,注意字母 'e'。\n"
 "设置 sendemail.forbidSendmailVariables 为 false 来禁用这项检查。\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "不能在仓库之外运行 git format-patch\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr "`batch-size` 和 `relogin` 必须同时定义(通过命令行或者配置选项)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "未知的 --suppress-cc 字段:'%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "未知的 --confirm 设置:'%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "警告:不支持带引号的 sendmail 别名:%s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "警告:不支持 `:include:`:%s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "警告:不支持 `/file` 或 `|pipe` 重定向:%s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "警告:不能识别的 sendmail 行:%s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25658,12 +25801,12 @@
 "    * 如果含义为一个文件,使用 \"./%s\",或者\n"
 "    * 如果含义为一个范围,使用 --format-patch 选项。\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "无法打开目录 %s: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -25673,17 +25816,17 @@
 "未指定补丁文件!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "在 %s 中没有标题行?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "为写入打开 %s 失败: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -25696,37 +25839,37 @@
 "\n"
 "如果您不想发送摘要,清除内容。\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "无法打开 %s: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "无法打开 %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "摘要邮件为空,跳过\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "您确认要使用 <%s> [y/N]?"
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr "如下文件含 8bit 内容,但没有声明一个 Content-Transfer-Encoding。\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "要声明 8bit 为什么样的编码格式 [UTF-8]?"
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -25738,20 +25881,20 @@
 "\t%s\n"
 "包含模版标题 '*** SUBJECT HERE ***'。如果确实想要发送,使用参数 --force。\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "邮件将要发送给谁?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "致命错误:别名 '%s' 扩展为它自己\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr "Message-ID 被用作第一封邮件的 In-Reply-To ?"
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "错误:不能从 %s 中提取一个有效的邮件地址\n"
@@ -25759,16 +25902,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "如何处理这个地址?([q]uit|[d]rop|[e]dit):"
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "CA 路径 \"%s\" 不存在"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25793,112 +25936,112 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "发送这封邮件?([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "发送要求的邮件回复"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "要求的 SMTP 服务器未被正确定义。"
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "服务器不支持 STARTTLS!%s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS 失败!%s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr "无法正确地初始化 SMTP。检查配置并使用 --smtp-debug。"
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "无法发送 %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "演习发送 %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "正发送 %s\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "演习成功。日志说:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK。日志说:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "结果:"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "结果:OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "无法打开文件 %s"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) 添加 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) 添加 to:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) 添加 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) 添加 cc: %s 自行 '%s'\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) 不能执行 '%s'"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) 添加 %s: %s 自:'%s'\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) 无法关闭管道至 '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "不能以 7bit 形式发送信息"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "无效的传送编码"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -25909,27 +26052,27 @@
 "%s\n"
 "警告:补丁未能发送\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "不能打开 %s:%s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
 "warning: no patches were sent\n"
 msgstr ""
-"致命错误:%s:%d 超过 998 字节\n"
+"致命错误:%s:%d 超过 998 字符\n"
 "警告:补丁未能发送\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "略过 %s 含备份后缀 '%s'。\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "您真的要发送 %s?[y|N]:"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 77a5d57..5d5718a 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,307 +1,37 @@
 # Chinese (traditional) translations for Git package
 # Git 套裝軟體的繁體中文翻譯。
-# Copyright (C) 2012,2013 Jiang Xin <worldhello.net AT gmail.com>
-# Copyright (C) 2019,2020 Yi-Jyun Pan <pan93412@gmail.com>
+# Copyright (C) 2012-2021 Jiang Xin <worldhello.net AT gmail.com>
+# Copyright (C) 2019-2021 Yi-Jyun Pan <pan93412@gmail.com>
 # This file is distributed under the same license as the Git package.
+#
 # Contributors (CN):
-#   - Fangyi Zhou <me AT fangyi.io>
-#   - Jiang Xin <worldhello.net AT gmail.com>
-#   - Lian Cheng <rhythm.mail AT gmail.com>
-#   - Ray Chen <oldsharp AT gmail.com>
-#   - Riku <lu.riku AT gmail.com>
-#   - Thynson <lanxingcan AT gmail.com>
-#   - ws3389 <willsmith3389 AT gmail.com>
-#   - Wang Sheng <wangsheng2008love AT 163.com>
-#   - 依云 <lilydjwg AT gmail.com>
-#   - Yichao Yu <yyc1992 AT gmail.com>
-#   - Zhuang Ya <zhuangya AT me.com>
-#
-#  Git glossary for Chinese translators
-#  updated on 5/23/2020
-#
-# 原文				翻譯
-# 3 way merge			三方合併
-# ?				?
-# abbreviate			縮寫
-# abort				中止
-# Add				加入
-# all				所有
-# allow				允許
-# alternative			替代
-# Amend				修訂
-# annotate			附註
-# annotated tag			附註標籤
-# Apply				套用
-# argument			引數
-# argument			引數
-# Assume			假設
-# author			作者
-# bad				不良
-# Bare				祼
-# bare repo			祼版本庫
-# Bisect			二分法
-# Blame				究責
-# blob				blob
-# bloom filter			布隆過濾器
-# Branch			分支
-# branch			(動詞)建立分支
-# Branches			分支
-# browse			瀏覽
-# browser			瀏覽器
-# bug				臭蟲
-# Bug-ID			Bug-ID
-# cache				快取
-# certificate			憑證
-# Change			變更
-# change			變更
-# changed			已變更
-# changes			變更
-# Check help file		查看說明檔案
-# checkbox			核取方塊
-# Checkout			檢出
-# checksum			總和檢查碼
-# Cherry Pick			摘取
-# clean				清除
-# cleanup			清理
-# clear				清空
-# click				按一下
-# client			用戶端
-# clipboard			剪貼簿
-# Clone				複製
-# Close				關閉
-# Collapse			收合
-# Color				色彩
-# Combine			結合
-# comment			評註
-# Commit			提交
-# committer			提交者
-# compare			比對
-# comparing			比對
-# Configure			設定
-# confirm			確認
-# Conflict			衝突
-# Context lines			情境列
-# context menu			快顯功能表
-# continue			繼續
-# continuous			持續性
-# copy				複製
-# Corrections			更正
-# Could not start		無法啟動
-# Create			建立
-# Creates			建立
-# Creating			建立中
-# Credential			憑證
-# Credential helper		憑證協助程式
-# Credentials			憑證
-# credentials			憑證
-# current			目前
-# custom			自訂
-# Customize			自訂
-# Daemon			守護程序
-# Date				日期
-# Default			預設
-# Delete			刪除
-# describe			describe
-# description			描述
-# Destination			目的地
-# detach			分離
-# detect			偵測
-# Dialogs			對話框
-# Diff				差異
-# differences			差異
-# different			差異
-# dir				目錄
-# directory			目錄
-# Discard			丟棄
-# Display			顯示
-# double click			按兩下
-# edit				編輯
-# editor			編輯器
-# email				email
-# Enable			啟用
-# Error code			錯誤碼
-# explicitly			顯式
-# Export			匯出
-# expression			表示式
-# extension			擴充套件
-# external			外部
-# fast forward			快進
-# fast-forward			快進
-# fetch				獲取
-# FETCH_HEAD			FETCH_HEAD
-# file				檔案
-# files				檔案
-# filter			篩選
-# find				搜尋
-# Finish			完成
-# folder			資料夾
-# folders			資料夾
-# follow			跟隨
-# Force				強制
-# from				自
-# Git				Git
-# Git for Windows		Git for Windows
-# hash				雜湊
-# HEAD				HEAD
-# highlight			標示
-# Hook				掛鉤
-# hunk				區塊
-# hunks				區塊
-# Ignore			忽略
-# Index				索引
-# Info				資訊
-# information			資訊
-# Init				初始化
-# initial checkout		初始簽出
-# Inline Diff			行內差異
-# inline diff			列內差異
-# is up to date			已最新
-# issue				議題
-# item				項目
-# items				項目
-# Keywords			關鍵字
-# label				標記
-# labels			標記
-# Last				最後
-# later				稍後
-# limitation			限制
-# line				列
-# lines				列
-# local				本地端
-# Local				本地端
-# Log				記錄
-# Merge				合併
-# merge				合併
-# message			訊息
-# Message			訊息
-# modify			修改
-# Name				名稱
-# Note				註
-# note				註
-# Notes				註解
-# Open				開啟
-# Options			選項
-# Ordering			順序
-# ORIG_HEAD			ORIG_HEAD
-# Overlay			圖示覆蓋
-# pack				包裝
-# Parent			父
-# patch				補綴
-# patched			補綴
-# paths				路徑
-# pick				取
-# position			位置
-# preview			預覽
-# process			處理
-# program			程式
-# Project			專案
-# Prune				剪除
-# Pull				拉取
-# Pull Request			拉取請求
-# Push				推送
-# rebase			重定基底
-# rebase			重定基底
-# recover			還原
-# recovered			還原
-# recursively			遞迴
-# recycle bin			回收桶
-# redo				重做
-# Ref				參照
-# ref				參照
-# reference			參照
-# RefLog			參照日誌
-# refmap			參照映射
-# refs				參照
-# refspec			參照規格
-# Remote			遠端
-# remote branches		遠端分支
-# Remote-tracking branches	遠端跟蹤分支
-# remote-treacking branches	遠端追蹤分支
-# remove			移除
-# removed			已移除
-# repo				版本庫
-# repositories			版本庫
-# Repository			版本庫
-# request			要求
-# Reset				重設
-# resolve			解決
-# rest				其餘的
-# Restore			還原
-# Revert			復原
-# reverted			已復原
-# review			檢閱
-# revision			修訂版
-# revisions			版本
-# script			指令稿
-# Scripts			指令稿
-# sections			部分
-# Show				顯示
-# sign				簽署
-# signed			已簽署
-# skip				略過
-# special			特殊
-# Squash			壓合
-# stage				暫存
-# stage				暫存
-# staged			已暫存
-# staging area			暫存區
-# Stash				收藏
-# Status			狀態
-# subject			主旨
-# Submodule			子模組
-# Superproject			上層專案
-# Switch			切換
-# tag				(動詞)貼標籤
-# Tag				標籤
-# tagger			貼標籤者
-# tags				標籤
-# task				工作
-# thesaurus			同義字
-# three way			三方
-# Track				跟蹤
-# Tracked			跟蹤中
-# tracking			跟蹤
-# tree				樹
-# two				2
-# type				類型
-# unchanged			未變更
-# Undo				復原
-# Unified diff			單一差異
-# unified diff			統合式差異
-# Unknown			未知
-# unstash			取消收藏
-# Untracked			未跟蹤的
-# Unversioned			無版控
-# Update			更新
-# UpStream			上游
-# user				使用者
-# username			使用者名稱
-# vanilla			原
-# verify			核驗
-# view				檢視
-# viewer			檢視器
-# Warning			警告
-# whitespace			空白字元
-# whitespaces			空白字元
-# working			工作
-# working copy			工作複本
-# Working tree			工作目錄
-# You might need		您可能需要
+# - Fangyi Zhou <me AT fangyi.io>
+# - Jiang Xin <worldhello.net AT gmail.com>
+# - Lian Cheng <rhythm.mail AT gmail.com>
+# - Ray Chen <oldsharp AT gmail.com>
+# - Riku <lu.riku AT gmail.com>
+# - Thynson <lanxingcan AT gmail.com>
+# - ws3389 <willsmith3389 AT gmail.com>
+# - Wang Sheng <wangsheng2008love AT 163.com>
+# - 依云 <lilydjwg AT gmail.com>
+# - Yichao Yu <yyc1992 AT gmail.com>
+# - Zhuang Ya <zhuangya AT me.com>
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2021-05-17 16:02+0800\n"
-"PO-Revision-Date: 2021-05-23 15:30+0800\n"
+"POT-Creation-Date: 2021-08-14 07:56+0800\n"
+"PO-Revision-Date: 2021-08-14 13:55+0800\n"
 "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
-"Language-Team: Chinese (Traditional) <zh-l10n@lists.linux.org.tw>\n"
+"Language-Team: Chinese (Traditional) <http://weblate.slat.org/projects/git-"
+"po/git-cli/zh_Hant/>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4.3\n"
+"X-Generator: Poedit 3.0\n"
 "X-ZhConverter: 繁化姬 dict-f4bc617e-r910 @ 2019/11/16 20:23:12 | https://"
 "zhconvert.org\n"
 
@@ -310,8 +40,8 @@
 msgid "Huh (%s)?"
 msgstr "嗯(%s)?"
 
-#: add-interactive.c:529 add-interactive.c:830 reset.c:65 sequencer.c:3493
-#: sequencer.c:3944 sequencer.c:4099 builtin/rebase.c:1528
+#: add-interactive.c:529 add-interactive.c:830 reset.c:64 sequencer.c:3493
+#: sequencer.c:3964 sequencer.c:4119 builtin/rebase.c:1528
 #: builtin/rebase.c:1953
 msgid "could not read index"
 msgstr "無法讀取索引"
@@ -340,7 +70,7 @@
 msgid "could not stage '%s'"
 msgstr "無法暫存「%s」"
 
-#: add-interactive.c:703 add-interactive.c:892 reset.c:89 sequencer.c:3687
+#: add-interactive.c:703 add-interactive.c:892 reset.c:88 sequencer.c:3707
 msgid "could not write index"
 msgstr "無法寫入索引"
 
@@ -395,12 +125,12 @@
 msgid "ignoring unmerged: %s"
 msgstr "忽略未合併:%s"
 
-#: add-interactive.c:937 add-patch.c:1751 git-add--interactive.perl:1369
+#: add-interactive.c:937 add-patch.c:1752 git-add--interactive.perl:1369
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "只有二進位檔案被修改。\n"
 
-#: add-interactive.c:939 add-patch.c:1749 git-add--interactive.perl:1371
+#: add-interactive.c:939 add-patch.c:1750 git-add--interactive.perl:1371
 #, c-format
 msgid "No changes.\n"
 msgstr "沒有修改。\n"
@@ -477,11 +207,11 @@
 msgid "(empty) select nothing"
 msgstr "(空)全不選取"
 
-#: add-interactive.c:1091 builtin/clean.c:816 git-add--interactive.perl:1896
+#: add-interactive.c:1091 builtin/clean.c:813 git-add--interactive.perl:1896
 msgid "*** Commands ***"
 msgstr "*** 指令 ***"
 
-#: add-interactive.c:1092 builtin/clean.c:817 git-add--interactive.perl:1893
+#: add-interactive.c:1092 builtin/clean.c:814 git-add--interactive.perl:1893
 msgid "What now"
 msgstr "請選擇"
 
@@ -493,12 +223,13 @@
 msgid "unstaged"
 msgstr "未快取"
 
-#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2308
-#: builtin/am.c:2311 builtin/bugreport.c:135 builtin/clone.c:128
+#: add-interactive.c:1144 apply.c:4994 apply.c:4997 builtin/am.c:2309
+#: builtin/am.c:2312 builtin/bugreport.c:135 builtin/clone.c:128
 #: builtin/fetch.c:152 builtin/merge.c:285 builtin/pull.c:190
-#: builtin/submodule--helper.c:409 builtin/submodule--helper.c:1819
-#: builtin/submodule--helper.c:1822 builtin/submodule--helper.c:2327
-#: builtin/submodule--helper.c:2330 builtin/submodule--helper.c:2573
+#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1886
+#: builtin/submodule--helper.c:1889 builtin/submodule--helper.c:2343
+#: builtin/submodule--helper.c:2346 builtin/submodule--helper.c:2589
+#: builtin/submodule--helper.c:2890 builtin/submodule--helper.c:2893
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "路徑"
@@ -507,7 +238,7 @@
 msgid "could not refresh index"
 msgstr "無法重新整理索引"
 
-#: add-interactive.c:1165 builtin/clean.c:781 git-add--interactive.perl:1803
+#: add-interactive.c:1165 builtin/clean.c:778 git-add--interactive.perl:1803
 #, c-format
 msgid "Bye.\n"
 msgstr "再見。\n"
@@ -798,40 +529,42 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:342
+#: add-patch.c:343
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "無法解析區塊標頭 '%.*s'"
 
-#: add-patch.c:361 add-patch.c:365
+#: add-patch.c:362 add-patch.c:366
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "無法解析上色過的區塊標頭 '%.*s'"
 
-#: add-patch.c:419
+#: add-patch.c:420
 msgid "could not parse diff"
 msgstr "無法解析差異 (diff)"
 
-#: add-patch.c:438
+#: add-patch.c:439
 msgid "could not parse colored diff"
 msgstr "無法解析上色過的差異 (diff)"
 
-#: add-patch.c:452
+#: add-patch.c:453
 #, c-format
 msgid "failed to run '%s'"
 msgstr "無法執行 '%s'"
 
-#: add-patch.c:611
+#: add-patch.c:612
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter 的輸出不符"
 
-#: add-patch.c:612
+#: add-patch.c:613
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
-msgstr "您的過濾器必須在其輸入及輸出行維持一對一的對應關係。"
+msgstr ""
+"您的過濾器必須在其輸入及輸出行\n"
+"維持一對一的對應關係。"
 
-#: add-patch.c:790
+#: add-patch.c:791
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -840,7 +573,7 @@
 "應有上下文行 #%d 於\n"
 "%.*s"
 
-#: add-patch.c:805
+#: add-patch.c:806
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -853,11 +586,11 @@
 "\t不以下述結尾:\n"
 "%.*s"
 
-#: add-patch.c:1081 git-add--interactive.perl:1115
+#: add-patch.c:1082 git-add--interactive.perl:1115
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "手動區塊編輯模式 -- 檢視底部的快速指南。\n"
 
-#: add-patch.c:1085
+#: add-patch.c:1086
 #, c-format
 msgid ""
 "---\n"
@@ -871,20 +604,21 @@
 "以 %c 開始的行將被刪除。\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1099 git-add--interactive.perl:1129
+#: add-patch.c:1100 git-add--interactive.perl:1129
 msgid ""
 "If it does not apply cleanly, you will be given an opportunity to\n"
 "edit again.  If all lines of the hunk are removed, then the edit is\n"
 "aborted and the hunk is left unchanged.\n"
 msgstr ""
-"如果未乾淨套用,您就有機會重新編輯。若刪掉此區塊的全部內容,則會中止\n"
+"如果未乾淨套用,您就有機會重新編輯。\n"
+"若刪掉此區塊的全部內容,則會中止\n"
 "本次編輯,區塊則不會被修改。\n"
 
-#: add-patch.c:1132
+#: add-patch.c:1133
 msgid "could not parse hunk header"
 msgstr "無法解析區塊標頭"
 
-#: add-patch.c:1177
+#: add-patch.c:1178
 msgid "'git apply --cached' failed"
 msgstr "「git apply --cached」失敗"
 
@@ -900,24 +634,24 @@
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: add-patch.c:1246 git-add--interactive.perl:1242
+#: add-patch.c:1247 git-add--interactive.perl:1242
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr "未套用編輯區塊。是否重新編輯(輸入 “no” 捨棄!) [y/n]? "
 
-#: add-patch.c:1289
+#: add-patch.c:1290
 msgid "The selected hunks do not apply to the index!"
 msgstr "選取的區塊不會套用進索引!"
 
-#: add-patch.c:1290 git-add--interactive.perl:1346
+#: add-patch.c:1291 git-add--interactive.perl:1346
 msgid "Apply them to the worktree anyway? "
 msgstr "無論如何都要套用到工作區嗎?"
 
-#: add-patch.c:1297 git-add--interactive.perl:1349
+#: add-patch.c:1298 git-add--interactive.perl:1349
 msgid "Nothing was applied.\n"
 msgstr "未套用。\n"
 
-#: add-patch.c:1354
+#: add-patch.c:1355
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -939,68 +673,68 @@
 "e - 手動編輯目前區塊\n"
 "? - 顯示說明\n"
 
-#: add-patch.c:1516 add-patch.c:1526
+#: add-patch.c:1517 add-patch.c:1527
 msgid "No previous hunk"
 msgstr "沒有上一個區塊"
 
-#: add-patch.c:1521 add-patch.c:1531
+#: add-patch.c:1522 add-patch.c:1532
 msgid "No next hunk"
 msgstr "沒有下一個區塊"
 
-#: add-patch.c:1537
+#: add-patch.c:1538
 msgid "No other hunks to goto"
 msgstr "沒有其它可供跳轉的區塊"
 
-#: add-patch.c:1548 git-add--interactive.perl:1606
+#: add-patch.c:1549 git-add--interactive.perl:1606
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "要跳轉到哪個區塊(<Enter> 檢視更多)? "
 
-#: add-patch.c:1549 git-add--interactive.perl:1608
+#: add-patch.c:1550 git-add--interactive.perl:1608
 msgid "go to which hunk? "
 msgstr "跳轉到哪個區塊?"
 
-#: add-patch.c:1560
+#: add-patch.c:1561
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "無效數字:'%s'"
 
-#: add-patch.c:1565
+#: add-patch.c:1566
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "對不起,只有 %d 個可用區塊。"
 
-#: add-patch.c:1574
+#: add-patch.c:1575
 msgid "No other hunks to search"
 msgstr "沒有其它可供尋找的區塊"
 
-#: add-patch.c:1580 git-add--interactive.perl:1661
+#: add-patch.c:1581 git-add--interactive.perl:1661
 msgid "search for regex? "
 msgstr "使用正規表示式搜尋?"
 
-#: add-patch.c:1595
+#: add-patch.c:1596
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "錯誤的正規表示式 %s:%s"
 
-#: add-patch.c:1612
+#: add-patch.c:1613
 msgid "No hunk matches the given pattern"
 msgstr "沒有和提供模式相符合的區塊"
 
-#: add-patch.c:1619
+#: add-patch.c:1620
 msgid "Sorry, cannot split this hunk"
 msgstr "對不起,不能分割這個區塊"
 
-#: add-patch.c:1623
+#: add-patch.c:1624
 #, c-format
 msgid "Split into %d hunks."
 msgstr "分割為 %d 個區塊。"
 
-#: add-patch.c:1627
+#: add-patch.c:1628
 msgid "Sorry, cannot edit this hunk"
 msgstr "對不起,不能編輯這個區塊"
 
-#: add-patch.c:1679
+#: add-patch.c:1680
 msgid "'git apply' failed"
 msgstr "'git apply' 失敗"
 
@@ -1055,7 +789,7 @@
 msgid "Exiting because of an unresolved conflict."
 msgstr "因為存在未解決的衝突而離開。"
 
-#: advice.c:283 builtin/merge.c:1374
+#: advice.c:283 builtin/merge.c:1375
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "您尚未結束您的合併(存在 MERGE_HEAD)。"
 
@@ -1068,12 +802,14 @@
 msgstr "因為存在未完成的合併而離開。"
 
 #: advice.c:296
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The following pathspecs didn't match any eligible path, but they do match "
 "index\n"
 "entries outside the current sparse checkout:\n"
-msgstr "沒有符合下列路徑規格的合規路徑,但有符合目前稀疏簽出之外的索引項目:\n"
+msgstr ""
+"下列路徑規格不符合任何適合路徑,\n"
+"但符合目前稀疏簽出外的索引項目:\n"
 
 #: advice.c:303
 msgid ""
@@ -1351,7 +1087,7 @@
 #: apply.c:3352
 #, c-format
 msgid "cannot checkout %s"
-msgstr "不能檢出 %s"
+msgstr "不能簽出 %s"
 
 #: apply.c:3404 apply.c:3415 apply.c:3461 midx.c:98 pack-revindex.c:214
 #: setup.c:308
@@ -1411,7 +1147,7 @@
 #: apply.c:3642
 #, c-format
 msgid "Falling back to direct application...\n"
-msgstr ""
+msgstr "回復至直接套用模式⋯⋯\n"
 
 #: apply.c:3654
 msgid "removal patch leaves file contents"
@@ -1427,8 +1163,8 @@
 msgid "%s has type %o, expected %o"
 msgstr "%s 的類型是 %o,應為 %o"
 
-#: apply.c:3894 apply.c:3896 read-cache.c:861 read-cache.c:890
-#: read-cache.c:1351
+#: apply.c:3894 apply.c:3896 read-cache.c:863 read-cache.c:892
+#: read-cache.c:1353
 #, c-format
 msgid "invalid path '%s'"
 msgstr "無效路徑 '%s'"
@@ -1518,7 +1254,7 @@
 msgid "unable to add cache entry for %s"
 msgstr "無法為 %s 新增快取條目"
 
-#: apply.c:4376 builtin/bisect--helper.c:523
+#: apply.c:4376 builtin/bisect--helper.c:525
 #, c-format
 msgid "failed to write to '%s'"
 msgstr "寫入 '%s' 失敗"
@@ -1604,7 +1340,7 @@
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "修復空白錯誤後,套用了 %d 行。"
 
-#: apply.c:4967 builtin/add.c:679 builtin/mv.c:304 builtin/rm.c:423
+#: apply.c:4967 builtin/add.c:678 builtin/mv.c:304 builtin/rm.c:423
 msgid "Unable to write new index file"
 msgstr "無法寫入新索引檔案"
 
@@ -1616,7 +1352,7 @@
 msgid "apply changes matching the given path"
 msgstr "套用符合提供路徑的變更"
 
-#: apply.c:5000 builtin/am.c:2317
+#: apply.c:5000 builtin/am.c:2318
 msgid "num"
 msgstr "數字"
 
@@ -1680,9 +1416,9 @@
 msgid "ensure at least <n> lines of context match"
 msgstr "確保至少符合 <n> 行上下文"
 
-#: apply.c:5035 builtin/am.c:2293 builtin/am.c:2296
+#: apply.c:5035 builtin/am.c:2294 builtin/am.c:2297
 #: builtin/interpret-trailers.c:98 builtin/interpret-trailers.c:100
-#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3831
+#: builtin/interpret-trailers.c:102 builtin/pack-objects.c:3991
 #: builtin/rebase.c:1347
 msgid "action"
 msgstr "動作"
@@ -1712,8 +1448,8 @@
 msgstr "允許重疊的修補檔區塊"
 
 #: apply.c:5052 builtin/add.c:364 builtin/check-ignore.c:22
-#: builtin/commit.c:1474 builtin/count-objects.c:98 builtin/fsck.c:755
-#: builtin/log.c:2295 builtin/mv.c:123 builtin/read-tree.c:128
+#: builtin/commit.c:1481 builtin/count-objects.c:98 builtin/fsck.c:756
+#: builtin/log.c:2297 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "詳細輸出"
 
@@ -1725,7 +1461,7 @@
 msgid "do not trust the line counts in the hunk headers"
 msgstr "不信任修補檔區塊的標頭訊息中的行號"
 
-#: apply.c:5059 builtin/am.c:2305
+#: apply.c:5059 builtin/am.c:2306
 msgid "root"
 msgstr "根目錄"
 
@@ -1767,7 +1503,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "路徑太長(%d 字元,SHA1:%s):%s"
 
-#: archive-zip.c:469 builtin/pack-objects.c:244 builtin/pack-objects.c:247
+#: archive-zip.c:469 builtin/pack-objects.c:365 builtin/pack-objects.c:368
 #, c-format
 msgid "deflate error (%d)"
 msgstr "壓縮錯誤 (%d)"
@@ -1801,13 +1537,13 @@
 msgstr "不能讀取 %s"
 
 #: archive.c:342 sequencer.c:460 sequencer.c:1915 sequencer.c:3095
-#: sequencer.c:3536 sequencer.c:3645 builtin/am.c:261 builtin/commit.c:833
-#: builtin/merge.c:1143
+#: sequencer.c:3537 sequencer.c:3665 builtin/am.c:262 builtin/commit.c:833
+#: builtin/merge.c:1144
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能讀取 '%s'"
 
-#: archive.c:427 builtin/add.c:205 builtin/add.c:646 builtin/rm.c:328
+#: archive.c:427 builtin/add.c:205 builtin/add.c:645 builtin/rm.c:328
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "路徑規格 '%s' 未符合任何檔案"
@@ -1849,7 +1585,7 @@
 msgid "archive format"
 msgstr "歸檔格式"
 
-#: archive.c:553 builtin/log.c:1772
+#: archive.c:553 builtin/log.c:1775
 msgid "prefix"
 msgstr "前綴"
 
@@ -1860,7 +1596,7 @@
 #: archive.c:555 archive.c:558 builtin/blame.c:884 builtin/blame.c:888
 #: builtin/blame.c:889 builtin/commit-tree.c:117 builtin/config.c:135
 #: builtin/fast-export.c:1207 builtin/fast-export.c:1209
-#: builtin/fast-export.c:1213 builtin/grep.c:922 builtin/hash-object.c:105
+#: builtin/fast-export.c:1213 builtin/grep.c:921 builtin/hash-object.c:105
 #: builtin/ls-files.c:653 builtin/ls-files.c:656 builtin/notes.c:412
 #: builtin/notes.c:578 builtin/read-tree.c:123 parse-options.h:191
 msgid "file"
@@ -1891,7 +1627,8 @@
 msgstr "列出支援的歸檔格式"
 
 #: archive.c:569 builtin/archive.c:91 builtin/clone.c:118 builtin/clone.c:121
-#: builtin/submodule--helper.c:1831 builtin/submodule--helper.c:2336
+#: builtin/submodule--helper.c:1898 builtin/submodule--helper.c:2352
+#: builtin/submodule--helper.c:2902
 msgid "repo"
 msgstr "版本庫"
 
@@ -1899,7 +1636,7 @@
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "從遠端版本庫(<版本庫>)擷取歸檔檔案"
 
-#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:718
+#: archive.c:571 builtin/archive.c:93 builtin/difftool.c:717
 #: builtin/notes.c:498
 msgid "command"
 msgstr "指令"
@@ -2081,11 +1818,11 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2820 bundle.c:213 ref-filter.c:2207 remote.c:2041 sequencer.c:2333
-#: sequencer.c:4866 submodule.c:857 builtin/commit.c:1106 builtin/log.c:411
-#: builtin/log.c:1018 builtin/log.c:1626 builtin/log.c:2054 builtin/log.c:2344
-#: builtin/merge.c:428 builtin/pack-objects.c:3183 builtin/pack-objects.c:3646
-#: builtin/pack-objects.c:3661 builtin/shortlog.c:255
+#: blame.c:2820 bundle.c:224 ref-filter.c:2278 remote.c:2041 sequencer.c:2333
+#: sequencer.c:4865 submodule.c:844 builtin/commit.c:1113 builtin/log.c:414
+#: builtin/log.c:1021 builtin/log.c:1629 builtin/log.c:2056 builtin/log.c:2346
+#: builtin/merge.c:428 builtin/pack-objects.c:3343 builtin/pack-objects.c:3806
+#: builtin/pack-objects.c:3821 builtin/shortlog.c:255
 msgid "revision walk setup failed"
 msgstr "版本遍歷設定失敗"
 
@@ -2230,123 +1967,123 @@
 #: branch.c:366
 #, c-format
 msgid "'%s' is already checked out at '%s'"
-msgstr "'%s' 已經檢出到 '%s'"
+msgstr "'%s' 已經簽出到 '%s'"
 
 #: branch.c:389
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "工作區 %s 的 HEAD 指向沒有被更新"
 
-#: bundle.c:41
+#: bundle.c:44
 #, c-format
 msgid "unrecognized bundle hash algorithm: %s"
 msgstr "無法識別的包雜湊演算法:%s"
 
-#: bundle.c:45
+#: bundle.c:48
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "未知功能 '%s'"
 
-#: bundle.c:71
+#: bundle.c:74
 #, c-format
 msgid "'%s' does not look like a v2 or v3 bundle file"
 msgstr "'%s' 不像是一個 v2 或 v3 版本的包檔案"
 
-#: bundle.c:110
+#: bundle.c:113
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "無法識別的包頭:%s%s (%d)"
 
-#: bundle.c:136 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
+#: bundle.c:140 rerere.c:464 rerere.c:674 sequencer.c:2593 sequencer.c:3385
 #: builtin/commit.c:861
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能開啟 '%s'"
 
-#: bundle.c:189
+#: bundle.c:198
 msgid "Repository lacks these prerequisite commits:"
 msgstr "版本庫中缺少這些必備的提交:"
 
-#: bundle.c:192
+#: bundle.c:201
 msgid "need a repository to verify a bundle"
 msgstr "需要版本庫驗證一個包"
 
-#: bundle.c:243
+#: bundle.c:257
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "這個包中含有這 %d 個引用:"
 
-#: bundle.c:250
+#: bundle.c:264
 msgid "The bundle records a complete history."
 msgstr "這個包記錄一個完整歷史。"
 
-#: bundle.c:252
+#: bundle.c:266
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "這個包需要這 %d 個引用:"
 
-#: bundle.c:319
+#: bundle.c:333
 msgid "unable to dup bundle descriptor"
 msgstr "無法複製 bundle 描述符"
 
-#: bundle.c:326
+#: bundle.c:340
 msgid "Could not spawn pack-objects"
 msgstr "不能生成 pack-objects 進程"
 
-#: bundle.c:337
+#: bundle.c:351
 msgid "pack-objects died"
 msgstr "pack-objects 終止"
 
-#: bundle.c:386
+#: bundle.c:400
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 選項排除"
 
-#: bundle.c:490
+#: bundle.c:504
 #, c-format
 msgid "unsupported bundle version %d"
 msgstr "不支援的包版本 %d"
 
-#: bundle.c:492
+#: bundle.c:506
 #, c-format
 msgid "cannot write bundle version %d with algorithm %s"
 msgstr "無法寫入 %2$s 演算法的包版本 %1$d"
 
-#: bundle.c:510 builtin/log.c:210 builtin/log.c:1935 builtin/shortlog.c:396
+#: bundle.c:524 builtin/log.c:210 builtin/log.c:1938 builtin/shortlog.c:396
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "無法識別的參數:%s"
 
-#: bundle.c:539
+#: bundle.c:553
 msgid "Refusing to create empty bundle."
 msgstr "不能建立空包。"
 
-#: bundle.c:549
+#: bundle.c:563
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能建立 '%s'"
 
-#: bundle.c:574
+#: bundle.c:588
 msgid "index-pack died"
 msgstr "index-pack 終止"
 
-#: chunk-format.c:113
+#: chunk-format.c:117
 msgid "terminating chunk id appears earlier than expected"
 msgstr "終止區塊 id 出現的時間早於預期"
 
-#: chunk-format.c:122
+#: chunk-format.c:126
 #, c-format
 msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
 msgstr "不正確的區塊偏移 %<PRIx64> 及 %<PRIx64>"
 
-#: chunk-format.c:129
+#: chunk-format.c:133
 #, c-format
 msgid "duplicate chunk ID %<PRIx32> found"
 msgstr "找到重複的區塊 ID %<PRIx32>"
 
-#: chunk-format.c:143
+#: chunk-format.c:147
 #, c-format
 msgid "final chunk has non-zero id %<PRIx32>"
 msgstr "最終區塊有非零 ID %<PRIx32>"
@@ -2414,12 +2151,12 @@
 msgid "commit-graph requires overflow generation data but has none"
 msgstr "提交圖需要比目前更多的世代資料,但沒有相關資料"
 
-#: commit-graph.c:1075 builtin/am.c:1340
+#: commit-graph.c:1075 builtin/am.c:1341
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1337 builtin/pack-objects.c:2897
+#: commit-graph.c:1337 builtin/pack-objects.c:3057
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "無法獲得物件 %s 類型"
@@ -2480,7 +2217,7 @@
 msgid "failed to write correct number of base graph ids"
 msgstr "無法寫入正確數量的基礎圖形 ID"
 
-#: commit-graph.c:1812 midx.c:906
+#: commit-graph.c:1812 midx.c:911
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能為 %s 建立先導目錄"
@@ -2522,84 +2259,84 @@
 
 #: commit-graph.c:2244
 msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
-msgstr "嘗試寫入提交圖形,但 “core.commitGraph” 已被停用。"
+msgstr "嘗試寫入提交圖形,但 “core.commitGraph” 已被停用"
 
 #: commit-graph.c:2351
 msgid "too many commits to write graph"
 msgstr "提交太多不能畫圖"
 
-#: commit-graph.c:2450
+#: commit-graph.c:2449
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交圖檔案的總和檢查碼錯誤,可能已經損壞"
 
-#: commit-graph.c:2460
+#: commit-graph.c:2459
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交圖形的物件 ID 順序不正確:%s 然後 %s"
 
-#: commit-graph.c:2470 commit-graph.c:2485
+#: commit-graph.c:2469 commit-graph.c:2484
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交圖形有不正確的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2477
+#: commit-graph.c:2476
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "無法從提交圖形中解析提交 %s"
 
-#: commit-graph.c:2495
+#: commit-graph.c:2494
 msgid "Verifying commits in commit graph"
 msgstr "正在驗證提交圖中的提交"
 
-#: commit-graph.c:2510
+#: commit-graph.c:2509
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "無法從提交圖形的物件庫中解析提交 %s"
 
-#: commit-graph.c:2517
+#: commit-graph.c:2516
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交圖形中的提交 %s 的根樹狀物件 ID 是 %s != %s"
 
-#: commit-graph.c:2527
+#: commit-graph.c:2526
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交圖形父提交列表太長了"
 
-#: commit-graph.c:2536
+#: commit-graph.c:2535
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交圖形父提交是 %s != %s"
 
-#: commit-graph.c:2550
+#: commit-graph.c:2549
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交圖形父提交列表過早終止"
 
-#: commit-graph.c:2555
+#: commit-graph.c:2554
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號是零,但其它地方非零"
 
-#: commit-graph.c:2559
+#: commit-graph.c:2558
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號非零,但其它地方是零"
 
-#: commit-graph.c:2576
+#: commit-graph.c:2575
 #, c-format
 msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
 msgstr "提交 %s 的提交圖形處於 %<PRIuMAX> < %<PRIuMAX> 世代"
 
-#: commit-graph.c:2582
+#: commit-graph.c:2581
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交圖形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
 
-#: commit.c:52 sequencer.c:3088 builtin/am.c:371 builtin/am.c:416
-#: builtin/am.c:421 builtin/am.c:1419 builtin/am.c:2066 builtin/replace.c:457
+#: commit.c:52 sequencer.c:3088 builtin/am.c:372 builtin/am.c:417
+#: builtin/am.c:422 builtin/am.c:1420 builtin/am.c:2067 builtin/replace.c:457
 #, c-format
 msgid "could not parse %s"
 msgstr "不能解析 %s"
@@ -2881,7 +2618,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必須是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1687 builtin/pack-objects.c:3924
+#: config.c:1687 builtin/pack-objects.c:4084
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "錯誤的打包壓縮級別 %d"
@@ -2901,110 +2638,110 @@
 msgid "unable to resolve config blob '%s'"
 msgstr "不能解析設定物件 '%s'"
 
-#: config.c:1873
+#: config.c:1874
 #, c-format
 msgid "failed to parse %s"
 msgstr "解析 %s 失敗"
 
-#: config.c:1929
+#: config.c:1930
 msgid "unable to parse command-line config"
 msgstr "無法解析指令列中的設定"
 
-#: config.c:2293
+#: config.c:2294
 msgid "unknown error occurred while reading the configuration files"
 msgstr "在讀取設定檔案時遇到未知錯誤"
 
-#: config.c:2467
+#: config.c:2468
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "無效 %s:'%s'"
 
-#: config.c:2512
+#: config.c:2513
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 的取值 '%d' 應該介於 0 和 100 之間"
 
-#: config.c:2558
+#: config.c:2559
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "無法解析指令列設定中的 '%s'"
 
-#: config.c:2560
+#: config.c:2561
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "在檔案 '%2$s' 的第 %3$d 行發現錯誤的設定變數 '%1$s'"
 
-#: config.c:2644
+#: config.c:2645
 #, c-format
 msgid "invalid section name '%s'"
 msgstr "無效的小節名稱 '%s'"
 
-#: config.c:2676
+#: config.c:2677
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s 有多個取值"
 
-#: config.c:2705
+#: config.c:2706
 #, c-format
 msgid "failed to write new configuration file %s"
 msgstr "寫入新的設定檔案 %s 失敗"
 
-#: config.c:2957 config.c:3283
+#: config.c:2958 config.c:3285
 #, c-format
 msgid "could not lock config file %s"
 msgstr "不能鎖定設定檔案 %s"
 
-#: config.c:2968
+#: config.c:2969
 #, c-format
 msgid "opening %s"
 msgstr "開啟 %s"
 
-#: config.c:3005 builtin/config.c:361
+#: config.c:3006 builtin/config.c:361
 #, c-format
 msgid "invalid pattern: %s"
 msgstr "無效模式:%s"
 
-#: config.c:3030
+#: config.c:3031
 #, c-format
 msgid "invalid config file %s"
 msgstr "無效的設定檔案 %s"
 
-#: config.c:3043 config.c:3296
+#: config.c:3044 config.c:3298
 #, c-format
 msgid "fstat on %s failed"
 msgstr "對 %s 呼叫 fstat 失敗"
 
-#: config.c:3054
+#: config.c:3055
 #, c-format
-msgid "unable to mmap '%s'"
-msgstr "不能 mmap '%s'"
+msgid "unable to mmap '%s'%s"
+msgstr "無法 mmap '%s'%s"
 
-#: config.c:3063 config.c:3301
+#: config.c:3065 config.c:3303
 #, c-format
 msgid "chmod on %s failed"
 msgstr "對 %s 呼叫 chmod 失敗"
 
-#: config.c:3148 config.c:3398
+#: config.c:3150 config.c:3400
 #, c-format
 msgid "could not write config file %s"
 msgstr "不能寫入設定檔案 %s"
 
-#: config.c:3182
+#: config.c:3184
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "不能設定 '%s' 為 '%s'"
 
-#: config.c:3184 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
+#: config.c:3186 builtin/remote.c:657 builtin/remote.c:855 builtin/remote.c:863
 #, c-format
 msgid "could not unset '%s'"
 msgstr "不能取消設定 '%s'"
 
-#: config.c:3274
+#: config.c:3276
 #, c-format
 msgid "invalid section name: %s"
 msgstr "無效的小節名稱:%s"
 
-#: config.c:3441
+#: config.c:3443
 #, c-format
 msgid "missing value for '%s'"
 msgstr "%s 的取值缺少"
@@ -3180,7 +2917,7 @@
 msgid "unable to fork"
 msgstr "無法 fork"
 
-#: connected.c:108 builtin/fsck.c:188 builtin/prune.c:45
+#: connected.c:108 builtin/fsck.c:189 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在檢查連通性"
 
@@ -3199,7 +2936,7 @@
 #: convert.c:183
 #, c-format
 msgid "illegal crlf_action %d"
-msgstr "非法的 crlf 動作 %d"
+msgstr "非法的 crlf_action %d"
 
 #: convert.c:196
 #, c-format
@@ -3298,23 +3035,23 @@
 msgid "path name too long for external filter"
 msgstr "外部過濾器的路徑名太長"
 
-#: convert.c:934
+#: convert.c:935
 #, c-format
 msgid ""
 "external filter '%s' is not available anymore although not all paths have "
 "been filtered"
 msgstr "外部過濾器 '%s' 不再可用,但並非所有路徑都已過濾"
 
-#: convert.c:1234
+#: convert.c:1236
 msgid "true/false are no valid working-tree-encodings"
 msgstr "true/false 不是有效的工作區編碼"
 
-#: convert.c:1414 convert.c:1447
+#: convert.c:1416 convert.c:1449
 #, c-format
 msgid "%s: clean filter '%s' failed"
 msgstr "%s:clean 過濾器 '%s' 失敗"
 
-#: convert.c:1490
+#: convert.c:1492
 #, c-format
 msgid "%s: smudge filter %s failed"
 msgstr "%s:smudge 過濾器 %s 失敗"
@@ -3430,36 +3167,36 @@
 msgid "Marked %d islands, done.\n"
 msgstr "已標記 %d 個資料島,結束。\n"
 
-#: diff-merges.c:80
+#: diff-merges.c:70
 #, c-format
 msgid "unknown value for --diff-merges: %s"
 msgstr "--diff-merges 的值無效:%s"
 
-#: diff-lib.c:538
+#: diff-lib.c:557
 msgid "--merge-base does not work with ranges"
-msgstr "—merge-base 跟範圍無法搭配運作"
+msgstr "--merge-base 跟範圍無法搭配運作"
 
-#: diff-lib.c:540
+#: diff-lib.c:559
 msgid "--merge-base only works with commits"
 msgstr "--merge-base 只能跟提交搭配才能運作"
 
-#: diff-lib.c:557
+#: diff-lib.c:576
 msgid "unable to get HEAD"
 msgstr "不能取得 HEAD"
 
-#: diff-lib.c:564
+#: diff-lib.c:583
 msgid "no merge base found"
 msgstr "找不到合併基底"
 
-#: diff-lib.c:566
+#: diff-lib.c:585
 msgid "multiple merge bases found"
 msgstr "找到多個合併基底"
 
-#: diff-no-index.c:238
+#: diff-no-index.c:237
 msgid "git diff --no-index [<options>] <path> <path>"
 msgstr "git diff --no-index [<選項>] <路徑> <路徑>"
 
-#: diff-no-index.c:263
+#: diff-no-index.c:262
 msgid ""
 "Not a git repository. Use --no-index to compare two paths outside a working "
 "tree"
@@ -3482,8 +3219,8 @@
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
 msgstr ""
-"移動的顏色設定必須是 'no'、'default'、'blocks'、'zebra'、'dimmed_zebra' 或 "
-"'plain'"
+"移動的顏色設定必須是 'no'、'default'、'blocks'、'zebra'、'dimmed-"
+"zebra'、'plain'"
 
 #: diff.c:325
 #, c-format
@@ -3514,35 +3251,47 @@
 "發現設定變數 'diff.dirstat' 中的錯誤:\n"
 "%s"
 
-#: diff.c:4278
+#: diff.c:4282
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 離開,停止在 %s"
 
-#: diff.c:4630
+#: diff.c:4634
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4633
+#: diff.c:4637
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4712
+#: diff.c:4640
+msgid ""
+"-G and --pickaxe-regex are mutually exclusive, use --pickaxe-regex with -S"
+msgstr "-G 和 --pickaxe-regex 互斥。請使用 --pickaxe-regex 搭配 -S"
+
+#: diff.c:4643
+msgid ""
+"--pickaxe-all and --find-object are mutually exclusive, use --pickaxe-all "
+"with -G and -S"
+msgstr ""
+"--pickaxe-all 和 --find-object 互斥。請使用 --pickaxe-all 搭配 -G 和 -S"
+
+#: diff.c:4722
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明確要求只跟一個路徑規格"
 
-#: diff.c:4760
+#: diff.c:4770
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "無效的 --stat 值:%s"
 
-#: diff.c:4765 diff.c:4770 diff.c:4775 diff.c:4780 diff.c:5308
+#: diff.c:4775 diff.c:4780 diff.c:4785 diff.c:4790 diff.c:5318
 #: parse-options.c:197 parse-options.c:201 builtin/commit-graph.c:180
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一個數字值"
 
-#: diff.c:4797
+#: diff.c:4807
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3551,200 +3300,200 @@
 "無法解析 --dirstat/-X 選項的參數:\n"
 "%s"
 
-#: diff.c:4882
+#: diff.c:4892
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的變更類 '%1$c'"
 
-#: diff.c:4906
+#: diff.c:4916
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之後未知的值"
 
-#: diff.c:4920
+#: diff.c:4930
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4970 diff.c:4976
+#: diff.c:4980 diff.c:4986
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4988
+#: diff.c:4998
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一個字元,得到 '%s'"
 
-#: diff.c:5009
+#: diff.c:5019
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "壞的 --color-moved 參數:%s"
 
-#: diff.c:5028
+#: diff.c:5038
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的無效模式 '%s'"
 
-#: diff.c:5068
+#: diff.c:5078
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 選項有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5104 diff.c:5124
+#: diff.c:5114 diff.c:5134
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的參數無效"
 
-#: diff.c:5228
+#: diff.c:5238
 #, c-format
 msgid "invalid regex given to -I: '%s'"
 msgstr "傳入 -I 的正規表示式無效:「%s」"
 
-#: diff.c:5277
+#: diff.c:5287
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "無法解析 --submodule 選項的參數:'%s'"
 
-#: diff.c:5333
+#: diff.c:5343
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "壞的 --word-diff 參數:%s"
 
-#: diff.c:5369
+#: diff.c:5379
 msgid "Diff output format options"
 msgstr "差異輸出格式化選項"
 
-#: diff.c:5371 diff.c:5377
+#: diff.c:5381 diff.c:5387
 msgid "generate patch"
 msgstr "生成修補檔"
 
-#: diff.c:5374 builtin/log.c:179
+#: diff.c:5384 builtin/log.c:179
 msgid "suppress diff output"
 msgstr "不顯示差異輸出"
 
-#: diff.c:5379 diff.c:5493 diff.c:5500
+#: diff.c:5389 diff.c:5503 diff.c:5510
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5380 diff.c:5383
+#: diff.c:5390 diff.c:5393
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差異"
 
-#: diff.c:5385
+#: diff.c:5395
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差異"
 
-#: diff.c:5388
+#: diff.c:5398
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同義"
 
-#: diff.c:5392
+#: diff.c:5402
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同義"
 
-#: diff.c:5396
+#: diff.c:5406
 msgid "machine friendly --stat"
 msgstr "機器友好的 --stat"
 
-#: diff.c:5399
+#: diff.c:5409
 msgid "output only the last line of --stat"
 msgstr "只輸出 --stat 的最後一行"
 
-#: diff.c:5401 diff.c:5409
+#: diff.c:5411 diff.c:5419
 msgid "<param1,param2>..."
 msgstr "<參數1,參數2>..."
 
-#: diff.c:5402
+#: diff.c:5412
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "輸出每個子目錄相對變更的分布"
 
-#: diff.c:5406
+#: diff.c:5416
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同義"
 
-#: diff.c:5410
+#: diff.c:5420
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同義詞"
 
-#: diff.c:5414
+#: diff.c:5424
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果變更中引入衝突定界符或空白錯誤,給出警告"
 
-#: diff.c:5417
+#: diff.c:5427
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精簡摘要,例如建立、重新命名和模式變更"
 
-#: diff.c:5420
+#: diff.c:5430
 msgid "show only names of changed files"
 msgstr "只顯示變更檔案的檔案名"
 
-#: diff.c:5423
+#: diff.c:5433
 msgid "show only names and status of changed files"
 msgstr "只顯示變更檔案的檔案名和狀態"
 
-#: diff.c:5425
+#: diff.c:5435
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<寬度>[,<檔案名寬度>[,<次數>]]"
 
-#: diff.c:5426
+#: diff.c:5436
 msgid "generate diffstat"
 msgstr "生成差異統計(diffstat)"
 
-#: diff.c:5428 diff.c:5431 diff.c:5434
+#: diff.c:5438 diff.c:5441 diff.c:5444
 msgid "<width>"
 msgstr "<寬度>"
 
-#: diff.c:5429
+#: diff.c:5439
 msgid "generate diffstat with a given width"
 msgstr "使用提供的長度生成差異統計"
 
-#: diff.c:5432
+#: diff.c:5442
 msgid "generate diffstat with a given name width"
 msgstr "使用提供的檔案名長度生成差異統計"
 
-#: diff.c:5435
+#: diff.c:5445
 msgid "generate diffstat with a given graph width"
 msgstr "使用提供的圖形長度生成差異統計"
 
-#: diff.c:5437
+#: diff.c:5447
 msgid "<count>"
 msgstr "<次數>"
 
-#: diff.c:5438
+#: diff.c:5448
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行數的差異統計"
 
-#: diff.c:5441
+#: diff.c:5451
 msgid "generate compact summary in diffstat"
 msgstr "生成差異統計的簡潔摘要"
 
-#: diff.c:5444
+#: diff.c:5454
 msgid "output a binary diff that can be applied"
 msgstr "輸出一個可以套用的二進位差異"
 
-#: diff.c:5447
+#: diff.c:5457
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行顯示完整的前後物件名稱"
 
-#: diff.c:5449
+#: diff.c:5459
 msgid "show colored diff"
 msgstr "顯示帶顏色的差異"
 
-#: diff.c:5450
+#: diff.c:5460
 msgid "<kind>"
 msgstr "<類型>"
 
-#: diff.c:5451
+#: diff.c:5461
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "對於差異中的上下文、舊的和新的行,加亮顯示錯誤的空白字元"
 
-#: diff.c:5454
+#: diff.c:5464
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3752,311 +3501,311 @@
 "在 --raw 或者 --numstat 中,不對路徑字元轉檔並使用 NUL 字元做為輸出欄位的分隔"
 "符"
 
-#: diff.c:5457 diff.c:5460 diff.c:5463 diff.c:5572
+#: diff.c:5467 diff.c:5470 diff.c:5473 diff.c:5582
 msgid "<prefix>"
 msgstr "<前綴>"
 
-#: diff.c:5458
+#: diff.c:5468
 msgid "show the given source prefix instead of \"a/\""
 msgstr "顯示提供的源前綴取代 \"a/\""
 
-#: diff.c:5461
+#: diff.c:5471
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "顯示提供的目標前綴取代 \"b/\""
 
-#: diff.c:5464
+#: diff.c:5474
 msgid "prepend an additional prefix to every line of output"
 msgstr "輸出的每一行附加前綴"
 
-#: diff.c:5467
+#: diff.c:5477
 msgid "do not show any source or destination prefix"
 msgstr "不顯示任何源和目標前綴"
 
-#: diff.c:5470
+#: diff.c:5480
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "顯示指定行數的差異區塊間的上下文"
 
-#: diff.c:5474 diff.c:5479 diff.c:5484
+#: diff.c:5484 diff.c:5489 diff.c:5494
 msgid "<char>"
 msgstr "<字元>"
 
-#: diff.c:5475
+#: diff.c:5485
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一個字元取代 '+' 來表示新的一行"
 
-#: diff.c:5480
+#: diff.c:5490
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一個字元取代 '-' 來表示舊的一行"
 
-#: diff.c:5485
+#: diff.c:5495
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一個字元取代 ' ' 來表示一行上下文"
 
-#: diff.c:5488
+#: diff.c:5498
 msgid "Diff rename options"
 msgstr "差異重新命名選項"
 
-#: diff.c:5489
+#: diff.c:5499
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5490
+#: diff.c:5500
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "將完全重寫的變更打破為成對的刪除和建立"
 
-#: diff.c:5494
+#: diff.c:5504
 msgid "detect renames"
 msgstr "檢測重新命名"
 
-#: diff.c:5498
+#: diff.c:5508
 msgid "omit the preimage for deletes"
 msgstr "省略刪除變更的差異輸出"
 
-#: diff.c:5501
+#: diff.c:5511
 msgid "detect copies"
 msgstr "檢測複製"
 
-#: diff.c:5505
+#: diff.c:5515
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的檔案做為發現複製的源"
 
-#: diff.c:5507
+#: diff.c:5517
 msgid "disable rename detection"
 msgstr "停用重新命名偵測"
 
-#: diff.c:5510
+#: diff.c:5520
 msgid "use empty blobs as rename source"
 msgstr "使用空的資料物件做為重新命名的源"
 
-#: diff.c:5512
+#: diff.c:5522
 msgid "continue listing the history of a file beyond renames"
 msgstr "繼續列出檔案重新命名以外的歷史記錄"
 
-#: diff.c:5515
+#: diff.c:5525
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重新命名/複製目標超過提供的限制,禁止重新命名/複製檢測"
 
-#: diff.c:5517
+#: diff.c:5527
 msgid "Diff algorithm options"
 msgstr "差異演算法選項"
 
-#: diff.c:5519
+#: diff.c:5529
 msgid "produce the smallest possible diff"
 msgstr "生成儘可能小的差異"
 
-#: diff.c:5522
+#: diff.c:5532
 msgid "ignore whitespace when comparing lines"
 msgstr "行比較時忽略空白字元"
 
-#: diff.c:5525
+#: diff.c:5535
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字元的變更"
 
-#: diff.c:5528
+#: diff.c:5538
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字元變更"
 
-#: diff.c:5531
+#: diff.c:5541
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的Enter符(CR)"
 
-#: diff.c:5534
+#: diff.c:5544
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的變更"
 
-#: diff.c:5536 diff.c:5558 diff.c:5561 diff.c:5606
+#: diff.c:5546 diff.c:5568 diff.c:5571 diff.c:5616
 msgid "<regex>"
 msgstr "<正則>"
 
-#: diff.c:5537
+#: diff.c:5547
 msgid "ignore changes whose all lines match <regex>"
 msgstr "忽略整行符合 <regex> 的變更"
 
-#: diff.c:5540
+#: diff.c:5550
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "啟發式轉換差異邊界以便閱讀"
 
-#: diff.c:5543
+#: diff.c:5553
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 演算法生成差異"
 
-#: diff.c:5547
+#: diff.c:5557
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 演算法生成差異"
 
-#: diff.c:5549
+#: diff.c:5559
 msgid "<algorithm>"
 msgstr "<演算法>"
 
-#: diff.c:5550
+#: diff.c:5560
 msgid "choose a diff algorithm"
 msgstr "選擇一個差異演算法"
 
-#: diff.c:5552
+#: diff.c:5562
 msgid "<text>"
 msgstr "<文字>"
 
-#: diff.c:5553
+#: diff.c:5563
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 演算法生成差異"
 
-#: diff.c:5555 diff.c:5564 diff.c:5567
+#: diff.c:5565 diff.c:5574 diff.c:5577
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5556
+#: diff.c:5566
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "顯示單詞差異,使用 <模式> 分隔變更的單詞"
 
-#: diff.c:5559
+#: diff.c:5569
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正規表示式> 確定何為一個詞"
 
-#: diff.c:5562
+#: diff.c:5572
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相當於 --word-diff=color --word-diff-regex=<正則>"
 
-#: diff.c:5565
+#: diff.c:5575
 msgid "moved lines of code are colored differently"
 msgstr "移動的程式碼行用不同方式著色"
 
-#: diff.c:5568
+#: diff.c:5578
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字元"
 
-#: diff.c:5571
+#: diff.c:5581
 msgid "Other diff options"
 msgstr "其它差異選項"
 
-#: diff.c:5573
+#: diff.c:5583
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "當從子目錄執行,排除目錄之外的變更並顯示相對路徑"
 
-#: diff.c:5577
+#: diff.c:5587
 msgid "treat all files as text"
 msgstr "把所有檔案當做文字處理"
 
-#: diff.c:5579
+#: diff.c:5589
 msgid "swap two inputs, reverse the diff"
 msgstr "交換兩個輸入,反轉差異"
 
-#: diff.c:5581
+#: diff.c:5591
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差異時離開碼為 1,否則為 0"
 
-#: diff.c:5583
+#: diff.c:5593
 msgid "disable all output of the program"
 msgstr "停用本程式的所有輸出"
 
-#: diff.c:5585
+#: diff.c:5595
 msgid "allow an external diff helper to be executed"
 msgstr "允許執行一個外部的差異協助工具"
 
-#: diff.c:5587
+#: diff.c:5597
 msgid "run external text conversion filters when comparing binary files"
 msgstr "當比較二進位檔案時,執行外部的文字轉換過濾器"
 
-#: diff.c:5589
+#: diff.c:5599
 msgid "<when>"
 msgstr "<何時>"
 
-#: diff.c:5590
+#: diff.c:5600
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差異時,忽略子模組的更改"
 
-#: diff.c:5593
+#: diff.c:5603
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5594
+#: diff.c:5604
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模組的差異如何顯示"
 
-#: diff.c:5598
+#: diff.c:5608
 msgid "hide 'git add -N' entries from the index"
 msgstr "隱藏索引中 'git add -N' 條目"
 
-#: diff.c:5601
+#: diff.c:5611
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "將索引中 'git add -N' 條目當做真實的"
 
-#: diff.c:5603
+#: diff.c:5613
 msgid "<string>"
 msgstr "<字串>"
 
-#: diff.c:5604
+#: diff.c:5614
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "尋找改變了指定字串出現次數的差異"
 
-#: diff.c:5607
+#: diff.c:5617
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "尋找改變指定正則符合出現次數的差異"
 
-#: diff.c:5610
+#: diff.c:5620
 msgid "show all changes in the changeset with -S or -G"
 msgstr "顯示使用 -S 或 -G 的變更集的所有變更"
 
-#: diff.c:5613
+#: diff.c:5623
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "將 -S 的 <string> 當做擴展的 POSIX 正規表示式"
 
-#: diff.c:5616
+#: diff.c:5626
 msgid "control the order in which files appear in the output"
 msgstr "控制輸出中的檔案顯示順序"
 
-#: diff.c:5617 diff.c:5620
+#: diff.c:5627 diff.c:5630
 msgid "<path>"
 msgstr "<路徑>"
 
-#: diff.c:5618
+#: diff.c:5628
 msgid "show the change in the specified path first"
 msgstr "先顯示指定路徑的變更"
 
-#: diff.c:5621
+#: diff.c:5631
 msgid "skip the output to the specified path"
 msgstr "略過輸出至指定路徑"
 
-#: diff.c:5623
+#: diff.c:5633
 msgid "<object-id>"
 msgstr "<物件 ID>"
 
-#: diff.c:5624
+#: diff.c:5634
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "尋找改變指定物件出現次數的差異"
 
-#: diff.c:5626
+#: diff.c:5636
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5627
+#: diff.c:5637
 msgid "select files by diff type"
 msgstr "透過差異類型選擇檔案"
 
-#: diff.c:5629
+#: diff.c:5639
 msgid "<file>"
 msgstr "<檔案>"
 
-#: diff.c:5630
+#: diff.c:5640
 msgid "Output to a specific file"
 msgstr "輸出到一個指定的檔案"
 
-#: diff.c:6287
-msgid "inexact rename detection was skipped due to too many files."
-msgstr "因為檔案太多,略過不嚴格的重新命名檢查。"
+#: diff.c:6298
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr "因為檔案太多,已略過詳細重新命名偵測。"
 
-#: diff.c:6290
+#: diff.c:6301
 msgid "only found copies from modified paths due to too many files."
 msgstr "因為檔案太多,只在修改的路徑中尋找複製。"
 
-#: diff.c:6293
+#: diff.c:6304
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -4067,7 +3816,7 @@
 msgid "failed to read orderfile '%s'"
 msgstr "讀取排序檔案 '%s' 失敗"
 
-#: diffcore-rename.c:1418
+#: diffcore-rename.c:1514
 msgid "Performing inexact rename detection"
 msgstr "正在進行非精確的重新命名偵測"
 
@@ -4076,59 +3825,59 @@
 msgid "No such path '%s' in the diff"
 msgstr "diff 中沒有「%s」路徑"
 
-#: dir.c:578
+#: dir.c:593
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "路徑規格 '%s' 未符合任何 git 已知檔案"
 
-#: dir.c:718 dir.c:747 dir.c:760
+#: dir.c:733 dir.c:762 dir.c:775
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "無法識別樣式:「%s」"
 
-#: dir.c:777 dir.c:791
+#: dir.c:790 dir.c:804
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "無法識別反向模式:「%s」"
 
-#: dir.c:809
+#: dir.c:820
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
-msgstr "您的稀疏檢出檔案可能有問題:「%s」樣式重複"
+msgstr "您的稀疏簽出檔案可能有問題:「%s」樣式重複"
 
-#: dir.c:819
+#: dir.c:830
 msgid "disabling cone pattern matching"
 msgstr "停用 cone 樣式符合模式"
 
-#: dir.c:1206
+#: dir.c:1214
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "不能將 %s 用作排除檔案"
 
-#: dir.c:2314
+#: dir.c:2351
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "不能開啟目錄 '%s'"
 
-#: dir.c:2614
+#: dir.c:2653
 msgid "failed to get kernel name and information"
 msgstr "無法獲得核心名稱和訊息"
 
-#: dir.c:2738
+#: dir.c:2777
 msgid "untracked cache is disabled on this system or location"
 msgstr "快取未追蹤檔案在本系統或位置中被停用"
 
-#: dir.c:3543
+#: dir.c:3610
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "版本庫 %s 中的索引檔案損壞"
 
-#: dir.c:3590 dir.c:3595
+#: dir.c:3657 dir.c:3662
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能為 %s 建立目錄"
 
-#: dir.c:3624
+#: dir.c:3691
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能從 '%s' 遷移 git 目錄到 '%s'"
@@ -4138,11 +3887,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "提示:等待您的編輯器關閉檔案...%c"
 
-#: entry.c:179
+#: entry.c:176
 msgid "Filtering content"
 msgstr "過濾內容"
 
-#: entry.c:500
+#: entry.c:497
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "不能對檔案 '%s' 呼叫 stat"
@@ -4152,7 +3901,7 @@
 msgid "bad git namespace path \"%s\""
 msgstr "錯誤的 git 名字空間路徑 \"%s\""
 
-#: environment.c:335
+#: environment.c:334
 #, c-format
 msgid "could not set GIT_DIR to '%s'"
 msgstr "不能設定 GIT_DIR 為 '%s'"
@@ -4291,7 +4040,7 @@
 
 #: fetch-pack.c:1029
 msgid "Server does not support shallow clients"
-msgstr "伺服器不支援 shalllow 用戶端"
+msgstr "伺服器不支援 shallow 用戶端"
 
 #: fetch-pack.c:1089
 msgid "Server does not support --shallow-since"
@@ -4315,9 +4064,9 @@
 
 #: fetch-pack.c:1122 fetch-pack.c:1469 builtin/clone.c:1238
 msgid "source repository is shallow, reject to clone."
-msgstr "來源版本庫是淺版本庫 (shallow)。拒絕 clone。"
+msgstr "來源版本庫是淺版本庫 (shallow)。拒絕複製。"
 
-#: fetch-pack.c:1128 fetch-pack.c:1651
+#: fetch-pack.c:1128 fetch-pack.c:1660
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:取得失敗。"
 
@@ -4333,13 +4082,13 @@
 
 #: fetch-pack.c:1279
 msgid "Server does not support shallow requests"
-msgstr "伺服器不支援 shalllow 請求"
+msgstr "伺服器不支援 shallow 請求"
 
 #: fetch-pack.c:1286
 msgid "Server supports filter"
 msgstr "伺服器支援 filter"
 
-#: fetch-pack.c:1329 fetch-pack.c:2034
+#: fetch-pack.c:1329 fetch-pack.c:2043
 msgid "unable to write request to remote"
 msgstr "無法將請求寫到遠端"
 
@@ -4395,24 +4144,24 @@
 msgid "git fetch-pack: expected response end packet"
 msgstr "git fetch-pack: 預期要有回應結束封包"
 
-#: fetch-pack.c:1930
+#: fetch-pack.c:1939
 msgid "no matching remote head"
 msgstr "沒有符合的遠端分支"
 
-#: fetch-pack.c:1953 builtin/clone.c:697
+#: fetch-pack.c:1962 builtin/clone.c:697
 msgid "remote did not send all necessary objects"
 msgstr "遠端沒有傳送所有必需的物件"
 
-#: fetch-pack.c:2056
+#: fetch-pack.c:2065
 msgid "unexpected 'ready' from remote"
 msgstr "從遠端收到非預期的 ‘ready’"
 
-#: fetch-pack.c:2079
+#: fetch-pack.c:2088
 #, c-format
 msgid "no such remote ref %s"
 msgstr "沒有這樣的遠端引用 %s"
 
-#: fetch-pack.c:2082
+#: fetch-pack.c:2091
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "伺服器不允許請求未公開的物件 %s"
@@ -4432,8 +4181,8 @@
 
 #: graph.c:98
 #, c-format
-msgid "ignore invalid color '%.*s' in log.graphColors"
-msgstr "忽略 log.graphColors 中無效的顏色 '%.*s'"
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "已忽略 log.graphColors 中無效的 “%.*s” 色彩"
 
 #: grep.c:531
 msgid ""
@@ -4443,18 +4192,18 @@
 "提供的模式包含 NULL 字元(通過 -f <檔案> 參數)。只有 PCRE v2 下的 -P 支援此"
 "功能"
 
-#: grep.c:1893
+#: grep.c:1895
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s':無法讀取 %s"
 
-#: grep.c:1910 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
+#: grep.c:1912 setup.c:176 builtin/clone.c:416 builtin/diff.c:90
 #: builtin/rm.c:136
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "對 '%s' 呼叫 stat 失敗"
 
-#: grep.c:1921
+#: grep.c:1923
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s':讀取不完整"
@@ -4685,7 +4434,7 @@
 
 #: list-objects-filter-options.c:105
 #, c-format
-msgid "'%s' for 'object:type=<type>' isnot a valid object type"
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
 msgstr "“object:type=<type>” 的 “%s” 不是有效的物件格式"
 
 #: list-objects-filter-options.c:124
@@ -4730,7 +4479,7 @@
 msgid "entry '%s' in tree %s has blob mode, but is not a blob"
 msgstr "樹 %2$s 中的條目 '%1$s' 具有資料物件的屬性,但不是一個資料物件"
 
-#: list-objects.c:395
+#: list-objects.c:398
 #, c-format
 msgid "unable to load root tree for commit %s"
 msgstr "無法為提交 %s 載入根樹"
@@ -4776,32 +4525,32 @@
 msgid "bad action '%s' for '%s'"
 msgstr "「%s」動作對「%s」無效"
 
-#: merge-ort.c:1116 merge-recursive.c:1205
+#: merge-ort.c:1569 merge-recursive.c:1201
 #, c-format
 msgid "Failed to merge submodule %s (not checked out)"
-msgstr "無法合併子模組 %s (沒有檢出)"
+msgstr "無法合併子模組 %s (沒有簽出)"
 
-#: merge-ort.c:1125 merge-recursive.c:1212
+#: merge-ort.c:1578 merge-recursive.c:1208
 #, c-format
 msgid "Failed to merge submodule %s (commits not present)"
 msgstr "無法合併子模組 %s(提交不存在)"
 
-#: merge-ort.c:1134 merge-recursive.c:1219
+#: merge-ort.c:1587 merge-recursive.c:1215
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr "無法合併子模組 %s (提交未跟隨合併基礎)"
 
-#: merge-ort.c:1144 merge-ort.c:1151
+#: merge-ort.c:1597 merge-ort.c:1604
 #, c-format
 msgid "Note: Fast-forwarding submodule %s to %s"
 msgstr "注意:正在將 %s 子模組快轉到 %s"
 
-#: merge-ort.c:1172
+#: merge-ort.c:1625
 #, c-format
 msgid "Failed to merge submodule %s"
 msgstr "無法合併 %s 子模組"
 
-#: merge-ort.c:1179
+#: merge-ort.c:1632
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but a possible merge resolution exists:\n"
@@ -4810,7 +4559,7 @@
 "無法合併 %s 子模組,但有找到一個可行的合併方案:\n"
 "%s\n"
 
-#: merge-ort.c:1183 merge-recursive.c:1273
+#: merge-ort.c:1636 merge-recursive.c:1269
 #, c-format
 msgid ""
 "If this is correct simply add it to the index for example\n"
@@ -4826,7 +4575,7 @@
 "\n"
 "以接受此建議。\n"
 
-#: merge-ort.c:1196
+#: merge-ort.c:1649
 #, c-format
 msgid ""
 "Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -4835,21 +4584,21 @@
 "無法合併 %s 子模組,但有找到幾個可行的合併方案:\n"
 "%s"
 
-#: merge-ort.c:1415 merge-recursive.c:1362
+#: merge-ort.c:1868 merge-recursive.c:1358
 msgid "Failed to execute internal merge"
 msgstr "無法執行內部合併"
 
-#: merge-ort.c:1420 merge-recursive.c:1367
+#: merge-ort.c:1873 merge-recursive.c:1363
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "不能新增 %s 至物件庫"
 
-#: merge-ort.c:1427 merge-recursive.c:1400
+#: merge-ort.c:1880 merge-recursive.c:1396
 #, c-format
 msgid "Auto-merging %s"
 msgstr "自動合併 %s"
 
-#: merge-ort.c:1566 merge-recursive.c:2122
+#: merge-ort.c:2019 merge-recursive.c:2118
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4858,7 +4607,7 @@
 "衝突(隱式目錄重新命名):處於隱式目錄重新命名的現存檔案/目錄 %s,將以下路徑"
 "放在:%s。"
 
-#: merge-ort.c:1576 merge-recursive.c:2132
+#: merge-ort.c:2029 merge-recursive.c:2128
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4867,24 +4616,24 @@
 "衝突(隱式目錄重新命名):無法映射一個以上路徑到 %s,隱式目錄重新命名嘗試將這"
 "些路徑放置於此:%s"
 
-#: merge-ort.c:1634
-#, fuzzy, c-format
+#: merge-ort.c:2087
+#, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to rename %s to; it was "
 "renamed to multiple other directories, with no destination getting a "
 "majority of the files."
 msgstr ""
-"衝突(分割的目錄重新命名):未知 %s 應重新命名成什麼。其已重新命名為多個其他"
-"目錄,卻沒有目的地取得檔案的主要部分。"
+"衝突(分割的目錄重新命名):未知 %s 重新命名的位置。它被重新命名為多個其他目"
+"錄,但沒有目的地取得過半檔案。"
 
-#: merge-ort.c:1788 merge-recursive.c:2468
+#: merge-ort.c:2241 merge-recursive.c:2464
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
 "renamed."
 msgstr "警告:避免套用 %s -> %s 的重新命名到 %s,因為 %s 本身已被重新命名。"
 
-#: merge-ort.c:1932 merge-recursive.c:3244
+#: merge-ort.c:2385 merge-recursive.c:3247
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4892,7 +4641,7 @@
 msgstr ""
 "路徑已更新:%s 新增到 %s,位於一個被重新命名到 %s 的目錄中,將其移動到 %s。"
 
-#: merge-ort.c:1939 merge-recursive.c:3251
+#: merge-ort.c:2392 merge-recursive.c:3254
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4901,7 +4650,7 @@
 "路徑已更新:%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s 中,將"
 "其移動到 %5$s。"
 
-#: merge-ort.c:1952 merge-recursive.c:3247
+#: merge-ort.c:2405 merge-recursive.c:3250
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4910,7 +4659,7 @@
 "衝突(檔案位置):%s 新增到 %s,位於一個被重新命名為 %s 的目錄中,建議將其移"
 "動到 %s。"
 
-#: merge-ort.c:1960 merge-recursive.c:3254
+#: merge-ort.c:2413 merge-recursive.c:3257
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4919,14 +4668,14 @@
 "衝突(檔案位置):%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s "
 "中,建議將其移動到 %5$s。"
 
-#: merge-ort.c:2103
+#: merge-ort.c:2569
 #, c-format
 msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
 msgstr ""
 "衝突(重新命名/重新命名):%1$s 已重新命名為 %3$s 中的 %2$s 和 %5$s 中的 "
 "%4$s。"
 
-#: merge-ort.c:2198
+#: merge-ort.c:2664
 #, c-format
 msgid ""
 "CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -4936,65 +4685,65 @@
 "衝突(重新命名陷入相撞):%s -> %s 這個重新命名有內容衝突並與其他路徑相撞,可"
 "能會因此出現巢狀衝突標記。"
 
-#: merge-ort.c:2217 merge-ort.c:2241
+#: merge-ort.c:2683 merge-ort.c:2707
 #, c-format
 msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
 msgstr ""
 "衝突(重新命名/刪除):%1$s 已重新命名為 %3$s 中的 %2$s 卻在 %4$s 中被刪除。"
 
-#: merge-ort.c:2550 merge-recursive.c:3002
+#: merge-ort.c:3182 merge-recursive.c:3008
 #, c-format
 msgid "cannot read object %s"
 msgstr "不能讀取物件 %s"
 
-#: merge-ort.c:2553 merge-recursive.c:3005
+#: merge-ort.c:3185 merge-recursive.c:3011
 #, c-format
 msgid "object %s is not a blob"
 msgstr "物件 %s 不是一個資料物件"
 
-#: merge-ort.c:2981
-#, fuzzy, c-format
+#: merge-ort.c:3613
+#, c-format
 msgid ""
 "CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
 "%s instead."
-msgstr "衝突(檔案/目錄):目錄擋住來自 %2$s 的 %1$s。改移動到 %3$s。"
+msgstr "衝突(檔案/目錄):目錄佔住 %2$s 中 %1$s 的位置。改移動到 %3$s。"
 
-#: merge-ort.c:3055
-#, fuzzy, c-format
+#: merge-ort.c:3689
+#, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed both "
 "of them so each can be recorded somewhere."
 msgstr ""
-"衝突(類型有異):每個來源的 %s 類型不同。已經重新命名這兩個來源,這樣每個來"
-"源都可以分別記錄。"
+"衝突(類型有異):兩方的 %s 類型皆不同。已經重新命名這兩個來源,這樣就可以分"
+"別記錄這兩方檔案。"
 
-#: merge-ort.c:3062
-#, fuzzy, c-format
+#: merge-ort.c:3696
+#, c-format
 msgid ""
 "CONFLICT (distinct types): %s had different types on each side; renamed one "
 "of them so each can be recorded somewhere."
 msgstr ""
-"衝突(類型有異):每個來源的 %s 類型不同。已經重新命名其中一個來源,這樣每個"
-"來源都可以分別記錄。"
+"衝突(類型有異):兩方的 %s 類型皆不同。已經重新命名其中一個來源,這樣就可以"
+"分別記錄這兩方檔案。"
 
-#: merge-ort.c:3162 merge-recursive.c:3081
+#: merge-ort.c:3796 merge-recursive.c:3087
 msgid "content"
 msgstr "內容"
 
-#: merge-ort.c:3164 merge-recursive.c:3085
+#: merge-ort.c:3798 merge-recursive.c:3091
 msgid "add/add"
 msgstr "新增/新增"
 
-#: merge-ort.c:3166 merge-recursive.c:3130
+#: merge-ort.c:3800 merge-recursive.c:3136
 msgid "submodule"
 msgstr "子模組"
 
-#: merge-ort.c:3168 merge-recursive.c:3131
+#: merge-ort.c:3802 merge-recursive.c:3137
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "衝突(%s):合併衝突於 %s"
 
-#: merge-ort.c:3198
+#: merge-ort.c:3833
 #, c-format
 msgid ""
 "CONFLICT (modify/delete): %s deleted in %s and modified in %s.  Version %s "
@@ -5003,7 +4752,7 @@
 "衝突(修改/刪除):%1$s 已在 %2$s 刪除和在 %3$s 修改。%5$s 的 %4$s 版本留在樹"
 "上。"
 
-#: merge-ort.c:3433
+#: merge-ort.c:4120
 #, c-format
 msgid ""
 "Note: %s not up to date and in way of checking out conflicted version; old "
@@ -5013,12 +4762,12 @@
 #. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
 #. base, and 2-3) the trees for the two trees we're merging.
 #.
-#: merge-ort.c:3730
+#: merge-ort.c:4487
 #, c-format
 msgid "collecting merge info failed for trees %s, %s, %s"
 msgstr "%s, %s, %s 樹的合併資訊收集失敗"
 
-#: merge-ort-wrappers.c:13 merge-recursive.c:3699
+#: merge-ort-wrappers.c:13 merge-recursive.c:3702
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -5027,103 +4776,103 @@
 "您對下列檔案的本機修改將被合併動作覆蓋:\n"
 "  %s"
 
-#: merge-ort-wrappers.c:33 merge-recursive.c:3465 builtin/merge.c:402
+#: merge-ort-wrappers.c:33 merge-recursive.c:3468 builtin/merge.c:402
 msgid "Already up to date."
 msgstr "已經是最新的。"
 
-#: merge-recursive.c:356
+#: merge-recursive.c:352
 msgid "(bad commit)\n"
 msgstr "(壞提交)\n"
 
-#: merge-recursive.c:379
+#: merge-recursive.c:375
 #, c-format
 msgid "add_cacheinfo failed for path '%s'; merge aborting."
 msgstr "add_cacheinfo 對路徑 '%s' 執行失敗,合併終止。"
 
-#: merge-recursive.c:388
+#: merge-recursive.c:384
 #, c-format
 msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr "add_cacheinfo 無法重新整理路徑 '%s',合併終止。"
 
-#: merge-recursive.c:876
+#: merge-recursive.c:872
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "建立路徑 '%s'%s 失敗"
 
-#: merge-recursive.c:887
+#: merge-recursive.c:883
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "刪除 %s 以便為子目錄留出空間\n"
 
-#: merge-recursive.c:901 merge-recursive.c:920
+#: merge-recursive.c:897 merge-recursive.c:916
 msgid ": perhaps a D/F conflict?"
 msgstr ":可能是一個目錄/檔案衝突?"
 
-#: merge-recursive.c:910
+#: merge-recursive.c:906
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "拒絕捨棄 '%s' 中的未追蹤檔案"
 
-#: merge-recursive.c:951 builtin/cat-file.c:41
+#: merge-recursive.c:947 builtin/cat-file.c:41
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "不能讀取物件 %s '%s'"
 
-#: merge-recursive.c:956
+#: merge-recursive.c:952
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "%s '%s' 應為資料物件"
 
-#: merge-recursive.c:981
+#: merge-recursive.c:977
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "開啟 '%s' 失敗:%s"
 
-#: merge-recursive.c:992
+#: merge-recursive.c:988
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "建立符號連結 '%s' 失敗:%s"
 
-#: merge-recursive.c:997
+#: merge-recursive.c:993
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "不知道如何處理 %06o %s '%s'"
 
-#: merge-recursive.c:1227 merge-recursive.c:1239
+#: merge-recursive.c:1223 merge-recursive.c:1235
 #, c-format
 msgid "Fast-forwarding submodule %s to the following commit:"
 msgstr "子模組 %s 快轉到如下提交:"
 
-#: merge-recursive.c:1230 merge-recursive.c:1242
+#: merge-recursive.c:1226 merge-recursive.c:1238
 #, c-format
 msgid "Fast-forwarding submodule %s"
 msgstr "快轉子模組 %s"
 
-#: merge-recursive.c:1265
+#: merge-recursive.c:1261
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr "無法合併子模組 %s (沒發現合併跟隨的提交)"
 
-#: merge-recursive.c:1269
+#: merge-recursive.c:1265
 #, c-format
 msgid "Failed to merge submodule %s (not fast-forward)"
 msgstr "無法合併子模組 %s(非快轉)"
 
-#: merge-recursive.c:1270
+#: merge-recursive.c:1266
 msgid "Found a possible merge resolution for the submodule:\n"
 msgstr "找到子模組的一個可能的合併方案:\n"
 
-#: merge-recursive.c:1282
+#: merge-recursive.c:1278
 #, c-format
 msgid "Failed to merge submodule %s (multiple merges found)"
 msgstr "無法合併子模組 %s (發現多個合併)"
 
-#: merge-recursive.c:1424
+#: merge-recursive.c:1420
 #, c-format
 msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
 msgstr "錯誤:拒絕遺失未追蹤檔案 '%s',而是寫入 %s。"
 
-#: merge-recursive.c:1496
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5132,7 +4881,7 @@
 "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本被保留。"
 
-#: merge-recursive.c:1501
+#: merge-recursive.c:1497
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5141,7 +4890,7 @@
 "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本被保留。"
 
-#: merge-recursive.c:1508
+#: merge-recursive.c:1504
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -5150,7 +4899,7 @@
 "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本保留在 %8$s 中。"
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1509
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -5159,41 +4908,41 @@
 "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本保留在 %9$s 中。"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "rename"
 msgstr "重新命名"
 
-#: merge-recursive.c:1548
+#: merge-recursive.c:1544
 msgid "renamed"
 msgstr "重新命名"
 
-#: merge-recursive.c:1599 merge-recursive.c:2505 merge-recursive.c:3158
+#: merge-recursive.c:1595 merge-recursive.c:2501 merge-recursive.c:3164
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "拒絕遺失髒檔案 '%s'"
 
-#: merge-recursive.c:1609
+#: merge-recursive.c:1605
 #, c-format
 msgid "Refusing to lose untracked file at %s, even though it's in the way."
 msgstr "拒絕在 '%s' 處失去未追蹤檔案,即使它存在於重新命名中。"
 
-#: merge-recursive.c:1667
+#: merge-recursive.c:1663
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s.  Added %s in %s"
 msgstr ""
 "衝突(重新命名/新增):在 %3$s 中重新命名 %1$s->%2$s。在 %5$s 中新增 %4$s"
 
-#: merge-recursive.c:1698
+#: merge-recursive.c:1694
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s 是 %s 中的一個目錄而已 %s 為名被新增"
 
-#: merge-recursive.c:1703
+#: merge-recursive.c:1699
 #, c-format
 msgid "Refusing to lose untracked file at %s; adding as %s instead"
 msgstr "拒絕遺失未追蹤檔案 '%s',而是新增為 %s"
 
-#: merge-recursive.c:1730
+#: merge-recursive.c:1726
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -5202,18 +4951,18 @@
 "衝突(重新命名/重新命名):在分支 \"%3$s\" 中重新命名 \"%1$s\"->\"%2$s\",在"
 "分支 \"%6$s\" 中重新命名 \"%4$s\"->\"%5$s\"%7$s"
 
-#: merge-recursive.c:1735
+#: merge-recursive.c:1731
 msgid " (left unresolved)"
 msgstr " (留下未解決)"
 
-#: merge-recursive.c:1827
+#: merge-recursive.c:1823
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "衝突(重新命名/重新命名):在 %3$s 中重新命名 %1$s->%2$s,在 %6$s 中重新命名 "
 "%4$s->%5$s"
 
-#: merge-recursive.c:2090
+#: merge-recursive.c:2086
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -5223,7 +4972,7 @@
 "衝突(分割的目錄重新命名):不清楚 %s 應該放在哪裡,因為目錄 %s 被重新命名到"
 "多個其它目錄,沒有目錄包含大部分檔案。"
 
-#: merge-recursive.c:2224
+#: merge-recursive.c:2220
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -5232,77 +4981,77 @@
 "衝突(重新命名/重新命名):在 %3$s 中重新命名目錄 %1$s->%2$s,在 %6$s 中重新"
 "命名目錄 %4$s->%5$s"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modify"
 msgstr "修改"
 
-#: merge-recursive.c:3069
+#: merge-recursive.c:3075
 msgid "modified"
 msgstr "修改"
 
-#: merge-recursive.c:3108
+#: merge-recursive.c:3114
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "略過 %s(已經做過相同合併)"
 
-#: merge-recursive.c:3161
+#: merge-recursive.c:3167
 #, c-format
 msgid "Adding as %s instead"
 msgstr "而是以 %s 為名新增"
 
-#: merge-recursive.c:3368
+#: merge-recursive.c:3371
 #, c-format
 msgid "Removing %s"
 msgstr "刪除 %s"
 
-#: merge-recursive.c:3391
+#: merge-recursive.c:3394
 msgid "file/directory"
 msgstr "檔案/目錄"
 
-#: merge-recursive.c:3396
+#: merge-recursive.c:3399
 msgid "directory/file"
 msgstr "目錄/檔案"
 
-#: merge-recursive.c:3403
+#: merge-recursive.c:3406
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr "衝突(%1$s):在 %3$s 中有一個名為 %2$s 的目錄。以 %5$s 為名新增 %4$s"
 
-#: merge-recursive.c:3412
+#: merge-recursive.c:3415
 #, c-format
 msgid "Adding %s"
 msgstr "新增 %s"
 
-#: merge-recursive.c:3421
+#: merge-recursive.c:3424
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "衝突(add/add):合併衝突於 %s"
 
-#: merge-recursive.c:3474
+#: merge-recursive.c:3477
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "無法合併樹 %s 和 %s"
 
-#: merge-recursive.c:3568
+#: merge-recursive.c:3571
 msgid "Merging:"
 msgstr "合併:"
 
-#: merge-recursive.c:3581
+#: merge-recursive.c:3584
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "發現 %u 個共同祖先:"
 
-#: merge-recursive.c:3631
+#: merge-recursive.c:3634
 msgid "merge returned no commit"
 msgstr "合併未返回提交"
 
-#: merge-recursive.c:3796
+#: merge-recursive.c:3799
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "不能解析物件 '%s'"
 
-#: merge-recursive.c:3814 builtin/merge.c:716 builtin/merge.c:900
+#: merge-recursive.c:3817 builtin/merge.c:717 builtin/merge.c:901
 #: builtin/stash.c:473
 msgid "Unable to write index."
 msgstr "不能寫入索引。"
@@ -5311,8 +5060,8 @@
 msgid "failed to read the cache"
 msgstr "讀取快取失敗"
 
-#: merge.c:109 rerere.c:704 builtin/am.c:1931 builtin/am.c:1965
-#: builtin/checkout.c:595 builtin/checkout.c:849 builtin/clone.c:821
+#: merge.c:108 rerere.c:704 builtin/am.c:1932 builtin/am.c:1966
+#: builtin/checkout.c:590 builtin/checkout.c:844 builtin/clone.c:821
 #: builtin/stash.c:267
 msgid "unable to write new index file"
 msgstr "無法寫新的索引檔案"
@@ -5386,106 +5135,114 @@
 msgid "failed to locate object %d in packfile"
 msgstr "在 packfile 中定位物件 %d 失敗"
 
-#: midx.c:880 builtin/index-pack.c:1535
+#: midx.c:880 builtin/index-pack.c:1533
 msgid "cannot store reverse index file"
 msgstr "無法儲存倒排索引檔案"
 
-#: midx.c:933
+#: midx.c:920
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr "忽略現有的多包索引:總和檢查碼不符"
+
+#: midx.c:943
 msgid "Adding packfiles to multi-pack-index"
 msgstr "正在新增 packfile 至多包索引"
 
-#: midx.c:979
+#: midx.c:989
 #, c-format
 msgid "did not see pack-file %s to drop"
 msgstr "沒有看到要捨棄的包檔案 %s"
 
-#: midx.c:1024
+#: midx.c:1034
 #, c-format
 msgid "unknown preferred pack: '%s'"
 msgstr "未知偏好包:「%s」"
 
-#: midx.c:1029
+#: midx.c:1039
 #, c-format
 msgid "preferred pack '%s' is expired"
 msgstr "偏好包「%s」已經過期"
 
-#: midx.c:1045
+#: midx.c:1055
 msgid "no pack files to index."
 msgstr "沒有要索引的 pack 檔案。"
 
-#: midx.c:1125 builtin/clean.c:37
+#: midx.c:1135 builtin/clean.c:37
 #, c-format
 msgid "failed to remove %s"
 msgstr "刪除 %s 失敗"
 
-#: midx.c:1156
+#: midx.c:1166
 #, c-format
 msgid "failed to clear multi-pack-index at %s"
 msgstr "清理位於 %s 的多包索引失敗"
 
-#: midx.c:1214
+#: midx.c:1225
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr "有 multi-pack-index 檔案,但無法解析"
 
-#: midx.c:1222
+#: midx.c:1233
+msgid "incorrect checksum"
+msgstr "總和檢查碼不正確"
+
+#: midx.c:1236
 msgid "Looking for referenced packfiles"
 msgstr "正在尋找引用的 packfile"
 
-#: midx.c:1237
+#: midx.c:1251
 #, c-format
 msgid ""
 "oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 msgstr "物件 ID 扇出無序:fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
 
-#: midx.c:1242
+#: midx.c:1256
 msgid "the midx contains no oid"
 msgstr "midx 沒有 oid"
 
-#: midx.c:1251
+#: midx.c:1265
 msgid "Verifying OID order in multi-pack-index"
 msgstr "正在驗證多包索引中的物件 ID 順序"
 
-#: midx.c:1260
+#: midx.c:1274
 #, c-format
 msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
 msgstr "物件 ID 查詢無序:oid[%d] = %s >= %s = oid[%d]"
 
-#: midx.c:1280
+#: midx.c:1294
 msgid "Sorting objects by packfile"
 msgstr "透過 packfile 為物件排序"
 
-#: midx.c:1287
+#: midx.c:1301
 msgid "Verifying object offsets"
 msgstr "正在驗證物件位移"
 
-#: midx.c:1303
+#: midx.c:1317
 #, c-format
 msgid "failed to load pack entry for oid[%d] = %s"
 msgstr "為 oid[%d] = %s 載入包條目失敗"
 
-#: midx.c:1309
+#: midx.c:1323
 #, c-format
 msgid "failed to load pack-index for packfile %s"
 msgstr "為 packfile %s 載入包索引失敗"
 
-#: midx.c:1318
+#: midx.c:1332
 #, c-format
 msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
 msgstr "oid[%d] = %s 錯誤的物件位移:%<PRIx64> != %<PRIx64>"
 
-#: midx.c:1343
+#: midx.c:1357
 msgid "Counting referenced objects"
 msgstr "正在計算引用物件"
 
-#: midx.c:1353
+#: midx.c:1367
 msgid "Finding and deleting unreferenced packfiles"
 msgstr "正在尋找並刪除沒有參考的 packfile"
 
-#: midx.c:1544
+#: midx.c:1558
 msgid "could not start pack-objects"
 msgstr "不能開始 pack-objects"
 
-#: midx.c:1564
+#: midx.c:1578
 msgid "could not finish pack-objects"
 msgstr "不能結束 pack-objects"
 
@@ -5502,7 +5259,7 @@
 #: name-hash.c:570
 #, c-format
 msgid "unable to join lazy_name thread: %s"
-msgstr "不能加入 lasy_name 執行緒:%s"
+msgstr "不能加入 lazy_name 執行緒:%s"
 
 #: notes-merge.c:277
 #, c-format
@@ -5548,265 +5305,266 @@
 msgid "object directory %s does not exist; check .git/objects/info/alternates"
 msgstr "物件目錄 %s 不存在,檢查 .git/objects/info/alternates"
 
-#: object-file.c:577
+#: object-file.c:584
 #, c-format
 msgid "unable to normalize alternate object path: %s"
 msgstr "無法規範化備用物件路徑:%s"
 
-#: object-file.c:649
+#: object-file.c:658
 #, c-format
 msgid "%s: ignoring alternate object stores, nesting too deep"
 msgstr "%s:忽略備用物件庫,嵌套太深"
 
-#: object-file.c:656
+#: object-file.c:665
 #, c-format
 msgid "unable to normalize object directory: %s"
 msgstr "無法規範化物件目錄: %s"
 
-#: object-file.c:699
+#: object-file.c:708
 msgid "unable to fdopen alternates lockfile"
 msgstr "無法 fdopen 取代鎖檔案"
 
-#: object-file.c:717
+#: object-file.c:726
 msgid "unable to read alternates file"
 msgstr "無法讀取替代檔案"
 
-#: object-file.c:724
+#: object-file.c:733
 msgid "unable to move new alternates file into place"
 msgstr "無法將新的替代檔案移動到位"
 
-#: object-file.c:759
+#: object-file.c:768
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "路徑 '%s' 不存在"
 
-#: object-file.c:780
+#: object-file.c:789
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "尚不支援將參考版本庫 '%s' 作為一個連結檢出。"
+msgstr "尚不支援將參考版本庫 '%s' 作為一個連結簽出。"
 
-#: object-file.c:786
+#: object-file.c:795
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "參考版本庫 '%s' 不是一個本機版本庫。"
 
-#: object-file.c:792
+#: object-file.c:801
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "參考版本庫 '%s' 是一個淺複製"
 
-#: object-file.c:800
+#: object-file.c:809
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "參考版本庫 '%s' 已被移植"
 
-#: object-file.c:860
+#: object-file.c:869
 #, c-format
 msgid "invalid line while parsing alternate refs: %s"
 msgstr "解析備用引用時無效的行:%s"
 
-#: object-file.c:1010
+#: object-file.c:1019
 #, c-format
 msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
 msgstr "嘗試 mmap %<PRIuMAX>,超過了最大值 %<PRIuMAX>"
 
-#: object-file.c:1031
-msgid "mmap failed"
-msgstr "mmap 失敗"
+#: object-file.c:1054
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap 失敗%s"
 
-#: object-file.c:1195
+#: object-file.c:1218
 #, c-format
 msgid "object file %s is empty"
 msgstr "物件檔案 %s 為空"
 
-#: object-file.c:1330 object-file.c:2524
+#: object-file.c:1353 object-file.c:2548
 #, c-format
 msgid "corrupt loose object '%s'"
 msgstr "損壞的鬆散物件 '%s'"
 
-#: object-file.c:1332 object-file.c:2528
+#: object-file.c:1355 object-file.c:2552
 #, c-format
 msgid "garbage at end of loose object '%s'"
 msgstr "鬆散物件 '%s' 後面有垃圾資料"
 
-#: object-file.c:1374
+#: object-file.c:1397
 msgid "invalid object type"
 msgstr "無效的物件類型"
 
-#: object-file.c:1458
+#: object-file.c:1481
 #, c-format
 msgid "unable to unpack %s header with --allow-unknown-type"
 msgstr "無法用 --allow-unknown-type 參數解開 %s 標頭訊息"
 
-#: object-file.c:1461
+#: object-file.c:1484
 #, c-format
 msgid "unable to unpack %s header"
 msgstr "無法解開 %s 頭部"
 
-#: object-file.c:1467
+#: object-file.c:1490
 #, c-format
 msgid "unable to parse %s header with --allow-unknown-type"
 msgstr "無法用 --allow-unknown-type 參數解析 %s 標頭訊息"
 
-#: object-file.c:1470
+#: object-file.c:1493
 #, c-format
 msgid "unable to parse %s header"
 msgstr "無法解析 %s 頭部"
 
-#: object-file.c:1697
+#: object-file.c:1717
 #, c-format
 msgid "failed to read object %s"
 msgstr "讀取物件 %s 失敗"
 
-#: object-file.c:1701
+#: object-file.c:1721
 #, c-format
 msgid "replacement %s not found for %s"
 msgstr "找不到 %2$s 的替代 %1$s"
 
-#: object-file.c:1705
+#: object-file.c:1725
 #, c-format
 msgid "loose object %s (stored in %s) is corrupt"
 msgstr "鬆散物件 %s(儲存在 %s)已損壞"
 
-#: object-file.c:1709
+#: object-file.c:1729
 #, c-format
 msgid "packed object %s (stored in %s) is corrupt"
 msgstr "打包物件 %s(儲存在 %s)已損壞"
 
-#: object-file.c:1814
+#: object-file.c:1834
 #, c-format
 msgid "unable to write file %s"
 msgstr "無法寫檔案 %s"
 
-#: object-file.c:1821
+#: object-file.c:1841
 #, c-format
 msgid "unable to set permission to '%s'"
 msgstr "無法為 '%s' 設定權限"
 
-#: object-file.c:1828
+#: object-file.c:1848
 msgid "file write error"
 msgstr "檔案寫錯誤"
 
-#: object-file.c:1848
+#: object-file.c:1868
 msgid "error when closing loose object file"
 msgstr "關閉鬆散物件檔案時發生錯誤"
 
-#: object-file.c:1913
+#: object-file.c:1933
 #, c-format
 msgid "insufficient permission for adding an object to repository database %s"
 msgstr "權限不足,無法在版本庫物件庫 %s 中新增物件"
 
-#: object-file.c:1915
+#: object-file.c:1935
 msgid "unable to create temporary file"
 msgstr "無法建立暫存檔"
 
-#: object-file.c:1939
+#: object-file.c:1959
 msgid "unable to write loose object file"
 msgstr "不能寫鬆散物件檔案"
 
-#: object-file.c:1945
+#: object-file.c:1965
 #, c-format
 msgid "unable to deflate new object %s (%d)"
 msgstr "不能壓縮新物件 %s(%d)"
 
-#: object-file.c:1949
+#: object-file.c:1969
 #, c-format
 msgid "deflateEnd on object %s failed (%d)"
 msgstr "在物件 %s 上呼叫 deflateEnd 失敗(%d)"
 
-#: object-file.c:1953
+#: object-file.c:1973
 #, c-format
 msgid "confused by unstable object source data for %s"
 msgstr "被 %s 的不穩定物件源資料搞糊塗了"
 
-#: object-file.c:1963 builtin/pack-objects.c:1097
+#: object-file.c:1983 builtin/pack-objects.c:1237
 #, c-format
 msgid "failed utime() on %s"
 msgstr "在 %s 上呼叫 utime() 失敗"
 
-#: object-file.c:2040
+#: object-file.c:2060
 #, c-format
 msgid "cannot read object for %s"
 msgstr "不能讀取物件 %s"
 
-#: object-file.c:2091
+#: object-file.c:2111
 msgid "corrupt commit"
 msgstr "損壞的提交"
 
-#: object-file.c:2099
+#: object-file.c:2119
 msgid "corrupt tag"
 msgstr "損壞的標籤"
 
-#: object-file.c:2199
+#: object-file.c:2219
 #, c-format
 msgid "read error while indexing %s"
 msgstr "索引 %s 時讀取錯誤"
 
-#: object-file.c:2202
+#: object-file.c:2222
 #, c-format
 msgid "short read while indexing %s"
 msgstr "索引 %s 時讀入不完整"
 
-#: object-file.c:2275 object-file.c:2285
+#: object-file.c:2295 object-file.c:2305
 #, c-format
 msgid "%s: failed to insert into database"
 msgstr "%s:插入資料庫失敗"
 
-#: object-file.c:2291
+#: object-file.c:2311
 #, c-format
 msgid "%s: unsupported file type"
 msgstr "%s:不支援的檔案類型"
 
-#: object-file.c:2315
+#: object-file.c:2335
 #, c-format
 msgid "%s is not a valid object"
 msgstr "%s 不是一個有效的物件"
 
-#: object-file.c:2317
+#: object-file.c:2337
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s 不是一個有效的 '%s' 物件"
 
-#: object-file.c:2344 builtin/index-pack.c:192
+#: object-file.c:2364 builtin/index-pack.c:192
 #, c-format
 msgid "unable to open %s"
 msgstr "不能開啟 %s"
 
-#: object-file.c:2535 object-file.c:2588
+#: object-file.c:2559 object-file.c:2612
 #, c-format
 msgid "hash mismatch for %s (expected %s)"
 msgstr "%s 的雜湊值不符合(預期 %s)"
 
-#: object-file.c:2559
+#: object-file.c:2583
 #, c-format
 msgid "unable to mmap %s"
 msgstr "不能 mmap %s"
 
-#: object-file.c:2564
+#: object-file.c:2588
 #, c-format
 msgid "unable to unpack header of %s"
 msgstr "無法解壓縮 %s 的頭部"
 
-#: object-file.c:2570
+#: object-file.c:2594
 #, c-format
 msgid "unable to parse header of %s"
 msgstr "無法解析 %s 的頭部"
 
-#: object-file.c:2581
+#: object-file.c:2605
 #, c-format
 msgid "unable to unpack contents of %s"
 msgstr "無法解壓縮 %s 的內容"
 
-#: object-name.c:486
+#: object-name.c:480
 #, c-format
 msgid "short object ID %s is ambiguous"
 msgstr "短物件 ID %s 存在歧義"
 
-#: object-name.c:497
+#: object-name.c:491
 msgid "The candidates are:"
 msgstr "候選者有:"
 
-#: object-name.c:796
+#: object-name.c:790
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -5828,22 +5586,22 @@
 "請檢查這些引用,並視需要刪除。執行\n"
 "「git config advice.objectNameWarning false」命令以關閉本訊息通知"
 
-#: object-name.c:916
+#: object-name.c:910
 #, c-format
 msgid "log for '%.*s' only goes back to %s"
 msgstr "'%.*s' 的日誌只能回到 %s"
 
-#: object-name.c:924
+#: object-name.c:918
 #, c-format
 msgid "log for '%.*s' only has %d entries"
 msgstr "'%.*s' 的日誌只有 %d 個項目"
 
-#: object-name.c:1702
+#: object-name.c:1696
 #, c-format
 msgid "path '%s' exists on disk, but not in '%.*s'"
 msgstr "磁碟上存在 '%s' 路徑,但不存在於 '%.*s'"
 
-#: object-name.c:1708
+#: object-name.c:1702
 #, c-format
 msgid ""
 "path '%s' exists, but not '%s'\n"
@@ -5852,12 +5610,12 @@
 "'%s' 路徑存在,但不是 '%s'\n"
 "提示:你在說 '%.*s:%s',即 '%.*s:./%s' 嗎?"
 
-#: object-name.c:1717
+#: object-name.c:1711
 #, c-format
 msgid "path '%s' does not exist in '%.*s'"
 msgstr "'%s' 路徑不存在於 '%.*s'"
 
-#: object-name.c:1745
+#: object-name.c:1739
 #, c-format
 msgid ""
 "path '%s' is in the index, but not at stage %d\n"
@@ -5866,7 +5624,7 @@
 "'%s' 路徑在索引,但不在 %d 暫存區\n"
 "提示:你在說 ':%d:%s' 嗎?"
 
-#: object-name.c:1761
+#: object-name.c:1755
 #, c-format
 msgid ""
 "path '%s' is in the index, but not '%s'\n"
@@ -5875,21 +5633,21 @@
 "'%s' 路徑在索引,但不是 '%s'\n"
 "提示:你在說 ':%d:%s',即 ':%d:%s' 嗎?"
 
-#: object-name.c:1769
+#: object-name.c:1763
 #, c-format
 msgid "path '%s' exists on disk, but not in the index"
 msgstr "磁碟上存在 '%s' 路徑,但不在索引中"
 
-#: object-name.c:1771
+#: object-name.c:1765
 #, c-format
 msgid "path '%s' does not exist (neither on disk nor in the index)"
 msgstr "'%s' 路徑不存在 (既不存在磁碟,也不存在索引)"
 
-#: object-name.c:1784
+#: object-name.c:1778
 msgid "relative path syntax can't be used outside working tree"
 msgstr "相對路徑與法不能用在工作區外"
 
-#: object-name.c:1922
+#: object-name.c:1916
 #, c-format
 msgid "invalid object name '%.*s'."
 msgstr "'%.*s' 物件名稱無效。"
@@ -5904,27 +5662,27 @@
 msgid "object %s is a %s, not a %s"
 msgstr "物件 %s 是一個 %s,不是一個 %s"
 
-#: object.c:232
+#: object.c:250
 #, c-format
 msgid "object %s has unknown type id %d"
 msgstr "物件 %s 有未知的類型 id %d"
 
-#: object.c:245
+#: object.c:263
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "不能解析物件:%s"
 
-#: object.c:265 object.c:277
+#: object.c:283 object.c:295
 #, c-format
 msgid "hash mismatch %s"
 msgstr "雜湊值與 %s 不符合"
 
-#: pack-bitmap.c:844 pack-bitmap.c:850 builtin/pack-objects.c:2251
+#: pack-bitmap.c:868 pack-bitmap.c:874 builtin/pack-objects.c:2411
 #, c-format
 msgid "unable to get size of %s"
 msgstr "不能得到 %s 的大小"
 
-#: pack-bitmap.c:1547 builtin/rev-list.c:92
+#: pack-bitmap.c:1571 builtin/rev-list.c:92
 #, c-format
 msgid "unable to get disk usage of %s"
 msgstr "無法取得 %s 的磁碟用量"
@@ -5977,12 +5735,17 @@
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "位移量在 packfile 結束之前(損壞的 .idx?)"
 
-#: packfile.c:1937
+#: packfile.c:655
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "包檔案 %s 無法映射%s"
+
+#: packfile.c:1934
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "位移量在 %s 的包索引開始之前(損壞的索引?)"
 
-#: packfile.c:1941
+#: packfile.c:1938
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "位移量越過了 %s 的包索引的結尾(被截斷的索引?)"
@@ -6184,8 +5947,8 @@
 msgstr "無法寫 delim 包"
 
 #: pkt-line.c:106
-msgid "unable to write stateless separator packet"
-msgstr "無法寫入無狀態的分隔符號封包"
+msgid "unable to write response end packet"
+msgstr "無法寫入回應結尾封包"
 
 #: pkt-line.c:113
 msgid "flush packet write failed"
@@ -6244,19 +6007,19 @@
 msgid "unable to parse --pretty format"
 msgstr "不能解析 --pretty 格式"
 
-#: promisor-remote.c:30
+#: promisor-remote.c:31
 msgid "promisor-remote: unable to fork off fetch subprocess"
 msgstr "promisor-remote: 無法 fork fetch 子處理程序"
 
-#: promisor-remote.c:35 promisor-remote.c:37
+#: promisor-remote.c:38 promisor-remote.c:40
 msgid "promisor-remote: could not write to fetch subprocess"
 msgstr "promisor-remote: 無法寫入 fetch 子處理程序"
 
-#: promisor-remote.c:41
+#: promisor-remote.c:44
 msgid "promisor-remote: could not close stdin to fetch subprocess"
 msgstr "promisor-remote: 無法關閉 fetch 子處理程序的 stdin"
 
-#: promisor-remote.c:53
+#: promisor-remote.c:54
 #, c-format
 msgid "promisor remote name cannot begin with '/': %s"
 msgstr "promisor 遠端名稱不能以 '/' 開始:%s"
@@ -6277,7 +6040,7 @@
 msgid "could not read `log` output"
 msgstr "不能讀取 `log` 的輸出"
 
-#: range-diff.c:101 sequencer.c:5551
+#: range-diff.c:101 sequencer.c:5550
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "不能解析提交 '%s'"
@@ -6294,63 +6057,63 @@
 msgid "could not parse git header '%.*s'"
 msgstr "無法解析 git 頭 '%.*s'"
 
-#: range-diff.c:306
+#: range-diff.c:307
 msgid "failed to generate diff"
 msgstr "生成 diff 失敗"
 
-#: range-diff.c:558
+#: range-diff.c:559
 msgid "--left-only and --right-only are mutually exclusive"
 msgstr "--left-only 和 --right-only 互斥"
 
-#: range-diff.c:561 range-diff.c:563
+#: range-diff.c:562 range-diff.c:564
 #, c-format
 msgid "could not parse log for '%s'"
 msgstr "不能解析 '%s' 的日誌"
 
-#: read-cache.c:708
+#: read-cache.c:710
 #, c-format
 msgid "will not add file alias '%s' ('%s' already exists in index)"
 msgstr "將不會新增檔案別名 '%s'('%s' 已經存在於索引中)"
 
-#: read-cache.c:724
+#: read-cache.c:726
 msgid "cannot create an empty blob in the object database"
 msgstr "不能在物件資料庫中建立空的資料物件"
 
-#: read-cache.c:746
+#: read-cache.c:748
 #, c-format
 msgid "%s: can only add regular files, symbolic links or git-directories"
 msgstr "%s:只能新增一般檔案、符號連結或 git 目錄"
 
-#: read-cache.c:751
+#: read-cache.c:753
 #, c-format
 msgid "'%s' does not have a commit checked out"
-msgstr "'%s' 沒有檢出一個提交"
+msgstr "'%s' 沒有簽出一個提交"
 
-#: read-cache.c:803
+#: read-cache.c:805
 #, c-format
 msgid "unable to index file '%s'"
 msgstr "無法索引檔案 '%s'"
 
-#: read-cache.c:822
+#: read-cache.c:824
 #, c-format
 msgid "unable to add '%s' to index"
 msgstr "無法在索引中新增 '%s'"
 
-#: read-cache.c:833
+#: read-cache.c:835
 #, c-format
 msgid "unable to stat '%s'"
 msgstr "無法對 %s 執行 stat"
 
-#: read-cache.c:1356
+#: read-cache.c:1358
 #, c-format
 msgid "'%s' appears as both a file and as a directory"
 msgstr "'%s' 看起來既是檔案又是目錄"
 
-#: read-cache.c:1571
+#: read-cache.c:1573
 msgid "Refresh index"
 msgstr "重新整理索引"
 
-#: read-cache.c:1700
+#: read-cache.c:1705
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -6359,7 +6122,7 @@
 "設定了 index.version,但是取值無效。\n"
 "使用版本 %i"
 
-#: read-cache.c:1710
+#: read-cache.c:1715
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -6368,144 +6131,144 @@
 "設定了 GIT_INDEX_VERSION,但是取值無效。\n"
 "使用版本 %i"
 
-#: read-cache.c:1766
+#: read-cache.c:1771
 #, c-format
 msgid "bad signature 0x%08x"
 msgstr "壞的簽名 0x%08x"
 
-#: read-cache.c:1769
+#: read-cache.c:1774
 #, c-format
 msgid "bad index version %d"
 msgstr "壞的索引版本 %d"
 
-#: read-cache.c:1778
+#: read-cache.c:1783
 msgid "bad index file sha1 signature"
 msgstr "壞的索引檔案 sha1 簽名"
 
-#: read-cache.c:1812
+#: read-cache.c:1817
 #, c-format
 msgid "index uses %.4s extension, which we do not understand"
 msgstr "索引使用不被支援的 %.4s 擴展"
 
 #
-#: read-cache.c:1814
+#: read-cache.c:1819
 #, c-format
 msgid "ignoring %.4s extension"
 msgstr "忽略 %.4s 擴展"
 
-#: read-cache.c:1851
+#: read-cache.c:1856
 #, c-format
 msgid "unknown index entry format 0x%08x"
 msgstr "未知的索引條目格式 0x%08x"
 
-#: read-cache.c:1867
+#: read-cache.c:1872
 #, c-format
 msgid "malformed name field in the index, near path '%s'"
 msgstr "索引中靠近路徑 '%s' 有錯誤的名稱欄位"
 
-#: read-cache.c:1924
+#: read-cache.c:1929
 msgid "unordered stage entries in index"
 msgstr "索引中有未排序的暫存條目"
 
-#: read-cache.c:1927
+#: read-cache.c:1932
 #, c-format
 msgid "multiple stage entries for merged file '%s'"
 msgstr "合併檔案 '%s' 有多個暫存條目"
 
-#: read-cache.c:1930
+#: read-cache.c:1935
 #, c-format
 msgid "unordered stage entries for '%s'"
 msgstr "'%s' 的未排序暫存條目"
 
-#: read-cache.c:2036 read-cache.c:2333 rerere.c:549 rerere.c:583 rerere.c:1095
-#: submodule.c:1635 builtin/add.c:575 builtin/check-ignore.c:183
-#: builtin/checkout.c:522 builtin/checkout.c:711 builtin/clean.c:991
+#: read-cache.c:2041 read-cache.c:2339 rerere.c:549 rerere.c:583 rerere.c:1095
+#: submodule.c:1622 builtin/add.c:575 builtin/check-ignore.c:183
+#: builtin/checkout.c:519 builtin/checkout.c:706 builtin/clean.c:987
 #: builtin/commit.c:377 builtin/diff-tree.c:122 builtin/grep.c:505
 #: builtin/mv.c:146 builtin/reset.c:247 builtin/rm.c:291
-#: builtin/submodule--helper.c:332
+#: builtin/submodule--helper.c:333
 msgid "index file corrupt"
 msgstr "索引檔案損壞"
 
-#: read-cache.c:2180
+#: read-cache.c:2185
 #, c-format
 msgid "unable to create load_cache_entries thread: %s"
 msgstr "無法建立 load_cache_entries 執行緒:%s"
 
-#: read-cache.c:2193
+#: read-cache.c:2198
 #, c-format
 msgid "unable to join load_cache_entries thread: %s"
 msgstr "無法加入 load_cache_entries 執行緒:%s"
 
-#: read-cache.c:2226
+#: read-cache.c:2231
 #, c-format
 msgid "%s: index file open failed"
 msgstr "%s:開啟索引檔案失敗"
 
-#: read-cache.c:2230
+#: read-cache.c:2235
 #, c-format
 msgid "%s: cannot stat the open index"
 msgstr "%s:不能對開啟的索引執行 stat 動作"
 
-#: read-cache.c:2234
+#: read-cache.c:2239
 #, c-format
 msgid "%s: index file smaller than expected"
 msgstr "%s:索引檔案比預期的小"
 
-#: read-cache.c:2238
+#: read-cache.c:2243
 #, c-format
-msgid "%s: unable to map index file"
-msgstr "%s:無法對索引檔案執行 map 動作"
+msgid "%s: unable to map index file%s"
+msgstr "%s:無法 map 索引檔案%s"
 
-#: read-cache.c:2280
+#: read-cache.c:2286
 #, c-format
 msgid "unable to create load_index_extensions thread: %s"
 msgstr "無法建立 load_index_extensions 執行緒:%s"
 
-#: read-cache.c:2307
+#: read-cache.c:2313
 #, c-format
 msgid "unable to join load_index_extensions thread: %s"
 msgstr "無法加入 load_index_extensions 執行緒:%s"
 
-#: read-cache.c:2345
+#: read-cache.c:2351
 #, c-format
 msgid "could not freshen shared index '%s'"
 msgstr "無法重新整理共享索引 '%s'"
 
-#: read-cache.c:2392
+#: read-cache.c:2398
 #, c-format
 msgid "broken index, expect %s in %s, got %s"
 msgstr "損壞的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
 
-#: read-cache.c:3095 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1145
+#: read-cache.c:3032 strbuf.c:1173 wrapper.c:633 builtin/merge.c:1146
 #, c-format
 msgid "could not close '%s'"
 msgstr "不能關閉 '%s'"
 
-#: read-cache.c:3138
+#: read-cache.c:3075
 msgid "failed to convert to a sparse-index"
 msgstr "無法轉換成稀疏索引"
 
-#: read-cache.c:3209 sequencer.c:2684 sequencer.c:4441
+#: read-cache.c:3146 sequencer.c:2684 sequencer.c:4440
 #, c-format
 msgid "could not stat '%s'"
 msgstr "不能對 '%s' 呼叫 stat"
 
-#: read-cache.c:3222
+#: read-cache.c:3159
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "不能開啟 git 目錄:%s"
 
-#: read-cache.c:3234
+#: read-cache.c:3171
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "無法刪除:%s"
 
-#: read-cache.c:3263
+#: read-cache.c:3200
 #, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "不能修復 '%s' 的權限位"
 
-#: read-cache.c:3412
+#: read-cache.c:3349
 #, c-format
 msgid "%s: cannot drop to stage #0"
 msgstr "%s:不能落到暫存區 #0"
@@ -6616,8 +6379,8 @@
 "然而,如果您刪除全部內容,重定基底動作將會終止。\n"
 "\n"
 
-#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3816
-#: sequencer.c:3842 sequencer.c:5657 builtin/fsck.c:327 builtin/rebase.c:271
+#: rebase-interactive.c:113 rerere.c:469 rerere.c:676 sequencer.c:3836
+#: sequencer.c:3862 sequencer.c:5656 builtin/fsck.c:328 builtin/rebase.c:271
 #, c-format
 msgid "could not write '%s'"
 msgstr "不能寫入 '%s'"
@@ -6660,7 +6423,7 @@
 msgid "could not read '%s'."
 msgstr "不能讀取 '%s'。"
 
-#: ref-filter.c:42 wt-status.c:1978
+#: ref-filter.c:42 wt-status.c:2036
 msgid "gone"
 msgstr "遺失"
 
@@ -6679,247 +6442,247 @@
 msgid "ahead %d, behind %d"
 msgstr "領先 %d,落後 %d"
 
-#: ref-filter.c:175
+#: ref-filter.c:230
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "期望的格式:%%(color:<顏色>)"
 
-#: ref-filter.c:177
+#: ref-filter.c:232
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "無法識別的顏色:%%(color:%s)"
 
-#: ref-filter.c:199
+#: ref-filter.c:254
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "期望整數值 refname:lstrip=%s"
 
-#: ref-filter.c:203
+#: ref-filter.c:258
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "期望整數值 refname:rstrip=%s"
 
-#: ref-filter.c:205
+#: ref-filter.c:260
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "無法識別的 %%(%s) 參數:%s"
 
-#: ref-filter.c:260
+#: ref-filter.c:315
 #, c-format
 msgid "%%(objecttype) does not take arguments"
 msgstr "%%(objecttype) 不帶參數"
 
-#: ref-filter.c:282
+#: ref-filter.c:339
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
 msgstr "無法識別的 %%(objectsize) 參數:%s"
 
-#: ref-filter.c:290
+#: ref-filter.c:347
 #, c-format
 msgid "%%(deltabase) does not take arguments"
 msgstr "%%(deltabase) 不帶參數"
 
-#: ref-filter.c:302
+#: ref-filter.c:359
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) 不帶參數"
 
-#: ref-filter.c:315
+#: ref-filter.c:372
 #, c-format
 msgid "unrecognized %%(subject) argument: %s"
 msgstr "無法識別的 %%(subject) 引數:%s"
 
-#: ref-filter.c:334
+#: ref-filter.c:391
 #, c-format
 msgid "expected %%(trailers:key=<value>)"
 msgstr "預期是 %%(trailers:key=<value>)"
 
-#: ref-filter.c:336
+#: ref-filter.c:393
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "未知的 %%(trailers) 參數:%s"
 
-#: ref-filter.c:367
+#: ref-filter.c:424
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "期望一個正數 contents:lines=%s"
 
-#: ref-filter.c:369
+#: ref-filter.c:426
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "無法識別的 %%(contents) 參數:%s"
 
-#: ref-filter.c:384
+#: ref-filter.c:441
 #, c-format
 msgid "positive value expected '%s' in %%(%s)"
 msgstr "%%(%2$s) 中的 '%1$s' 預期是正數值"
 
-#: ref-filter.c:388
+#: ref-filter.c:445
 #, c-format
 msgid "unrecognized argument '%s' in %%(%s)"
 msgstr "無法識別 %%(%2$s) 中的 '%1$s' 參數"
 
-#: ref-filter.c:402
+#: ref-filter.c:459
 #, c-format
 msgid "unrecognized email option: %s"
 msgstr "無法識別的 email 選項:%s"
 
-#: ref-filter.c:432
+#: ref-filter.c:489
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "期望的格式:%%(align:<寬度>,<位置>)"
 
-#: ref-filter.c:444
+#: ref-filter.c:501
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "無法識別的位置:%s"
 
-#: ref-filter.c:451
+#: ref-filter.c:508
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "無法識別的寬度:%s"
 
-#: ref-filter.c:460
+#: ref-filter.c:517
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "無法識別的 %%(align) 參數:%s"
 
-#: ref-filter.c:468
+#: ref-filter.c:525
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "元素 %%(align) 需要一個正數的寬度"
 
-#: ref-filter.c:486
+#: ref-filter.c:543
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "無法識別的 %%(if) 參數:%s"
 
-#: ref-filter.c:588
+#: ref-filter.c:645
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "格式錯誤的欄位名:%.*s"
 
-#: ref-filter.c:615
+#: ref-filter.c:672
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "未知的欄位名:%.*s"
 
-#: ref-filter.c:619
+#: ref-filter.c:676
 #, c-format
 msgid ""
 "not a git repository, but the field '%.*s' requires access to object data"
 msgstr "不是一個 git 版本庫,但是欄位 '%.*s' 需要存取物件資料"
 
-#: ref-filter.c:743
+#: ref-filter.c:801
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(if) 元素而沒有 %%(then) 元素"
 
-#: ref-filter.c:807
+#: ref-filter.c:865
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(then) 元素而沒有 %%(if) 元素"
 
-#: ref-filter.c:809
+#: ref-filter.c:867
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "格式:%%(then) 元素用了多次"
 
-#: ref-filter.c:811
+#: ref-filter.c:869
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "格式:%%(then) 元素用在了 %%(else) 之後"
 
-#: ref-filter.c:839
+#: ref-filter.c:897
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(else) 元素而沒有 %%(if) 元素"
 
-#: ref-filter.c:841
+#: ref-filter.c:899
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(else) 元素而沒有 %%(then) 元素"
 
-#: ref-filter.c:843
+#: ref-filter.c:901
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "格式:%%(else) 元素用了多次"
 
-#: ref-filter.c:858
+#: ref-filter.c:916
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "格式:使用了 %%(end) 元素卻沒有它的對應元素"
 
-#: ref-filter.c:915
+#: ref-filter.c:973
 #, c-format
 msgid "malformed format string %s"
 msgstr "錯誤的格式化字串 %s"
 
-#: ref-filter.c:1556
+#: ref-filter.c:1621
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(無分支,重定 %s 的基底)"
 
-#: ref-filter.c:1559
+#: ref-filter.c:1624
 #, c-format
 msgid "(no branch, rebasing detached HEAD %s)"
 msgstr "(無分支,重定 %s 分離開頭指標的基底)"
 
-#: ref-filter.c:1562
+#: ref-filter.c:1627
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(無分支,二分搜尋從 %s 開始)"
 
-#: ref-filter.c:1566
+#: ref-filter.c:1631
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(開頭指標分離於 %s)"
 
-#: ref-filter.c:1569
+#: ref-filter.c:1634
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(開頭指標分離自 %s)"
 
-#: ref-filter.c:1572
+#: ref-filter.c:1637
 msgid "(no branch)"
 msgstr "(無分支)"
 
-#: ref-filter.c:1604 ref-filter.c:1813
+#: ref-filter.c:1669 ref-filter.c:1880
 #, c-format
 msgid "missing object %s for %s"
 msgstr "缺少 %2$s 的物件 %1$s"
 
-#: ref-filter.c:1614
+#: ref-filter.c:1679
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer 失敗於 %2$s 的 %1$s"
 
-#: ref-filter.c:1997
+#: ref-filter.c:2064
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "格式錯誤的物件 '%s'"
 
-#: ref-filter.c:2086
+#: ref-filter.c:2153
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "忽略帶有錯誤名稱 %s 的引用"
 
-#: ref-filter.c:2091 refs.c:676
+#: ref-filter.c:2158 refs.c:676
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "忽略損壞的引用 %s"
 
-#: ref-filter.c:2431
+#: ref-filter.c:2502
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "格式:缺少 %%(end) 元素"
 
-#: ref-filter.c:2525
+#: ref-filter.c:2596
 #, c-format
 msgid "malformed object name %s"
 msgstr "格式錯誤的物件名 %s"
 
-#: ref-filter.c:2530
+#: ref-filter.c:2601
 #, c-format
 msgid "option `%s' must point to a commit"
 msgstr "選項 `%s' 必須指向一個提交"
@@ -6947,10 +6710,10 @@
 "如果要設定所有新版本庫要使用的初始分支名稱,\n"
 "請呼叫(會隱藏這個警告):\n"
 "\n"
-"\tgit config —global init.defaultBranch <name>\n"
+"\tgit config --global init.defaultBranch <name>\n"
 "\n"
-"除了 ‘master’ 外,常用的分支名稱有 ‘main’, ‘trunk’ 以及\n"
-"‘development’。剛建立的分支可以用這個命令重新命名:\n"
+"除了 “master” 外,常用的分支名稱有 “main”, “trunk” 以及\n"
+"“development”。剛建立的分支可以用這個命令重新命名:\n"
 "\n"
 "\tgit branch -m <name>\n"
 
@@ -7365,8 +7128,8 @@
 msgid "Recorded preimage for '%s'"
 msgstr "為 '%s' 記錄 preimage"
 
-#: rerere.c:865 submodule.c:2089 builtin/log.c:2000
-#: builtin/submodule--helper.c:1879 builtin/submodule--helper.c:1891
+#: rerere.c:865 submodule.c:2076 builtin/log.c:2002
+#: builtin/submodule--helper.c:1805 builtin/submodule--helper.c:1848
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "不能建立目錄 '%s'"
@@ -7404,38 +7167,38 @@
 msgid "could not determine HEAD revision"
 msgstr "不能確定 HEAD 版本"
 
-#: reset.c:70 reset.c:76 sequencer.c:3669
+#: reset.c:69 reset.c:75 sequencer.c:3689
 #, c-format
 msgid "failed to find tree of %s"
 msgstr "無法找到 %s 指向的樹"
 
-#: revision.c:2343
+#: revision.c:2344
 msgid "--unpacked=<packfile> no longer supported"
 msgstr "--unpacked=<packfile> 已不受支援"
 
-#: revision.c:2683
+#: revision.c:2684
 msgid "your current branch appears to be broken"
 msgstr "您的目前分支好像被損壞"
 
-#: revision.c:2686
+#: revision.c:2687
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "您的目前分支 '%s' 尚無任何提交"
 
-#: revision.c:2892
+#: revision.c:2893
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L 尚不支援 -p 和 -s 之外的差異格式"
 
-#: run-command.c:767
+#: run-command.c:766
 msgid "open /dev/null failed"
 msgstr "不能開啟 /dev/null"
 
-#: run-command.c:1275
+#: run-command.c:1274
 #, c-format
 msgid "cannot create async thread: %s"
 msgstr "不能建立 async 執行緒:%s"
 
-#: run-command.c:1345
+#: run-command.c:1344
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -7470,25 +7233,25 @@
 msgid "push negotiation failed; proceeding anyway with push"
 msgstr "push 協商失敗。繼續使用 push 處理"
 
-#: send-pack.c:520
+#: send-pack.c:526
 msgid "the receiving end does not support this repository's hash algorithm"
 msgstr "接收端不支援此版本庫的雜湊算法"
 
-#: send-pack.c:529
+#: send-pack.c:535
 msgid "the receiving end does not support --signed push"
-msgstr "接收端不支援簽名推送"
+msgstr "接收端不支援 --signed 推送"
 
-#: send-pack.c:531
+#: send-pack.c:537
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
-msgstr "未傳送推送證書,因為接收端不支援簽名推送"
+msgstr "未傳送推送證書,因為接收端不支援 --signed 推送"
 
-#: send-pack.c:543
+#: send-pack.c:544
 msgid "the receiving end does not support --atomic push"
-msgstr "接收端不支援原子推送"
+msgstr "接收端不支援 --atomic 推送"
 
-#: send-pack.c:548
+#: send-pack.c:549
 msgid "the receiving end does not support push options"
 msgstr "接收端不支援推送選項"
 
@@ -7547,7 +7310,7 @@
 msgstr "不能鎖定 '%s'"
 
 #: sequencer.c:437 sequencer.c:3070 sequencer.c:3275 sequencer.c:3289
-#: sequencer.c:3546 sequencer.c:5567 strbuf.c:1170 wrapper.c:631
+#: sequencer.c:3547 sequencer.c:5566 strbuf.c:1170 wrapper.c:631
 #, c-format
 msgid "could not write to '%s'"
 msgstr "不能寫入 '%s'"
@@ -7558,7 +7321,7 @@
 msgstr "不能將換行符號寫入 '%s'"
 
 #: sequencer.c:447 sequencer.c:3075 sequencer.c:3277 sequencer.c:3291
-#: sequencer.c:3554
+#: sequencer.c:3555
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "無法完成 '%s'"
@@ -7608,8 +7371,8 @@
 msgid "unable to dequote value of '%s'"
 msgstr "無法為 '%s' 的值去引號"
 
-#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:728
-#: builtin/am.c:820 builtin/merge.c:1140 builtin/rebase.c:910
+#: sequencer.c:827 wrapper.c:201 wrapper.c:371 builtin/am.c:729
+#: builtin/am.c:821 builtin/merge.c:1141 builtin/rebase.c:910
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "無法開啟 '%s' 進行讀取"
@@ -7753,7 +7516,7 @@
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s 不是一個提交!"
 
-#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1692
+#: sequencer.c:1354 sequencer.c:1432 builtin/commit.c:1705
 msgid "could not parse HEAD commit"
 msgstr "不能解析 HEAD 提交"
 
@@ -7761,7 +7524,7 @@
 msgid "unable to parse commit author"
 msgstr "不能解析提交作者"
 
-#: sequencer.c:1421 builtin/am.c:1614 builtin/merge.c:706
+#: sequencer.c:1421 builtin/am.c:1615 builtin/merge.c:707
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree 無法寫入樹狀物件"
 
@@ -7779,12 +7542,13 @@
 msgid "corrupt author: missing date information"
 msgstr "作者資訊損壞:缺少日期資訊"
 
-#: sequencer.c:1530 builtin/am.c:1641 builtin/commit.c:1806 builtin/merge.c:909
-#: builtin/merge.c:934 t/helper/test-fast-rebase.c:78
+#: sequencer.c:1530 builtin/am.c:1642 builtin/commit.c:1819 builtin/merge.c:910
+#: builtin/merge.c:935 t/helper/test-fast-rebase.c:78
 msgid "failed to write commit object"
 msgstr "寫提交物件失敗"
 
-#: sequencer.c:1557 sequencer.c:4493 t/helper/test-fast-rebase.c:198
+#: sequencer.c:1557 sequencer.c:4492 t/helper/test-fast-rebase.c:199
+#: t/helper/test-fast-rebase.c:217
 #, c-format
 msgid "could not update %s"
 msgstr "不能更新 %s"
@@ -7836,7 +7600,7 @@
 msgid "need a HEAD to fixup"
 msgstr "需要一個 HEAD 來修復"
 
-#: sequencer.c:1936 sequencer.c:3581
+#: sequencer.c:1936 sequencer.c:3582
 msgid "could not read HEAD"
 msgstr "不能讀取 HEAD"
 
@@ -7977,7 +7741,7 @@
 msgid "malformed options sheet: '%s'"
 msgstr "格式錯誤的選項清單:'%s'"
 
-#: sequencer.c:3012 sequencer.c:4869
+#: sequencer.c:3012 sequencer.c:4868
 msgid "empty commit set passed"
 msgstr "提供了空的提交集"
 
@@ -8008,7 +7772,7 @@
 msgid "could not lock HEAD"
 msgstr "不能鎖定 HEAD"
 
-#: sequencer.c:3125 sequencer.c:4582
+#: sequencer.c:3125 sequencer.c:4581
 msgid "no cherry-pick or revert in progress"
 msgstr "揀選或還原動作並未進行"
 
@@ -8020,7 +7784,7 @@
 msgid "cannot abort from a branch yet to be born"
 msgstr "不能從尚未建立的分支終止"
 
-#: sequencer.c:3159 builtin/grep.c:759
+#: sequencer.c:3159 builtin/grep.c:758
 #, c-format
 msgid "cannot open '%s'"
 msgstr "不能開啟 '%s'"
@@ -8068,7 +7832,7 @@
 "您已經提交了嗎?\n"
 "試試 \"git %s --continue\""
 
-#: sequencer.c:3411 sequencer.c:4473
+#: sequencer.c:3411 sequencer.c:4472
 msgid "cannot read HEAD"
 msgstr "不能讀取 HEAD"
 
@@ -8153,90 +7917,90 @@
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:3571
+#: sequencer.c:3572
 #, c-format
 msgid "illegal label name: '%.*s'"
 msgstr "非法的標籤名稱:'%.*s'"
 
-#: sequencer.c:3625
+#: sequencer.c:3645
 msgid "writing fake root commit"
 msgstr "寫偽根提交"
 
-#: sequencer.c:3630
+#: sequencer.c:3650
 msgid "writing squash-onto"
 msgstr "寫入 squash-onto"
 
-#: sequencer.c:3714
+#: sequencer.c:3734
 #, c-format
 msgid "could not resolve '%s'"
 msgstr "無法解析 '%s'"
 
-#: sequencer.c:3747
+#: sequencer.c:3767
 msgid "cannot merge without a current revision"
 msgstr "沒有目前版本不能合併"
 
-#: sequencer.c:3769
+#: sequencer.c:3789
 #, c-format
 msgid "unable to parse '%.*s'"
 msgstr "無法解析 '%.*s'"
 
-#: sequencer.c:3778
+#: sequencer.c:3798
 #, c-format
 msgid "nothing to merge: '%.*s'"
 msgstr "無可用合併:'%.*s'"
 
-#: sequencer.c:3790
+#: sequencer.c:3810
 msgid "octopus merge cannot be executed on top of a [new root]"
 msgstr "章魚合並不能在一個新的根提交上執行"
 
-#: sequencer.c:3806
+#: sequencer.c:3826
 #, c-format
 msgid "could not get commit message of '%s'"
 msgstr "不能取得 '%s' 的提交說明"
 
-#: sequencer.c:3989
+#: sequencer.c:4009
 #, c-format
 msgid "could not even attempt to merge '%.*s'"
 msgstr "甚至不能嘗試合併 '%.*s'"
 
-#: sequencer.c:4005
+#: sequencer.c:4025
 msgid "merge: Unable to write new index file"
 msgstr "合併:無法寫入新索引檔案"
 
-#: sequencer.c:4079
+#: sequencer.c:4099
 msgid "Cannot autostash"
 msgstr "無法 autostash"
 
-#: sequencer.c:4082
+#: sequencer.c:4102
 #, c-format
 msgid "Unexpected stash response: '%s'"
 msgstr "意外的 stash 回應:'%s'"
 
-#: sequencer.c:4088
+#: sequencer.c:4108
 #, c-format
 msgid "Could not create directory for '%s'"
 msgstr "不能為 '%s' 建立目錄"
 
-#: sequencer.c:4091
+#: sequencer.c:4111
 #, c-format
 msgid "Created autostash: %s\n"
 msgstr "建立了 autostash:%s\n"
 
-#: sequencer.c:4095
+#: sequencer.c:4115
 msgid "could not reset --hard"
 msgstr "無法 reset --hard"
 
-#: sequencer.c:4120
+#: sequencer.c:4140
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "已套用 autostash。\n"
 
-#: sequencer.c:4132
+#: sequencer.c:4152
 #, c-format
 msgid "cannot store %s"
 msgstr "不能儲存 %s"
 
-#: sequencer.c:4135
+#: sequencer.c:4155
 #, c-format
 msgid ""
 "%s\n"
@@ -8247,29 +8011,29 @@
 "您的修改安全地儲存在儲藏區中。\n"
 "您可以在任何時候執行 \"git stash pop\" 或 \"git stash drop\"。\n"
 
-#: sequencer.c:4140
+#: sequencer.c:4160
 msgid "Applying autostash resulted in conflicts."
 msgstr "因套用自動儲藏而導致衝突。"
 
-#: sequencer.c:4141
+#: sequencer.c:4161
 msgid "Autostash exists; creating a new stash entry."
 msgstr "已有自動儲藏;建立新儲藏項目。"
 
-#: sequencer.c:4234 git-rebase--preserve-merges.sh:769
+#: sequencer.c:4233 git-rebase--preserve-merges.sh:769
 msgid "could not detach HEAD"
 msgstr "不能分離開頭指標"
 
-#: sequencer.c:4249
+#: sequencer.c:4248
 #, c-format
 msgid "Stopped at HEAD\n"
 msgstr "停止在 HEAD\n"
 
-#: sequencer.c:4251
+#: sequencer.c:4250
 #, c-format
 msgid "Stopped at %s\n"
 msgstr "停止在 %s\n"
 
-#: sequencer.c:4259
+#: sequencer.c:4258
 #, c-format
 msgid ""
 "Could not execute the todo command\n"
@@ -8289,58 +8053,58 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:4305
+#: sequencer.c:4304
 #, c-format
 msgid "Rebasing (%d/%d)%s"
 msgstr "正在重定基底 (%d/%d)%s"
 
-#: sequencer.c:4351
+#: sequencer.c:4350
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "停止在 %s... %.*s\n"
 
-#: sequencer.c:4422
+#: sequencer.c:4421
 #, c-format
 msgid "unknown command %d"
 msgstr "未知指令 %d"
 
-#: sequencer.c:4481
+#: sequencer.c:4480
 msgid "could not read orig-head"
 msgstr "不能讀取 orig-head"
 
-#: sequencer.c:4486
+#: sequencer.c:4485
 msgid "could not read 'onto'"
 msgstr "不能讀取 'onto'"
 
-#: sequencer.c:4500
+#: sequencer.c:4499
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "不能更新 HEAD 為 %s"
 
-#: sequencer.c:4560
+#: sequencer.c:4559
 #, c-format
 msgid "Successfully rebased and updated %s.\n"
 msgstr "成功重定基底並更新 %s。\n"
 
-#: sequencer.c:4612
+#: sequencer.c:4611
 msgid "cannot rebase: You have unstaged changes."
 msgstr "不能重定基底:您有未暫存的變更。"
 
-#: sequencer.c:4621
+#: sequencer.c:4620
 msgid "cannot amend non-existing commit"
 msgstr "不能修補不存在的提交"
 
-#: sequencer.c:4623
+#: sequencer.c:4622
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "無效檔案:'%s'"
 
-#: sequencer.c:4625
+#: sequencer.c:4624
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "無效內容:'%s'"
 
-#: sequencer.c:4628
+#: sequencer.c:4627
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -8349,50 +8113,50 @@
 "\n"
 "您的工作區中有未提交的變更。請先提交然後再次執行 'git rebase --continue'。"
 
-#: sequencer.c:4664 sequencer.c:4703
+#: sequencer.c:4663 sequencer.c:4702
 #, c-format
 msgid "could not write file: '%s'"
 msgstr "不能寫入檔案:'%s'"
 
-#: sequencer.c:4719
+#: sequencer.c:4718
 msgid "could not remove CHERRY_PICK_HEAD"
 msgstr "不能刪除 CHERRY_PICK_HEAD"
 
-#: sequencer.c:4726
+#: sequencer.c:4725
 msgid "could not commit staged changes."
 msgstr "不能提交暫存的修改。"
 
-#: sequencer.c:4846
+#: sequencer.c:4845
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s:不能揀選一個%s"
 
-#: sequencer.c:4850
+#: sequencer.c:4849
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s:錯誤的版本"
 
-#: sequencer.c:4885
+#: sequencer.c:4884
 msgid "can't revert as initial commit"
 msgstr "不能作為初始提交還原提交"
 
-#: sequencer.c:5362
+#: sequencer.c:5361
 msgid "make_script: unhandled options"
 msgstr "make_script:有未能處理的選項"
 
-#: sequencer.c:5365
+#: sequencer.c:5364
 msgid "make_script: error preparing revisions"
 msgstr "make_script:準備版本時錯誤"
 
-#: sequencer.c:5615 sequencer.c:5632
+#: sequencer.c:5614 sequencer.c:5631
 msgid "nothing to do"
 msgstr "無事可做"
 
-#: sequencer.c:5651
+#: sequencer.c:5650
 msgid "could not skip unnecessary pick commands"
 msgstr "無法略過不必要的揀選"
 
-#: sequencer.c:5751
+#: sequencer.c:5750
 msgid "the script was already rearranged."
 msgstr "腳本已經重新編排。"
 
@@ -8441,92 +8205,94 @@
 msgid "unable to set up work tree using invalid config"
 msgstr "無法使用無效設定來建立工作區"
 
-#: setup.c:423
+#: setup.c:423 builtin/rev-parse.c:895
 msgid "this operation must be run in a work tree"
 msgstr "該動作必須在一個工作區中執行"
 
-#: setup.c:661
+#: setup.c:658
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "期望 git 版本庫版本 <= %d,卻得到 %d"
 
-#: setup.c:669
-msgid "unknown repository extensions found:"
-msgstr "發現未知的版本庫擴展:"
+#: setup.c:666
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "找到未知的儲存庫擴充元件:"
 
-#: setup.c:681
-msgid "repo version is 0, but v1-only extensions found:"
-msgstr "repo 的版本是 0,但找到只支援 v1 的擴充元件:"
+#: setup.c:680
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "repo 版本是 0 (v0),但找到只支援 v1 的擴充元件:"
 
-#: setup.c:700
+#: setup.c:701
 #, c-format
 msgid "error opening '%s'"
 msgstr "開啟 '%s' 發生錯誤"
 
-#: setup.c:702
+#: setup.c:703
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "檔案太大,無法作為 .git 檔案:'%s'"
 
-#: setup.c:704
+#: setup.c:705
 #, c-format
 msgid "error reading %s"
 msgstr "讀取 %s 發生錯誤"
 
-#: setup.c:706
+#: setup.c:707
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "無效的 gitfile 格式:%s"
 
-#: setup.c:708
+#: setup.c:709
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "在 gitfile 中沒有路徑:%s"
 
-#: setup.c:710
+#: setup.c:711
 #, c-format
 msgid "not a git repository: %s"
 msgstr "不是一個 git 版本庫:%s"
 
-#: setup.c:812
+#: setup.c:813
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' 太大"
 
-#: setup.c:826
+#: setup.c:827
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "不是一個 git 版本庫:'%s'"
 
-#: setup.c:855 setup.c:857 setup.c:888
+#: setup.c:856 setup.c:858 setup.c:889
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "不能切換目錄到 '%s'"
 
-#: setup.c:860 setup.c:916 setup.c:926 setup.c:965 setup.c:973
+#: setup.c:861 setup.c:917 setup.c:927 setup.c:966 setup.c:974
 msgid "cannot come back to cwd"
 msgstr "無法返回目前工作目錄"
 
-#: setup.c:987
+#: setup.c:988
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "取得 '%*s%s%s' 狀態(stat)失敗"
 
-#: setup.c:1225
+#: setup.c:1231
 msgid "Unable to read current working directory"
 msgstr "不能讀取目前工作目錄"
 
-#: setup.c:1234 setup.c:1240
+#: setup.c:1240 setup.c:1246
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "不能切換到 '%s'"
 
-#: setup.c:1245
+#: setup.c:1251
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "不是一個 git 版本庫(或者任何父目錄):%s"
 
-#: setup.c:1251
+#: setup.c:1257
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -8535,7 +8301,7 @@
 "不是一個 git 版本庫(或者直至掛載點 %s 的任何父目錄)\n"
 "停止在檔案系統邊界(未設定 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: setup.c:1370
+#: setup.c:1381
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -8544,28 +8310,27 @@
 "參數 core.sharedRepository 的檔案屬性值有問題(0%.3o)。\n"
 "檔案所有者必須始終擁有讀寫權限。"
 
-#: setup.c:1417
+#: setup.c:1430
 msgid "open /dev/null or dup failed"
 msgstr "不能開啟或者複製 /dev/null"
 
-#: setup.c:1432
+#: setup.c:1445
 msgid "fork failed"
 msgstr "fork 失敗"
 
-#: setup.c:1437 t/helper/test-simple-ipc.c:285
+#: setup.c:1450 t/helper/test-simple-ipc.c:285
 msgid "setsid failed"
 msgstr "setsid 失敗"
 
-#: sparse-index.c:151
+#: sparse-index.c:162
 msgid "attempting to use sparse-index without cone mode"
 msgstr "嘗試不在 cone 模式使用稀疏索引"
 
-#: sparse-index.c:156
-#, fuzzy
+#: sparse-index.c:176
 msgid "unable to update cache-tree, staying full"
-msgstr "無法更新快取樹:保持用完狀態"
+msgstr "無法更新快取樹,保持完整"
 
-#: sparse-index.c:239
+#: sparse-index.c:263
 #, c-format
 msgid "index entry is a directory, but not sparse (%08x)"
 msgstr "索引項目是資料夾,但不是稀疏資料夾(%08x)"
@@ -8620,7 +8385,7 @@
 msgid_plural "%u bytes/s"
 msgstr[0] "%u 位元組/秒"
 
-#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:737
+#: strbuf.c:1168 wrapper.c:199 wrapper.c:369 builtin/am.c:738
 #: builtin/rebase.c:866
 #, c-format
 msgid "could not open '%s' for writing"
@@ -8676,7 +8441,7 @@
 #: submodule.c:328
 #, c-format
 msgid "in unpopulated submodule '%s'"
-msgstr "位於未檢出的子模組 '%s'"
+msgstr "位於未簽出的子模組 '%s'"
 
 #: submodule.c:359
 #, c-format
@@ -8688,55 +8453,55 @@
 msgid "bad --ignore-submodules argument: %s"
 msgstr "無效 --ignore-submodules 參數:%s"
 
-#: submodule.c:818
+#: submodule.c:805
 #, c-format
 msgid ""
 "Submodule in commit %s at path: '%s' collides with a submodule named the "
 "same. Skipping it."
 msgstr "%s 提交位於路徑:'%s' 的子模組與同名的子模組衝突。略過。"
 
-#: submodule.c:921
+#: submodule.c:908
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "子模組條目 '%s'(%s)是一個 %s,不是一個提交"
 
-#: submodule.c:1006
+#: submodule.c:993
 #, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr "無法在 %s 子模組執行 'git rev-list <提交> --not --remotes -n 1' 命令"
 
-#: submodule.c:1129
+#: submodule.c:1116
 #, c-format
 msgid "process for submodule '%s' failed"
 msgstr "處理 '%s' 子模組失敗"
 
-#: submodule.c:1158 builtin/branch.c:691 builtin/submodule--helper.c:2470
+#: submodule.c:1145 builtin/branch.c:691 builtin/submodule--helper.c:2486
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "無法將 HEAD 解析為有效引用。"
 
-#: submodule.c:1169
+#: submodule.c:1156
 #, c-format
 msgid "Pushing submodule '%s'\n"
 msgstr "正在推送 '%s' 子模組\n"
 
-#: submodule.c:1172
+#: submodule.c:1159
 #, c-format
 msgid "Unable to push submodule '%s'\n"
 msgstr "無法推送 '%s' 子模組\n"
 
-#: submodule.c:1464
+#: submodule.c:1451
 #, c-format
 msgid "Fetching submodule %s%s\n"
 msgstr "正在抓取 %s%s 子模組\n"
 
-#: submodule.c:1498
+#: submodule.c:1485
 #, c-format
 msgid "Could not access submodule '%s'\n"
 msgstr "無法存取子模組 '%s'\n"
 
-#: submodule.c:1653
+#: submodule.c:1640
 #, c-format
 msgid ""
 "Errors during submodule fetch:\n"
@@ -8745,77 +8510,77 @@
 "抓取子模組時發生錯誤:\n"
 "%s"
 
-#: submodule.c:1678
+#: submodule.c:1665
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "無法將 '%s' 識別為一個 git 版本庫"
 
-#: submodule.c:1695
+#: submodule.c:1682
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
 msgstr "無法在 %s 子模組執行 'git status --porcelain=2'"
 
-#: submodule.c:1736
+#: submodule.c:1723
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
 msgstr "%s 子模組執行 'git status --porcelain=2' 失敗"
 
-#: submodule.c:1811
+#: submodule.c:1798
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "無法在子模組 '%s' 中啟動 'git status'"
 
-#: submodule.c:1824
+#: submodule.c:1811
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "無法在子模組 '%s' 中執行 'git status'"
 
-#: submodule.c:1839
+#: submodule.c:1826
 #, c-format
 msgid "Could not unset core.worktree setting in submodule '%s'"
 msgstr "無法在子模組 '%s' 中取消 core.worktree 的設定"
 
-#: submodule.c:1866 submodule.c:2176
+#: submodule.c:1853 submodule.c:2163
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "無法遞迴子模組路徑 '%s'"
 
-#: submodule.c:1887
+#: submodule.c:1874
 msgid "could not reset submodule index"
 msgstr "無法重設子模組的索引"
 
-#: submodule.c:1929
+#: submodule.c:1916
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "子模組 '%s' 中有髒索引"
 
-#: submodule.c:1981
+#: submodule.c:1968
 #, c-format
 msgid "Submodule '%s' could not be updated."
 msgstr "子模組 '%s' 無法被更新。"
 
-#: submodule.c:2049
+#: submodule.c:2036
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
 msgstr "「%s」子模組 git 目錄在「%.*s」git 路徑中"
 
-#: submodule.c:2070
+#: submodule.c:2057
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "不支援對有多個工作區的子模組 '%s' 執行 relocate_gitdir"
 
-#: submodule.c:2082 submodule.c:2141
+#: submodule.c:2069 submodule.c:2128
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "不能查詢子模組 '%s' 的名稱"
 
-#: submodule.c:2086
+#: submodule.c:2073
 #, c-format
 msgid "refusing to move '%s' into an existing git dir"
 msgstr "拒絕移動「%s」至現存 git 目錄"
 
-#: submodule.c:2093
+#: submodule.c:2080
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -8826,11 +8591,11 @@
 "'%s' 遷移至\n"
 "'%s'\n"
 
-#: submodule.c:2221
+#: submodule.c:2208
 msgid "could not start ls-files in .."
 msgstr "無法在 .. 中啟動 ls-files"
 
-#: submodule.c:2261
+#: submodule.c:2248
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree 返回未知返回值 %d"
@@ -8867,7 +8632,7 @@
 msgid "could not read input file '%s'"
 msgstr "不能讀取輸入檔案 '%s'"
 
-#: trailer.c:766 builtin/mktag.c:88
+#: trailer.c:766 builtin/mktag.c:88 imap-send.c:1577
 msgid "could not read from stdin"
 msgstr "不能自標準輸入讀取"
 
@@ -8955,7 +8720,7 @@
 msgid "invalid remote service path"
 msgstr "無效的遠端服務路徑"
 
-#: transport-helper.c:661 transport.c:1471
+#: transport-helper.c:661 transport.c:1477
 msgid "operation not supported by protocol"
 msgstr "協定不支援該動作"
 
@@ -8964,7 +8729,7 @@
 msgid "can't connect to subservice %s"
 msgstr "不能連線到子服務 %s"
 
-#: transport-helper.c:693 transport.c:397
+#: transport-helper.c:693 transport.c:400
 msgid "--negotiate-only requires protocol v2"
 msgstr "--negotiate-only 需要 v2 版協定"
 
@@ -9097,53 +8862,53 @@
 msgid "could not read bundle '%s'"
 msgstr "無法讀取 bundle '%s'"
 
-#: transport.c:220
+#: transport.c:223
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "傳輸:無效的深度選項 '%s'"
 
-#: transport.c:272
+#: transport.c:275
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "檢視 'git help config' 中的 protocol.version 取得更多訊息"
 
-#: transport.c:273
+#: transport.c:276
 msgid "server options require protocol version 2 or later"
 msgstr "服務端選項需要版本 2 協定或更高"
 
-#: transport.c:400
+#: transport.c:403
 msgid "server does not support wait-for-done"
 msgstr "伺服器不支援「等待完成」(wait-for-done) 功能"
 
-#: transport.c:751
+#: transport.c:755
 msgid "could not parse transport.color.* config"
 msgstr "不能解析 transport.color.* 設定"
 
-#: transport.c:826
+#: transport.c:830
 msgid "support for protocol v2 not implemented yet"
 msgstr "協定 v2 的支援尚未實現"
 
-#: transport.c:960
+#: transport.c:965
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "設定 '%s' 的取值未知:%s"
 
-#: transport.c:1026
+#: transport.c:1031
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "傳輸 '%s' 不允許"
 
-#: transport.c:1079
+#: transport.c:1084
 msgid "git-over-rsync is no longer supported"
 msgstr "不再支援 git-over-rsync"
 
-#: transport.c:1181
+#: transport.c:1187
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr "下列子模組路徑所包含的修改在任何遠端源中都找不到:\n"
 
-#: transport.c:1185
+#: transport.c:1191
 #, c-format
 msgid ""
 "\n"
@@ -9170,11 +8935,11 @@
 "以推送至遠端。\n"
 "\n"
 
-#: transport.c:1193
+#: transport.c:1199
 msgid "Aborting."
 msgstr "正在終止。"
 
-#: transport.c:1340
+#: transport.c:1346
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模組"
 
@@ -9200,7 +8965,7 @@
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%sPlease commit your changes or stash them before you switch branches."
 msgstr ""
-"您對下列檔案的本機修改將被檢出動作覆蓋:\n"
+"您對下列檔案的本機修改將被簽出動作覆蓋:\n"
 "%%s請在切換分支前提交或儲藏您的修改。"
 
 #: unpack-trees.c:117
@@ -9209,7 +8974,7 @@
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%s"
 msgstr ""
-"您對下列檔案的本機修改將被檢出動作覆蓋:\n"
+"您對下列檔案的本機修改將被簽出動作覆蓋:\n"
 "%%s"
 
 #: unpack-trees.c:120
@@ -9263,7 +9028,7 @@
 "The following untracked working tree files would be removed by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"工作區中下列未追蹤的檔案將會因為檢出動作而被刪除:\n"
+"工作區中下列未追蹤的檔案將會因為簽出動作而被刪除:\n"
 "%%s請在切換分支之前移動或刪除。"
 
 #: unpack-trees.c:138
@@ -9272,7 +9037,7 @@
 "The following untracked working tree files would be removed by checkout:\n"
 "%%s"
 msgstr ""
-"工作區中下列未追蹤的檔案將會因為檢出動作而被刪除:\n"
+"工作區中下列未追蹤的檔案將會因為簽出動作而被刪除:\n"
 "%%s"
 
 #: unpack-trees.c:141
@@ -9318,7 +9083,7 @@
 "checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"工作區中下列未追蹤的檔案將會因為檢出動作而被覆蓋:\n"
+"工作區中下列未追蹤的檔案將會因為簽出動作而被覆蓋:\n"
 "%%s請在切換分支前移動或刪除。"
 
 #: unpack-trees.c:156
@@ -9328,7 +9093,7 @@
 "checkout:\n"
 "%%s"
 msgstr ""
-"工作區中下列未追蹤的檔案將會因為檢出動作而被覆蓋:\n"
+"工作區中下列未追蹤的檔案將會因為簽出動作而被覆蓋:\n"
 "%%s"
 
 #: unpack-trees.c:159
@@ -9388,7 +9153,7 @@
 "patterns:\n"
 "%s"
 msgstr ""
-"即使有稀疏檢出樣板,以下路徑不是最新且保留下來:\n"
+"即使有稀疏簽出樣板,以下路徑不是最新且保留下來:\n"
 "%s"
 
 #: unpack-trees.c:182
@@ -9397,7 +9162,7 @@
 "The following paths are unmerged and were left despite sparse patterns:\n"
 "%s"
 msgstr ""
-"即使有稀疏檢出樣板,以下路徑未合併且保留下來:\n"
+"即使有稀疏簽出樣板,以下路徑未合併且保留下來:\n"
 "%s"
 
 #: unpack-trees.c:184
@@ -9407,7 +9172,7 @@
 "patterns:\n"
 "%s"
 msgstr ""
-"即使有稀疏檢出樣板,以下路徑已經存在而因此未更新:\n"
+"即使有稀疏簽出樣板,以下路徑已經存在而因此未更新:\n"
 "%s"
 
 #: unpack-trees.c:264
@@ -9435,11 +9200,11 @@
 "以下路徑發生碰撞(如:在不區分大小寫的檔案系統上的區分大小寫的路徑),\n"
 "並且碰撞組中只有一個檔案存在工作區中:\n"
 
-#: unpack-trees.c:1519
+#: unpack-trees.c:1618
 msgid "Updating index flags"
 msgstr "正在更新索引旗標"
 
-#: unpack-trees.c:2608
+#: unpack-trees.c:2718
 #, c-format
 msgid "worktree and untracked commit have duplicate entries: %s"
 msgstr "工作區和未追蹤提交有重複項目:%s"
@@ -9481,99 +9246,99 @@
 msgid "Fetching objects"
 msgstr "正在抓取物件"
 
-#: worktree.c:238 builtin/am.c:2151
+#: worktree.c:236 builtin/am.c:2152
 #, c-format
 msgid "failed to read '%s'"
 msgstr "讀取 '%s' 失敗"
 
-#: worktree.c:304
+#: worktree.c:303
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作區的 '%s' 不是版本庫目錄"
 
-#: worktree.c:315
+#: worktree.c:314
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "檔案 '%s' 不包含工作區的絕對路徑"
 
-#: worktree.c:327
+#: worktree.c:326
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:333
+#: worktree.c:332
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一個 .git 檔案,錯誤碼 %d"
 
-#: worktree.c:342
+#: worktree.c:341
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 沒有指回到 '%s'"
 
-#: worktree.c:608
+#: worktree.c:603
 msgid "not a directory"
 msgstr "不是目錄"
 
-#: worktree.c:617
+#: worktree.c:612
 msgid ".git is not a file"
 msgstr ".git 不是檔案"
 
-#: worktree.c:619
+#: worktree.c:614
 msgid ".git file broken"
 msgstr ".git 檔案損毀"
 
-#: worktree.c:621
+#: worktree.c:616
 msgid ".git file incorrect"
 msgstr ".git 檔案不正確"
 
-#: worktree.c:727
+#: worktree.c:722
 msgid "not a valid path"
 msgstr "非有效路徑"
 
-#: worktree.c:733
+#: worktree.c:728
 msgid "unable to locate repository; .git is not a file"
 msgstr "無法定位版本庫;.git 不是檔案"
 
-#: worktree.c:737
+#: worktree.c:732
 msgid "unable to locate repository; .git file does not reference a repository"
 msgstr "無法定位版本庫;.git 檔案未參考版本庫"
 
-#: worktree.c:741
+#: worktree.c:736
 msgid "unable to locate repository; .git file broken"
 msgstr "無法定位版本庫;.git 檔案損壞"
 
-#: worktree.c:747
+#: worktree.c:742
 msgid "gitdir unreadable"
 msgstr "無法讀取 gitdir"
 
-#: worktree.c:751
+#: worktree.c:746
 msgid "gitdir incorrect"
 msgstr "不正確的 gitdir"
 
-#: worktree.c:776
+#: worktree.c:771
 msgid "not a valid directory"
 msgstr "非有效目錄"
 
-#: worktree.c:782
+#: worktree.c:777
 msgid "gitdir file does not exist"
 msgstr "找不到 gitdir 檔案"
 
-#: worktree.c:787 worktree.c:796
+#: worktree.c:782 worktree.c:791
 #, c-format
 msgid "unable to read gitdir file (%s)"
 msgstr "無法讀取 gitdir 檔案 (%s)"
 
-#: worktree.c:806
+#: worktree.c:801
 #, c-format
 msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr "讀取過短(預期有 %<PRIuMAX> 位元組,只讀到 %<PRIuMAX>)"
 
-#: worktree.c:814
+#: worktree.c:809
 msgid "invalid gitdir file"
 msgstr "gitdir 檔案無效"
 
-#: worktree.c:822
+#: worktree.c:817
 msgid "gitdir file points to non-existent location"
 msgstr "gitdir 檔案指向的位置不存在"
 
@@ -9626,11 +9391,11 @@
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (使用 \"git rm <檔案>...\" 標記解決方案)"
 
-#: wt-status.c:211 wt-status.c:1075
+#: wt-status.c:211 wt-status.c:1125
 msgid "Changes to be committed:"
 msgstr "要提交的變更:"
 
-#: wt-status.c:234 wt-status.c:1084
+#: wt-status.c:234 wt-status.c:1134
 msgid "Changes not staged for commit:"
 msgstr "尚未暫存以備提交的變更:"
 
@@ -9736,21 +9501,21 @@
 msgid "untracked content, "
 msgstr "未追蹤的內容, "
 
-#: wt-status.c:908
+#: wt-status.c:958
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "您的儲藏區目前有 %d 條紀錄"
 
-#: wt-status.c:939
+#: wt-status.c:989
 msgid "Submodules changed but not updated:"
 msgstr "子模組已修改但尚未更新:"
 
-#: wt-status.c:941
+#: wt-status.c:991
 msgid "Submodule changes to be committed:"
 msgstr "要提交的子模組變更:"
 
-#: wt-status.c:1023
+#: wt-status.c:1073
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -9758,7 +9523,7 @@
 "不要改動或刪除上面的一行。\n"
 "其下所有內容都將被忽略。"
 
-#: wt-status.c:1115
+#: wt-status.c:1165
 #, c-format
 msgid ""
 "\n"
@@ -9769,278 +9534,282 @@
 "花了 %.2f 秒才計算出分支的領先/落後範圍。\n"
 "為避免,您可以使用 '--no-ahead-behind'。\n"
 
-#: wt-status.c:1145
+#: wt-status.c:1195
 msgid "You have unmerged paths."
 msgstr "您有尚未合併的路徑。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1148
+#: wt-status.c:1198
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (解決衝突並執行 \"git commit\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1150
+#: wt-status.c:1200
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (使用 \"git merge --abort\" 終止合併)"
 
-#: wt-status.c:1154
+#: wt-status.c:1204
 msgid "All conflicts fixed but you are still merging."
 msgstr "所有衝突已解決但您仍處於合併中。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1157
+#: wt-status.c:1207
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (使用 \"git commit\" 結束合併)"
 
-#: wt-status.c:1166
+#: wt-status.c:1216
 msgid "You are in the middle of an am session."
 msgstr "您正處於 am 動作過程中。"
 
-#: wt-status.c:1169
+#: wt-status.c:1219
 msgid "The current patch is empty."
 msgstr "目前的修補檔為空。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1173
+#: wt-status.c:1223
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (解決衝突,然後執行 \"git am --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1175
+#: wt-status.c:1225
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (使用 \"git am --skip\" 略過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1177
+#: wt-status.c:1227
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (使用 \"git am --abort\" 復原原有分支)"
 
-#: wt-status.c:1310
+#: wt-status.c:1360
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo 遺失。"
 
-#: wt-status.c:1312
+#: wt-status.c:1362
 msgid "No commands done."
 msgstr "沒有指令被執行。"
 
-#: wt-status.c:1315
+#: wt-status.c:1365
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "最後一條指令已完成(%d 條指令被執行):"
 
-#: wt-status.c:1326
+#: wt-status.c:1376
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (更多參見檔案 %s)"
 
-#: wt-status.c:1331
+#: wt-status.c:1381
 msgid "No commands remaining."
 msgstr "未剩下任何指令。"
 
-#: wt-status.c:1334
+#: wt-status.c:1384
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "接下來要執行的指令(剩餘 %d 條指令):"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1342
+#: wt-status.c:1392
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (使用 \"git rebase --edit-todo\" 來檢視和編輯)"
 
-#: wt-status.c:1354
+#: wt-status.c:1404
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作。"
 
-#: wt-status.c:1359
+#: wt-status.c:1409
 msgid "You are currently rebasing."
 msgstr "您在執行重定基底動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1372
+#: wt-status.c:1422
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (解決衝突,然後執行 \"git rebase --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1374
+#: wt-status.c:1424
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (使用 \"git rebase --skip\" 略過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1376
+#: wt-status.c:1426
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
-msgstr "  (使用 \"git rebase --abort\" 以檢出原有分支)"
+msgstr "  (使用 \"git rebase --abort\" 以簽出原有分支)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1383
+#: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git rebase --continue\")"
 
-#: wt-status.c:1387
+#: wt-status.c:1437
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作時分割提交。"
 
-#: wt-status.c:1392
+#: wt-status.c:1442
 msgid "You are currently splitting a commit during a rebase."
 msgstr "您在執行重定基底動作時分割提交。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1395
+#: wt-status.c:1445
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (一旦您工作目錄提交乾淨後,執行 \"git rebase --continue\")"
 
-#: wt-status.c:1399
+#: wt-status.c:1449
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "您在執行將分支 '%s' 重定基底到 '%s' 的動作時編輯提交。"
 
-#: wt-status.c:1404
+#: wt-status.c:1454
 msgid "You are currently editing a commit during a rebase."
 msgstr "您在執行重定基底動作時編輯提交。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1407
+#: wt-status.c:1457
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (使用 \"git commit --amend\" 修補目前提交)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1409
+#: wt-status.c:1459
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (當您對您的修改滿意後執行 \"git rebase --continue\")"
 
-#: wt-status.c:1420
+#: wt-status.c:1470
 msgid "Cherry-pick currently in progress."
 msgstr "揀選動作正在進行中。"
 
-#: wt-status.c:1423
+#: wt-status.c:1473
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "您在執行揀選提交 %s 的動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1430
+#: wt-status.c:1480
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (解決衝突並執行 \"git cherry-pick --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1433
+#: wt-status.c:1483
 msgid "  (run \"git cherry-pick --continue\" to continue)"
 msgstr "  (執行 \"git cherry-pick --continue\" 以繼續)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1436
+#: wt-status.c:1486
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git cherry-pick --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1438
+#: wt-status.c:1488
 msgid "  (use \"git cherry-pick --skip\" to skip this patch)"
 msgstr "  (使用 \"git cherry-pick --skip\" 略過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1440
+#: wt-status.c:1490
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (使用 \"git cherry-pick --abort\" 以取消揀選動作)"
 
-#: wt-status.c:1450
+#: wt-status.c:1500
 msgid "Revert currently in progress."
-msgstr "還原動作正在行中。"
+msgstr "還原動作正在進行中。"
 
-#: wt-status.c:1453
+#: wt-status.c:1503
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "您在執行反轉提交 %s 的動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1459
+#: wt-status.c:1509
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (解決衝突並執行 \"git revert --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1462
+#: wt-status.c:1512
 msgid "  (run \"git revert --continue\" to continue)"
 msgstr "  (執行 \"git revert --continue\" 以繼續)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1465
+#: wt-status.c:1515
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (所有衝突已解決:執行 \"git revert --continue\")"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1467
+#: wt-status.c:1517
 msgid "  (use \"git revert --skip\" to skip this patch)"
 msgstr "  (使用 \"git revert --skip\" 略過此修補檔)"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1469
+#: wt-status.c:1519
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (使用 \"git revert --abort\" 以取消反轉提交動作)"
 
-#: wt-status.c:1479
+#: wt-status.c:1529
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "您在執行從分支 '%s' 開始的二分搜尋動作。"
 
-#: wt-status.c:1483
+#: wt-status.c:1533
 msgid "You are currently bisecting."
 msgstr "您在執行二分搜尋動作。"
 
 #  譯者:請維持前導空格
-#: wt-status.c:1486
+#: wt-status.c:1536
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
-msgstr "  (使用 \"git bisect reset\" 檢出原有分支)"
+msgstr "  (使用 \"git bisect reset\" 簽出原有分支)"
 
-#: wt-status.c:1497
+#: wt-status.c:1547
+msgid "You are in a sparse checkout."
+msgstr "您正在稀疏簽出的工作區中。"
+
+#: wt-status.c:1550
 #, c-format
 msgid "You are in a sparse checkout with %d%% of tracked files present."
 msgstr "您處於稀疏簽出狀態,包含 %d%% 的追蹤檔案。"
 
-#: wt-status.c:1736
+#: wt-status.c:1794
 msgid "On branch "
 msgstr "位於分支 "
 
-#: wt-status.c:1743
+#: wt-status.c:1801
 msgid "interactive rebase in progress; onto "
 msgstr "互動式重定基底動作正在進行中;至 "
 
-#: wt-status.c:1745
+#: wt-status.c:1803
 msgid "rebase in progress; onto "
 msgstr "重定基底動作正在進行中;至 "
 
-#: wt-status.c:1750
+#: wt-status.c:1808
 msgid "HEAD detached at "
 msgstr "開頭指標分離於 "
 
-#: wt-status.c:1752
+#: wt-status.c:1810
 msgid "HEAD detached from "
 msgstr "開頭指標分離自 "
 
-#: wt-status.c:1755
+#: wt-status.c:1813
 msgid "Not currently on any branch."
 msgstr "目前不在任何分支上。"
 
-#: wt-status.c:1772
+#: wt-status.c:1830
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1773
+#: wt-status.c:1831
 msgid "No commits yet"
 msgstr "尚無提交"
 
-#: wt-status.c:1787
+#: wt-status.c:1845
 msgid "Untracked files"
 msgstr "未追蹤的檔案"
 
-#: wt-status.c:1789
+#: wt-status.c:1847
 msgid "Ignored files"
 msgstr "忽略的檔案"
 
-#: wt-status.c:1793
+#: wt-status.c:1851
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -10050,115 +9819,115 @@
 "耗費了 %.2f 秒以枚舉未追蹤的檔案。'status -uno' 也許能提高速度,\n"
 "但您需要小心不要忘了新增新檔案(參見 'git help status')。"
 
-#: wt-status.c:1799
+#: wt-status.c:1857
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未追蹤的檔案沒有列出%s"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1801
+#: wt-status.c:1859
 msgid " (use -u option to show untracked files)"
 msgstr " (使用 -u 參數顯示未追蹤的檔案)"
 
-#: wt-status.c:1807
+#: wt-status.c:1865
 msgid "No changes"
 msgstr "沒有修改"
 
-#: wt-status.c:1812
+#: wt-status.c:1870
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr "修改尚未加入提交(使用 \"git add\" 和/或 \"git commit -a\")\n"
 
-#: wt-status.c:1816
+#: wt-status.c:1874
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1820
+#: wt-status.c:1878
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案(使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1824
+#: wt-status.c:1882
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1828
+#: wt-status.c:1886
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "無檔案要提交(建立/複製檔案並使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1832 wt-status.c:1838
+#: wt-status.c:1890 wt-status.c:1896
 #, c-format
 msgid "nothing to commit\n"
 msgstr "無檔案要提交\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1835
+#: wt-status.c:1893
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "無檔案要提交(使用 -u 顯示未追蹤的檔案)\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1840
+#: wt-status.c:1898
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "沒有要提交的檔案,工作區為乾淨狀態\n"
 
-#: wt-status.c:1945
+#: wt-status.c:2003
 msgid "No commits yet on "
 msgstr "尚無提交在 "
 
-#: wt-status.c:1949
+#: wt-status.c:2007
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1980
+#: wt-status.c:2038
 msgid "different"
 msgstr "不同"
 
 #  譯者:請維持句尾空格
-#: wt-status.c:1982 wt-status.c:1990
+#: wt-status.c:2040 wt-status.c:2048
 msgid "behind "
 msgstr "落後 "
 
-#: wt-status.c:1985 wt-status.c:1988
+#: wt-status.c:2043 wt-status.c:2046
 msgid "ahead "
 msgstr "領先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2511
+#: wt-status.c:2569
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暫存的變更。"
 
-#: wt-status.c:2517
+#: wt-status.c:2575
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的變更。"
 
-#: wt-status.c:2519
+#: wt-status.c:2577
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的變更。"
 
-#: compat/simple-ipc/ipc-unix-socket.c:178
+#: compat/simple-ipc/ipc-unix-socket.c:182
 msgid "could not send IPC command"
 msgstr "無法傳送 IPC 命令"
 
-#: compat/simple-ipc/ipc-unix-socket.c:185
+#: compat/simple-ipc/ipc-unix-socket.c:189
 msgid "could not read IPC response"
 msgstr "無法讀取 IPC 回應"
 
-#: compat/simple-ipc/ipc-unix-socket.c:862
+#: compat/simple-ipc/ipc-unix-socket.c:866
 #, c-format
 msgid "could not start accept_thread '%s'"
 msgstr "無法啟動 accept_thread “%s”"
 
-#: compat/simple-ipc/ipc-unix-socket.c:874
+#: compat/simple-ipc/ipc-unix-socket.c:878
 #, c-format
 msgid "could not start worker[0] for '%s'"
 msgstr "無法啟動「%s」的 worker[0]"
@@ -10195,7 +9964,7 @@
 msgid "Unstaged changes after refreshing the index:"
 msgstr "重新整理索引之後尚未被暫存的變更:"
 
-#: builtin/add.c:307 builtin/rev-parse.c:991
+#: builtin/add.c:307 builtin/rev-parse.c:993
 msgid "Could not read the index"
 msgstr "不能讀取索引"
 
@@ -10230,8 +9999,8 @@
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路徑根據您的一個 .gitignore 檔案而被忽略:\n"
 
-#: builtin/add.c:363 builtin/clean.c:904 builtin/fetch.c:173 builtin/mv.c:124
-#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:559
+#: builtin/add.c:363 builtin/clean.c:901 builtin/fetch.c:173 builtin/mv.c:124
+#: builtin/prune-packed.c:14 builtin/pull.c:204 builtin/push.c:550
 #: builtin/remote.c:1427 builtin/rm.c:243 builtin/send-pack.c:190
 msgid "dry run"
 msgstr "測試執行"
@@ -10240,7 +10009,7 @@
 msgid "interactive picking"
 msgstr "互動式揀選"
 
-#: builtin/add.c:367 builtin/checkout.c:1567 builtin/reset.c:308
+#: builtin/add.c:367 builtin/checkout.c:1562 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "互動式挑選資料區塊"
 
@@ -10369,13 +10138,13 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "參數 --chmod 取值 '%s' 必須是 -x 或 +x"
 
-#: builtin/add.c:544 builtin/checkout.c:1735 builtin/commit.c:363
-#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1637
+#: builtin/add.c:544 builtin/checkout.c:1733 builtin/commit.c:363
+#: builtin/reset.c:328 builtin/rm.c:273 builtin/stash.c:1633
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 與 <路徑規格> 參數不相容"
 
-#: builtin/add.c:551 builtin/checkout.c:1747 builtin/commit.c:369
-#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1643
+#: builtin/add.c:551 builtin/checkout.c:1745 builtin/commit.c:369
+#: builtin/reset.c:334 builtin/rm.c:279 builtin/stash.c:1639
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
 
@@ -10394,105 +10163,105 @@
 "如要關閉此訊息,請執行\n"
 "\"git config advice.addEmptyPathspec false\""
 
-#: builtin/am.c:364
+#: builtin/am.c:365
 msgid "could not parse author script"
 msgstr "不能解析作者腳本"
 
-#: builtin/am.c:454
+#: builtin/am.c:455
 #, c-format
 msgid "'%s' was deleted by the applypatch-msg hook"
 msgstr "'%s' 被 applypatch-msg 掛鉤刪除"
 
-#: builtin/am.c:496
+#: builtin/am.c:497
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "非法的輸入行:'%s'。"
 
-#: builtin/am.c:534
+#: builtin/am.c:535
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "從 '%s' 複製註解到 '%s' 時失敗"
 
-#: builtin/am.c:560
+#: builtin/am.c:561
 msgid "fseek failed"
 msgstr "fseek 失敗"
 
-#: builtin/am.c:748
+#: builtin/am.c:749
 #, c-format
 msgid "could not parse patch '%s'"
 msgstr "無法解析修補檔 '%s'"
 
-#: builtin/am.c:813
+#: builtin/am.c:814
 msgid "Only one StGIT patch series can be applied at once"
 msgstr "一次只能有一個 StGIT 修補檔佇列被套用"
 
-#: builtin/am.c:861
+#: builtin/am.c:862
 msgid "invalid timestamp"
 msgstr "無效的時間戳"
 
-#: builtin/am.c:866 builtin/am.c:878
+#: builtin/am.c:867 builtin/am.c:879
 msgid "invalid Date line"
 msgstr "無效的日期行"
 
-#: builtin/am.c:873
+#: builtin/am.c:874
 msgid "invalid timezone offset"
 msgstr "無效的時區位移值"
 
-#: builtin/am.c:966
+#: builtin/am.c:967
 msgid "Patch format detection failed."
 msgstr "修補檔格式偵測失敗。"
 
-#: builtin/am.c:971 builtin/clone.c:414
+#: builtin/am.c:972 builtin/clone.c:414
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "建立目錄 '%s' 失敗"
 
-#: builtin/am.c:976
+#: builtin/am.c:977
 msgid "Failed to split patches."
 msgstr "分割修補檔失敗。"
 
-#: builtin/am.c:1125
+#: builtin/am.c:1126
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
 msgstr "當您解決這一問題,執行 \"%s --continue\"。"
 
-#: builtin/am.c:1126
+#: builtin/am.c:1127
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
 msgstr "如果您想要略過這一修補檔,則執行 \"%s --skip\"。"
 
-#: builtin/am.c:1127
+#: builtin/am.c:1128
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr "若要復原至原始分支並停止修補動作,執行 \"%s --abort\"。"
 
-#: builtin/am.c:1222
+#: builtin/am.c:1223
 msgid "Patch sent with format=flowed; space at the end of lines might be lost."
 msgstr "修補檔使用 format=flowed 格式傳送,行尾的空格可能會遺失。"
 
-#: builtin/am.c:1250
+#: builtin/am.c:1251
 msgid "Patch is empty."
 msgstr "修補檔為空。"
 
-#: builtin/am.c:1315
+#: builtin/am.c:1316
 #, c-format
 msgid "missing author line in commit %s"
 msgstr "在提交 %s 中缺少作者行"
 
-#: builtin/am.c:1318
+#: builtin/am.c:1319
 #, c-format
 msgid "invalid ident line: %.*s"
 msgstr "無效的身份標記:%.*s"
 
-#: builtin/am.c:1537
+#: builtin/am.c:1538
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr "版本庫缺乏必要的資料物件以進行三方合併。"
 
-#: builtin/am.c:1539
+#: builtin/am.c:1540
 msgid "Using index info to reconstruct a base tree..."
 msgstr "使用索引來重建一個(三方合併的)基礎目錄樹..."
 
-#: builtin/am.c:1558
+#: builtin/am.c:1559
 msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
@@ -10500,24 +10269,24 @@
 "您是否曾手動編輯過您的修補檔?\n"
 "無法套用修補檔到索引中的資料物件上。"
 
-#: builtin/am.c:1564
+#: builtin/am.c:1565
 msgid "Falling back to patching base and 3-way merge..."
 msgstr "回落到基礎版本上修補及進行三方合併..."
 
-#: builtin/am.c:1590
+#: builtin/am.c:1591
 msgid "Failed to merge in the changes."
 msgstr "無法合併變更。"
 
-#: builtin/am.c:1622
+#: builtin/am.c:1623
 msgid "applying to an empty history"
 msgstr "正套用到一個空歷史上"
 
-#: builtin/am.c:1674 builtin/am.c:1678
+#: builtin/am.c:1675 builtin/am.c:1679
 #, c-format
 msgid "cannot resume: %s does not exist."
 msgstr "無法繼續:%s 不存在。"
 
-#: builtin/am.c:1696
+#: builtin/am.c:1697
 msgid "Commit Body is:"
 msgstr "提交內容為:"
 
@@ -10526,39 +10295,39 @@
 #. in your translation. The program will only accept English
 #. input at this point.
 #.
-#: builtin/am.c:1706
+#: builtin/am.c:1707
 #, c-format
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
 msgstr "套用?是[y]/否[n]/編輯[e]/檢視修補檔[v]/全部接受[a]: "
 
-#: builtin/am.c:1752 builtin/commit.c:408
+#: builtin/am.c:1753 builtin/commit.c:408
 msgid "unable to write index file"
 msgstr "無法寫入索引檔案"
 
-#: builtin/am.c:1756
+#: builtin/am.c:1757
 #, c-format
 msgid "Dirty index: cannot apply patches (dirty: %s)"
 msgstr "髒索引:不能套用修補檔(髒檔案:%s)"
 
-#: builtin/am.c:1796 builtin/am.c:1864
+#: builtin/am.c:1797 builtin/am.c:1865
 #, c-format
 msgid "Applying: %.*s"
 msgstr "套用:%.*s"
 
-#: builtin/am.c:1813
+#: builtin/am.c:1814
 msgid "No changes -- Patch already applied."
 msgstr "沒有變更——修補檔已經套用過。"
 
-#: builtin/am.c:1819
+#: builtin/am.c:1820
 #, c-format
 msgid "Patch failed at %s %.*s"
 msgstr "打修補檔失敗於 %s %.*s"
 
-#: builtin/am.c:1823
+#: builtin/am.c:1824
 msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
 msgstr "用 'git am --show-current-patch=diff' 命令檢視失敗的修補檔"
 
-#: builtin/am.c:1867
+#: builtin/am.c:1868
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -10568,7 +10337,7 @@
 "如果沒有什麼要新增到暫存區的,則很可能是其它提交已經引入了相同的變更。\n"
 "您也許想要略過這個修補檔。"
 
-#: builtin/am.c:1874
+#: builtin/am.c:1875
 msgid ""
 "You still have unmerged paths in your index.\n"
 "You should 'git add' each file with resolved conflicts to mark them as "
@@ -10579,106 +10348,106 @@
 "您應該對已經衝突解決的每一個檔案執行 'git add' 來標記已經完成。 \n"
 "你可以對 \"由他們刪除\" 的檔案執行 `git rm` 指令。"
 
-#: builtin/am.c:1981 builtin/am.c:1985 builtin/am.c:1997 builtin/reset.c:347
+#: builtin/am.c:1982 builtin/am.c:1986 builtin/am.c:1998 builtin/reset.c:347
 #: builtin/reset.c:355
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "不能解析物件 '%s'。"
 
-#: builtin/am.c:2033
+#: builtin/am.c:2034
 msgid "failed to clean index"
 msgstr "清空索引失敗"
 
-#: builtin/am.c:2077
+#: builtin/am.c:2078
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr "您好像在上一次 'am' 失敗後移動了 HEAD。未還原至 ORIG_HEAD"
 
-#: builtin/am.c:2184
+#: builtin/am.c:2185
 #, c-format
 msgid "Invalid value for --patch-format: %s"
 msgstr "無效的 --patch-format 值:%s"
 
-#: builtin/am.c:2226
+#: builtin/am.c:2227
 #, c-format
 msgid "Invalid value for --show-current-patch: %s"
 msgstr "無效的 --show-current-patch 值:%s"
 
-#: builtin/am.c:2230
+#: builtin/am.c:2231
 #, c-format
 msgid "--show-current-patch=%s is incompatible with --show-current-patch=%s"
 msgstr "--show-current-patch=%s 與 --show-current-patch=%s 不相容"
 
-#: builtin/am.c:2261
+#: builtin/am.c:2262
 msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
 msgstr "git am [<選項>] [(<mbox> | <Maildir>)...]"
 
-#: builtin/am.c:2262
+#: builtin/am.c:2263
 msgid "git am [<options>] (--continue | --skip | --abort)"
 msgstr "git am [<選項>] (--continue | --skip | --abort)"
 
-#: builtin/am.c:2268
+#: builtin/am.c:2269
 msgid "run interactively"
 msgstr "以互動式方式執行"
 
-#: builtin/am.c:2270
+#: builtin/am.c:2271
 msgid "historical option -- no-op"
 msgstr "老的參數 —— 無作用"
 
-#: builtin/am.c:2272
+#: builtin/am.c:2273
 msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允許使用三方合併"
 
-#: builtin/am.c:2273 builtin/init-db.c:546 builtin/prune-packed.c:16
-#: builtin/repack.c:472 builtin/stash.c:948
+#: builtin/am.c:2274 builtin/init-db.c:547 builtin/prune-packed.c:16
+#: builtin/repack.c:472 builtin/stash.c:945
 msgid "be quiet"
 msgstr "靜默模式"
 
-#: builtin/am.c:2275
+#: builtin/am.c:2276
 msgid "add a Signed-off-by trailer to the commit message"
 msgstr "在提交說明結尾加入 Signed-off-by"
 
-#: builtin/am.c:2278
+#: builtin/am.c:2279
 msgid "recode into utf8 (default)"
 msgstr "使用 utf8 字元集(預設)"
 
-#: builtin/am.c:2280
+#: builtin/am.c:2281
 msgid "pass -k flag to git-mailinfo"
 msgstr "向 git-mailinfo 傳遞 -k 參數"
 
-#: builtin/am.c:2282
+#: builtin/am.c:2283
 msgid "pass -b flag to git-mailinfo"
 msgstr "向 git-mailinfo 傳遞 -b 參數"
 
-#: builtin/am.c:2284
+#: builtin/am.c:2285
 msgid "pass -m flag to git-mailinfo"
 msgstr "向 git-mailinfo 傳遞 -m 參數"
 
-#: builtin/am.c:2286
+#: builtin/am.c:2287
 msgid "pass --keep-cr flag to git-mailsplit for mbox format"
 msgstr "針對 mbox 格式,向 git-mailsplit 傳遞 --keep-cr 參數"
 
-#: builtin/am.c:2289
+#: builtin/am.c:2290
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
 msgstr "不向 git-mailsplit 傳遞 --keep-cr 參數,覆蓋 am.keepcr 的設定"
 
-#: builtin/am.c:2292
+#: builtin/am.c:2293
 msgid "strip everything before a scissors line"
 msgstr "捨棄裁切線前的所有內容"
 
-#: builtin/am.c:2294
+#: builtin/am.c:2295
 msgid "pass it through git-mailinfo"
 msgstr "透過 git-mailinfo 傳遞"
 
-#: builtin/am.c:2297 builtin/am.c:2300 builtin/am.c:2303 builtin/am.c:2306
-#: builtin/am.c:2309 builtin/am.c:2312 builtin/am.c:2315 builtin/am.c:2318
-#: builtin/am.c:2324
+#: builtin/am.c:2298 builtin/am.c:2301 builtin/am.c:2304 builtin/am.c:2307
+#: builtin/am.c:2310 builtin/am.c:2313 builtin/am.c:2316 builtin/am.c:2319
+#: builtin/am.c:2325
 msgid "pass it through git-apply"
 msgstr "傳遞給 git-apply"
 
-#: builtin/am.c:2314 builtin/commit.c:1505 builtin/fmt-merge-msg.c:17
-#: builtin/fmt-merge-msg.c:20 builtin/grep.c:906 builtin/merge.c:261
+#: builtin/am.c:2315 builtin/commit.c:1512 builtin/fmt-merge-msg.c:17
+#: builtin/fmt-merge-msg.c:20 builtin/grep.c:905 builtin/merge.c:261
 #: builtin/pull.c:141 builtin/pull.c:200 builtin/pull.c:217
 #: builtin/rebase.c:1342 builtin/repack.c:483 builtin/repack.c:487
 #: builtin/repack.c:489 builtin/show-branch.c:650 builtin/show-ref.c:172
@@ -10687,67 +10456,67 @@
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2320 builtin/branch.c:672 builtin/bugreport.c:137
+#: builtin/am.c:2321 builtin/branch.c:672 builtin/bugreport.c:137
 #: builtin/for-each-ref.c:40 builtin/replace.c:556 builtin/tag.c:481
 #: builtin/verify-tag.c:38
 msgid "format"
 msgstr "格式"
 
-#: builtin/am.c:2321
+#: builtin/am.c:2322
 msgid "format the patch(es) are in"
 msgstr "修補檔的格式"
 
-#: builtin/am.c:2327
+#: builtin/am.c:2328
 msgid "override error message when patch failure occurs"
 msgstr "打修補檔失敗時顯示的錯誤訊息"
 
-#: builtin/am.c:2329
+#: builtin/am.c:2330
 msgid "continue applying patches after resolving a conflict"
 msgstr "衝突解決後繼續套用修補檔"
 
-#: builtin/am.c:2332
+#: builtin/am.c:2333
 msgid "synonyms for --continue"
 msgstr "和 --continue 同義"
 
-#: builtin/am.c:2335
+#: builtin/am.c:2336
 msgid "skip the current patch"
 msgstr "略過目前修補檔"
 
-#: builtin/am.c:2338
+#: builtin/am.c:2339
 msgid "restore the original branch and abort the patching operation"
 msgstr "還原原始分支並中止修補動作"
 
-#: builtin/am.c:2341
+#: builtin/am.c:2342
 msgid "abort the patching operation but keep HEAD where it is"
-msgstr "終止修補動作但保持 HEAD 不變。"
+msgstr "終止修補動作但保持 HEAD 不變"
 
-#: builtin/am.c:2345
+#: builtin/am.c:2346
 msgid "show the patch being applied"
 msgstr "顯示正在套用的修補檔"
 
-#: builtin/am.c:2350
+#: builtin/am.c:2351
 msgid "lie about committer date"
 msgstr "將作者日期作為提交日期"
 
-#: builtin/am.c:2352
+#: builtin/am.c:2353
 msgid "use current timestamp for author date"
 msgstr "用目前時間作為作者日期"
 
-#: builtin/am.c:2354 builtin/commit-tree.c:120 builtin/commit.c:1630
+#: builtin/am.c:2355 builtin/commit-tree.c:120 builtin/commit.c:1640
 #: builtin/merge.c:298 builtin/pull.c:175 builtin/rebase.c:537
 #: builtin/rebase.c:1395 builtin/revert.c:117 builtin/tag.c:462
 msgid "key-id"
 msgstr "key-id"
 
-#: builtin/am.c:2355 builtin/rebase.c:538 builtin/rebase.c:1396
+#: builtin/am.c:2356 builtin/rebase.c:538 builtin/rebase.c:1396
 msgid "GPG-sign commits"
 msgstr "使用 GPG 簽名提交"
 
-#: builtin/am.c:2358
+#: builtin/am.c:2359
 msgid "(internal use for git-rebase)"
 msgstr "(內部使用,用於 git-rebase)"
 
-#: builtin/am.c:2376
+#: builtin/am.c:2377
 msgid ""
 "The -b/--binary option has been a no-op for long time, and\n"
 "it will be removed. Please do not use it anymore."
@@ -10755,16 +10524,16 @@
 "參數 -b/--binary 已經很長時間不做任何實質動作了,並且將被移除。\n"
 "請不要再使用它了。"
 
-#: builtin/am.c:2383
+#: builtin/am.c:2384
 msgid "failed to read the index"
 msgstr "讀取索引失敗"
 
-#: builtin/am.c:2398
+#: builtin/am.c:2399
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
 msgstr "之前的重定基底目錄 %s 仍然存在,但卻提供了 mbox。"
 
-#: builtin/am.c:2422
+#: builtin/am.c:2423
 #, c-format
 msgid ""
 "Stray %s directory found.\n"
@@ -10773,11 +10542,11 @@
 "發現了錯誤的 %s 目錄。\n"
 "使用 \"git am --abort\" 刪除它。"
 
-#: builtin/am.c:2428
+#: builtin/am.c:2429
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "解決動作未進行,我們不會繼續。"
 
-#: builtin/am.c:2438
+#: builtin/am.c:2439
 msgid "interactive mode requires patches on the command line"
 msgstr "互動式模式需要指令列上提供修補檔"
 
@@ -10870,62 +10639,62 @@
 msgid "could not write to file '%s'"
 msgstr "無法寫入 '%s' 檔案"
 
-#: builtin/bisect--helper.c:153
+#: builtin/bisect--helper.c:155
 #, c-format
 msgid "'%s' is not a valid term"
 msgstr "'%s' 不是一個有效的術語"
 
-#: builtin/bisect--helper.c:157
+#: builtin/bisect--helper.c:159
 #, c-format
 msgid "can't use the builtin command '%s' as a term"
 msgstr "不能使用內建指令 '%s' 作為術語"
 
-#: builtin/bisect--helper.c:167
+#: builtin/bisect--helper.c:169
 #, c-format
 msgid "can't change the meaning of the term '%s'"
 msgstr "不能修改術語 '%s' 的含義"
 
-#: builtin/bisect--helper.c:177
+#: builtin/bisect--helper.c:179
 msgid "please use two different terms"
 msgstr "請使用兩個不同的術語"
 
-#: builtin/bisect--helper.c:193
+#: builtin/bisect--helper.c:195
 #, c-format
 msgid "We are not bisecting.\n"
 msgstr "我們沒有在二分搜尋。\n"
 
-#: builtin/bisect--helper.c:201
+#: builtin/bisect--helper.c:203
 #, c-format
 msgid "'%s' is not a valid commit"
 msgstr "'%s' 不是一個有效的提交"
 
-#: builtin/bisect--helper.c:210
+#: builtin/bisect--helper.c:212
 #, c-format
 msgid ""
 "could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
-msgstr "不能檢出原始 HEAD '%s'。嘗試 'git bisect reset <提交>'。"
+msgstr "不能簽出原始 HEAD '%s'。嘗試 'git bisect reset <提交>'。"
 
-#: builtin/bisect--helper.c:254
+#: builtin/bisect--helper.c:256
 #, c-format
 msgid "Bad bisect_write argument: %s"
 msgstr "壞的 bisect_write 參數:%s"
 
-#: builtin/bisect--helper.c:259
+#: builtin/bisect--helper.c:261
 #, c-format
 msgid "couldn't get the oid of the rev '%s'"
 msgstr "無法取得版本 '%s' 的物件 ID"
 
-#: builtin/bisect--helper.c:271
+#: builtin/bisect--helper.c:273
 #, c-format
 msgid "couldn't open the file '%s'"
 msgstr "無法開啟檔案 '%s'"
 
-#: builtin/bisect--helper.c:297
+#: builtin/bisect--helper.c:299
 #, c-format
 msgid "Invalid command: you're currently in a %s/%s bisect"
 msgstr "無效的指令:您目前正處於一個 %s/%s 二分搜尋中"
 
-#: builtin/bisect--helper.c:324
+#: builtin/bisect--helper.c:326
 #, c-format
 msgid ""
 "You need to give me at least one %s and %s revision.\n"
@@ -10934,7 +10703,7 @@
 "您需要給我至少一個 %s 和一個 %s 版本。\n"
 "為此您可以用 \"git bisect %s\" 和 \"git bisect %s\"。"
 
-#: builtin/bisect--helper.c:328
+#: builtin/bisect--helper.c:330
 #, c-format
 msgid ""
 "You need to start by \"git bisect start\".\n"
@@ -10945,7 +10714,7 @@
 "然後需要提供我至少一個 %s 和一個 %s 版本。\n"
 "為此您可以用 \"git bisect %s\" 和 \"git bisect %s\" 指令。"
 
-#: builtin/bisect--helper.c:348
+#: builtin/bisect--helper.c:350
 #, c-format
 msgid "bisecting only with a %s commit"
 msgstr "在只有一個 %s 提交的情況下二分搜尋"
@@ -10955,22 +10724,22 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:356
+#: builtin/bisect--helper.c:358
 msgid "Are you sure [Y/n]? "
 msgstr "您確認嗎[Y/n]? "
 
-#: builtin/bisect--helper.c:417
+#: builtin/bisect--helper.c:419
 msgid "no terms defined"
 msgstr "未定義術語"
 
-#: builtin/bisect--helper.c:420
+#: builtin/bisect--helper.c:422
 #, c-format
 msgid ""
 "Your current terms are %s for the old state\n"
 "and %s for the new state.\n"
 msgstr "您目前針對舊狀態的術語是 %s,對新狀態的術語是 %s。\n"
 
-#: builtin/bisect--helper.c:430
+#: builtin/bisect--helper.c:432
 #, c-format
 msgid ""
 "invalid argument %s for 'git bisect terms'.\n"
@@ -10979,52 +10748,52 @@
 "指令 'git bisect terms' 的參數 %s 無效。\n"
 "支援的選項有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:497 builtin/bisect--helper.c:1021
+#: builtin/bisect--helper.c:499 builtin/bisect--helper.c:1023
 msgid "revision walk setup failed\n"
 msgstr "版本遍歷設定失敗\n"
 
-#: builtin/bisect--helper.c:519
+#: builtin/bisect--helper.c:521
 #, c-format
 msgid "could not open '%s' for appending"
 msgstr "無法開啟 '%s' 進行附加"
 
-#: builtin/bisect--helper.c:638 builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:640 builtin/bisect--helper.c:653
 msgid "'' is not a valid term"
 msgstr "'' 不是一個有效的術語"
 
-#: builtin/bisect--helper.c:661
+#: builtin/bisect--helper.c:663
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未識別的選項:'%s'"
 
-#: builtin/bisect--helper.c:665
+#: builtin/bisect--helper.c:667
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起來不是一個有效的版本"
 
-#: builtin/bisect--helper.c:696
+#: builtin/bisect--helper.c:698
 msgid "bad HEAD - I need a HEAD"
 msgstr "壞的 HEAD - 我需要一個 HEAD"
 
-#: builtin/bisect--helper.c:711
+#: builtin/bisect--helper.c:713
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
-msgstr "檢出 '%s' 失敗。嘗試 'git bisect start <有效分支>'。"
+msgstr "簽出 '%s' 失敗。嘗試 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:732
+#: builtin/bisect--helper.c:734
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "不會在做了 cg-seek 的樹上做二分搜尋"
 
-#: builtin/bisect--helper.c:735
+#: builtin/bisect--helper.c:737
 msgid "bad HEAD - strange symbolic ref"
 msgstr "壞的 HEAD - 奇怪的符號引用"
 
-#: builtin/bisect--helper.c:755
+#: builtin/bisect--helper.c:757
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "無效的引用:'%s'"
 
-#: builtin/bisect--helper.c:813
+#: builtin/bisect--helper.c:815
 msgid "You need to start by \"git bisect start\"\n"
 msgstr "您需要執行 \"git bisect start\" 來開始\n"
 
@@ -11033,104 +10802,104 @@
 #. translation. The program will only accept English input
 #. at this point.
 #.
-#: builtin/bisect--helper.c:824
+#: builtin/bisect--helper.c:826
 msgid "Do you want me to do it for you [Y/n]? "
 msgstr "您想讓我為您這樣做嗎[Y/n]? "
 
-#: builtin/bisect--helper.c:842
+#: builtin/bisect--helper.c:844
 msgid "Please call `--bisect-state` with at least one argument"
-msgstr "要呼叫 `—bisect-state`,請傳入一個以上的引數"
+msgstr "要呼叫 `--bisect-state`,請傳入一個以上的引數"
 
-#: builtin/bisect--helper.c:855
+#: builtin/bisect--helper.c:857
 #, c-format
 msgid "'git bisect %s' can take only one argument."
 msgstr "'git bisect %s' 只能有一個參數。"
 
-#: builtin/bisect--helper.c:867 builtin/bisect--helper.c:880
+#: builtin/bisect--helper.c:869 builtin/bisect--helper.c:882
 #, c-format
 msgid "Bad rev input: %s"
 msgstr "<修訂版> 輸入格式錯誤:%s"
 
-#: builtin/bisect--helper.c:887
+#: builtin/bisect--helper.c:889
 #, c-format
 msgid "Bad rev input (not a commit): %s"
 msgstr "修訂版輸入有誤(不是提交):%s"
 
-#: builtin/bisect--helper.c:919
+#: builtin/bisect--helper.c:921
 msgid "We are not bisecting."
 msgstr "我們沒有在二分搜尋。"
 
-#: builtin/bisect--helper.c:969
+#: builtin/bisect--helper.c:971
 #, c-format
 msgid "'%s'?? what are you talking about?"
 msgstr "「%s」??您在說什麼?"
 
-#: builtin/bisect--helper.c:981
+#: builtin/bisect--helper.c:983
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr "無法讀取「%s」檔案來重放"
 
-#: builtin/bisect--helper.c:1054
+#: builtin/bisect--helper.c:1056
 msgid "reset the bisection state"
 msgstr "清除二分搜尋狀態"
 
-#: builtin/bisect--helper.c:1056
+#: builtin/bisect--helper.c:1058
 msgid "check whether bad or good terms exist"
 msgstr "檢查壞的或好的術語是否存在"
 
-#: builtin/bisect--helper.c:1058
+#: builtin/bisect--helper.c:1060
 msgid "print out the bisect terms"
 msgstr "列印二分搜尋術語"
 
-#: builtin/bisect--helper.c:1060
+#: builtin/bisect--helper.c:1062
 msgid "start the bisect session"
 msgstr "啟動二分搜尋過程"
 
-#: builtin/bisect--helper.c:1062
+#: builtin/bisect--helper.c:1064
 msgid "find the next bisection commit"
 msgstr "尋找下一個二分搜尋提交"
 
-#: builtin/bisect--helper.c:1064
+#: builtin/bisect--helper.c:1066
 msgid "mark the state of ref (or refs)"
 msgstr "標記 ref (或 refs) 的狀態"
 
-#: builtin/bisect--helper.c:1066
+#: builtin/bisect--helper.c:1068
 msgid "list the bisection steps so far"
 msgstr "列出迄今的二分搜尋步驟"
 
-#: builtin/bisect--helper.c:1068
+#: builtin/bisect--helper.c:1070
 msgid "replay the bisection process from the given file"
 msgstr "從指定檔案重放二分搜尋過程"
 
-#: builtin/bisect--helper.c:1070
-msgid "skip some commits for checkout"
-msgstr "略過要檢出的部分提交"
-
 #: builtin/bisect--helper.c:1072
+msgid "skip some commits for checkout"
+msgstr "略過要簽出的部分提交"
+
+#: builtin/bisect--helper.c:1074
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 無日誌"
 
-#: builtin/bisect--helper.c:1087
+#: builtin/bisect--helper.c:1089
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 無需參數或者需要一個提交"
 
-#: builtin/bisect--helper.c:1092
+#: builtin/bisect--helper.c:1094
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 個參數"
 
-#: builtin/bisect--helper.c:1098
+#: builtin/bisect--helper.c:1100
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 個參數"
 
-#: builtin/bisect--helper.c:1107
+#: builtin/bisect--helper.c:1109
 msgid "--bisect-next requires 0 arguments"
 msgstr "--bisect-next 需要 0 個引數"
 
-#: builtin/bisect--helper.c:1118
+#: builtin/bisect--helper.c:1120
 msgid "--bisect-log requires 0 arguments"
 msgstr "--bisect-log 需要 0 個引數"
 
-#: builtin/bisect--helper.c:1123
+#: builtin/bisect--helper.c:1125
 msgid "no logfile given"
 msgstr "未提供日誌檔案"
 
@@ -11181,10 +10950,10 @@
 msgid "show work cost statistics"
 msgstr "顯示工作量統計"
 
-#: builtin/blame.c:871 builtin/checkout.c:1524 builtin/clone.c:94
+#: builtin/blame.c:871 builtin/checkout.c:1519 builtin/clone.c:94
 #: builtin/commit-graph.c:84 builtin/commit-graph.c:222 builtin/fetch.c:179
 #: builtin/merge.c:297 builtin/multi-pack-index.c:55 builtin/pull.c:119
-#: builtin/push.c:575 builtin/send-pack.c:198
+#: builtin/push.c:566 builtin/send-pack.c:198
 msgid "force progress reporting"
 msgstr "強制顯示進度報告"
 
@@ -11232,7 +11001,7 @@
 msgid "ignore whitespace differences"
 msgstr "忽略空白差異"
 
-#: builtin/blame.c:883 builtin/log.c:1820
+#: builtin/blame.c:883 builtin/log.c:1823
 msgid "rev"
 msgstr "版本"
 
@@ -11286,7 +11055,7 @@
 
 #: builtin/blame.c:945
 msgid "--progress can't be used with --incremental or porcelain formats"
-msgstr "--progress 不能和 --incremental 或 --porcelain 同時使用"
+msgstr "--progress 不能跟 --incremental 或 porcelain 格式同時使用"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -11387,7 +11156,7 @@
 #: builtin/branch.c:244
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
-msgstr "無法刪除在「%2$s」檢出的「%1$s」分支"
+msgstr "無法刪除在「%2$s」簽出的「%1$s」分支"
 
 #: builtin/branch.c:259
 #, c-format
@@ -11815,19 +11584,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <檔案> [<參考名稱>...]"
 
-#: builtin/bundle.c:67 builtin/pack-objects.c:3747
+#: builtin/bundle.c:67 builtin/pack-objects.c:3907
 msgid "do not show progress meter"
 msgstr "不顯示進度表"
 
-#: builtin/bundle.c:69 builtin/pack-objects.c:3749
+#: builtin/bundle.c:69 builtin/pack-objects.c:3909
 msgid "show progress meter"
 msgstr "顯示進度表"
 
-#: builtin/bundle.c:71 builtin/pack-objects.c:3751
+#: builtin/bundle.c:71 builtin/pack-objects.c:3911
 msgid "show progress meter during object writing phase"
 msgstr "在物件寫入階段顯示進度表"
 
-#: builtin/bundle.c:74 builtin/pack-objects.c:3754
+#: builtin/bundle.c:74 builtin/pack-objects.c:3914
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "當進度表顯示時類似於 --all-progress"
 
@@ -11839,29 +11608,29 @@
 msgid "Need a repository to create a bundle."
 msgstr "需要一個版本庫來建立包。"
 
-#: builtin/bundle.c:107
+#: builtin/bundle.c:109
 msgid "do not show bundle details"
 msgstr "不顯示包 (bundle) 詳細資訊"
 
-#: builtin/bundle.c:122
+#: builtin/bundle.c:128
 #, c-format
 msgid "%s is okay\n"
 msgstr "%s 可以\n"
 
-#: builtin/bundle.c:163
+#: builtin/bundle.c:179
 msgid "Need a repository to unbundle."
 msgstr "需要一個版本庫來解包。"
 
-#: builtin/bundle.c:171 builtin/remote.c:1700
+#: builtin/bundle.c:191 builtin/remote.c:1700
 msgid "be verbose; must be placed before a subcommand"
 msgstr "詳細輸出;必須置於子指令之前"
 
-#: builtin/bundle.c:193 builtin/remote.c:1731
+#: builtin/bundle.c:213 builtin/remote.c:1731
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "未知子指令:%s"
 
-#: builtin/cat-file.c:598
+#: builtin/cat-file.c:596
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -11869,7 +11638,7 @@
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <類型> | --textconv | --filters) [--path=<路徑>] <物件>"
 
-#: builtin/cat-file.c:599
+#: builtin/cat-file.c:597
 msgid ""
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
@@ -11877,71 +11646,71 @@
 "git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
 "symlinks] [--textconv | --filters]"
 
-#: builtin/cat-file.c:620
+#: builtin/cat-file.c:618
 msgid "only one batch option may be specified"
 msgstr "只能指定一個批次處理選項"
 
-#: builtin/cat-file.c:638
+#: builtin/cat-file.c:636
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<類型> 可以是其中之一:blob、tree、commit、tag"
 
-#: builtin/cat-file.c:639
+#: builtin/cat-file.c:637
 msgid "show object type"
 msgstr "顯示物件類型"
 
-#: builtin/cat-file.c:640
+#: builtin/cat-file.c:638
 msgid "show object size"
 msgstr "顯示物件大小"
 
-#: builtin/cat-file.c:642
+#: builtin/cat-file.c:640
 msgid "exit with zero when there's no error"
 msgstr "當沒有錯誤時離開並返回零"
 
-#: builtin/cat-file.c:643
+#: builtin/cat-file.c:641
 msgid "pretty-print object's content"
 msgstr "美觀地列印物件的內容"
 
-#: builtin/cat-file.c:645
+#: builtin/cat-file.c:643
 msgid "for blob objects, run textconv on object's content"
 msgstr "對於資料物件,對其內容做文字轉換"
 
-#: builtin/cat-file.c:647
+#: builtin/cat-file.c:645
 msgid "for blob objects, run filters on object's content"
 msgstr "對於資料物件,對其內容做過濾"
 
-#: builtin/cat-file.c:648
+#: builtin/cat-file.c:646
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:649
+#: builtin/cat-file.c:647
 msgid "use a specific path for --textconv/--filters"
 msgstr "對於 --textconv/--filters 使用一個特定的路徑"
 
-#: builtin/cat-file.c:651
+#: builtin/cat-file.c:649
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "允許 -s 和 -t 對損壞的物件生效"
 
-#: builtin/cat-file.c:652
+#: builtin/cat-file.c:650
 msgid "buffer --batch output"
 msgstr "緩衝 --batch 的輸出"
 
-#: builtin/cat-file.c:654
+#: builtin/cat-file.c:652
 msgid "show info and content of objects fed from the standard input"
 msgstr "顯示從標準輸入提供的物件的訊息和內容"
 
-#: builtin/cat-file.c:658
+#: builtin/cat-file.c:656
 msgid "show info about objects fed from the standard input"
 msgstr "顯示從標準輸入提供的物件的訊息"
 
-#: builtin/cat-file.c:662
+#: builtin/cat-file.c:660
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "跟隨樹內符號連結(和 --batch 或 --batch-check 共用)"
 
-#: builtin/cat-file.c:664
+#: builtin/cat-file.c:662
 msgid "show all objects with --batch or --batch-check"
 msgstr "使用 --batch 或 --batch-check 參數顯示所有物件"
 
-#: builtin/cat-file.c:666
+#: builtin/cat-file.c:664
 msgid "do not order --batch-all-objects output"
 msgstr "不要對 --batch-all-objects 的輸出排序"
 
@@ -11969,8 +11738,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "輸入和輸出的紀錄使用 NUL 字元終結"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1520 builtin/gc.c:549
-#: builtin/worktree.c:491
+#: builtin/check-ignore.c:21 builtin/checkout.c:1515 builtin/gc.c:549
+#: builtin/worktree.c:493
 msgid "suppress progress reporting"
 msgstr "不顯示進度報告"
 
@@ -12024,14 +11793,15 @@
 msgstr "未指定聯繫位址"
 
 #: builtin/checkout--worker.c:110
-#| msgid "git checkout [<options>] <branch>"
 msgid "git checkout--worker [<options>]"
 msgstr "git checkout--worker [<選項>]"
 
 #: builtin/checkout--worker.c:118 builtin/checkout-index.c:201
-#: builtin/column.c:31 builtin/submodule--helper.c:1825
-#: builtin/submodule--helper.c:1828 builtin/submodule--helper.c:1836
-#: builtin/submodule--helper.c:2334 builtin/worktree.c:719
+#: builtin/column.c:31 builtin/submodule--helper.c:1892
+#: builtin/submodule--helper.c:1895 builtin/submodule--helper.c:1903
+#: builtin/submodule--helper.c:2350 builtin/submodule--helper.c:2896
+#: builtin/submodule--helper.c:2899 builtin/worktree.c:491
+#: builtin/worktree.c:728
 msgid "string"
 msgstr "字串"
 
@@ -12049,7 +11819,7 @@
 
 #: builtin/checkout-index.c:187
 msgid "check out all files in the index"
-msgstr "檢出索引區的所有檔案"
+msgstr "簽出索引區的所有檔案"
 
 #: builtin/checkout-index.c:188
 msgid "force overwrite of existing files"
@@ -12061,7 +11831,7 @@
 
 #: builtin/checkout-index.c:192
 msgid "don't checkout new files"
-msgstr "不檢出新檔案"
+msgstr "不簽出新檔案"
 
 #: builtin/checkout-index.c:194
 msgid "update stat information in the index file"
@@ -12125,65 +11895,65 @@
 msgid "Unable to add merge result for '%s'"
 msgstr "無法為 '%s' 新增合併結果"
 
-#: builtin/checkout.c:414
+#: builtin/checkout.c:411
 #, c-format
 msgid "Recreated %d merge conflict"
 msgid_plural "Recreated %d merge conflicts"
 msgstr[0] "重新建立了 %d 個合併衝突"
 
-#: builtin/checkout.c:419
+#: builtin/checkout.c:416
 #, c-format
 msgid "Updated %d path from %s"
 msgid_plural "Updated %d paths from %s"
 msgstr[0] "從 %2$s 更新了 %1$d 個路徑"
 
-#: builtin/checkout.c:426
+#: builtin/checkout.c:423
 #, c-format
 msgid "Updated %d path from the index"
 msgid_plural "Updated %d paths from the index"
 msgstr[0] "從索引區更新了 %d 個路徑"
 
-#: builtin/checkout.c:449 builtin/checkout.c:452 builtin/checkout.c:455
-#: builtin/checkout.c:459
+#: builtin/checkout.c:446 builtin/checkout.c:449 builtin/checkout.c:452
+#: builtin/checkout.c:456
 #, c-format
 msgid "'%s' cannot be used with updating paths"
 msgstr "'%s' 不能在更新路徑時使用"
 
-#: builtin/checkout.c:462 builtin/checkout.c:465
+#: builtin/checkout.c:459 builtin/checkout.c:462
 #, c-format
 msgid "'%s' cannot be used with %s"
 msgstr "'%s' 不能和 %s 同時使用"
 
-#: builtin/checkout.c:469
+#: builtin/checkout.c:466
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
 msgstr "不能同時更新路徑並切換到分支'%s'。"
 
-#: builtin/checkout.c:473
+#: builtin/checkout.c:470
 #, c-format
 msgid "neither '%s' or '%s' is specified"
 msgstr "'%s' 或 '%s' 都沒有指定"
 
-#: builtin/checkout.c:477
+#: builtin/checkout.c:474
 #, c-format
 msgid "'%s' must be used when '%s' is not specified"
 msgstr "未指定 '%2$s' 時,必須使用 '%1$s'"
 
-#: builtin/checkout.c:482 builtin/checkout.c:487
+#: builtin/checkout.c:479 builtin/checkout.c:484
 #, c-format
 msgid "'%s' or '%s' cannot be used with %s"
 msgstr "'%s' 或 '%s' 不能和 %s 一起使用"
 
-#: builtin/checkout.c:563 builtin/checkout.c:570
+#: builtin/checkout.c:558 builtin/checkout.c:565
 #, c-format
 msgid "path '%s' is unmerged"
 msgstr "路徑 '%s' 未合併"
 
-#: builtin/checkout.c:739
+#: builtin/checkout.c:734
 msgid "you need to resolve your current index first"
 msgstr "您需要先解決目前索引的衝突"
 
-#: builtin/checkout.c:793
+#: builtin/checkout.c:788
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -12192,51 +11962,51 @@
 "不能繼續,下列檔案有暫存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:886
+#: builtin/checkout.c:881
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能對 '%s' 執行 reflog 動作:%s\n"
 
-#: builtin/checkout.c:928
+#: builtin/checkout.c:923
 msgid "HEAD is now at"
 msgstr "HEAD 目前位於"
 
-#: builtin/checkout.c:932 builtin/clone.c:725 t/helper/test-fast-rebase.c:202
+#: builtin/checkout.c:927 builtin/clone.c:725 t/helper/test-fast-rebase.c:203
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:936
+#: builtin/checkout.c:931
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重設分支 '%s'\n"
 
-#: builtin/checkout.c:939
+#: builtin/checkout.c:934
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已經位於 '%s'\n"
 
-#: builtin/checkout.c:943
+#: builtin/checkout.c:938
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切換並重設分支 '%s'\n"
 
-#: builtin/checkout.c:945 builtin/checkout.c:1376
+#: builtin/checkout.c:940 builtin/checkout.c:1371
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切換到一個新分支 '%s'\n"
 
-#: builtin/checkout.c:947
+#: builtin/checkout.c:942
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切換到分支 '%s'\n"
 
 #  譯者:請維持前導空格
-#: builtin/checkout.c:998
+#: builtin/checkout.c:993
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 個。\n"
 
-#: builtin/checkout.c:1004
+#: builtin/checkout.c:999
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -12253,7 +12023,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1018
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -12274,19 +12044,19 @@
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1053
 msgid "internal error in revision walk"
 msgstr "在版本遍歷時遇到內部錯誤"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1057
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1102 builtin/checkout.c:1371
+#: builtin/checkout.c:1097 builtin/checkout.c:1366
 msgid "You are on a branch yet to be born"
 msgstr "您位於一個尚未初始化的分支"
 
-#: builtin/checkout.c:1184
+#: builtin/checkout.c:1179
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -12295,7 +12065,7 @@
 "'%s' 既可以是一個本機檔案,也可以是一個追蹤分支。\n"
 "請使用 --(和可選的 --no-guess)來消除歧義"
 
-#: builtin/checkout.c:1191
+#: builtin/checkout.c:1186
 msgid ""
 "If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
 "you can do so by fully qualifying the name with the --track option:\n"
@@ -12306,7 +12076,7 @@
 "one remote, e.g. the 'origin' remote, consider setting\n"
 "checkout.defaultRemote=origin in your config."
 msgstr ""
-"如果您想要檢出一個遠端追蹤分支,例如 'origin',您可以\n"
+"如果您想要簽出一個遠端追蹤分支,例如 'origin',您可以\n"
 "使用 --track 選項寫出全名:\n"
 "\n"
 "    git checkout --track origin/<name>\n"
@@ -12314,51 +12084,51 @@
 "如果您總是喜歡使用模糊的簡短分支名 <name>,而不喜歡如 'origin' 的遠端\n"
 "版本庫名,可以在設定中設定 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1201
+#: builtin/checkout.c:1196
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 符合多個 (%d) 遠端追蹤分支"
 
-#: builtin/checkout.c:1267
+#: builtin/checkout.c:1262
 msgid "only one reference expected"
 msgstr "預期只有一個引用"
 
-#: builtin/checkout.c:1284
+#: builtin/checkout.c:1279
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "應只有一個引用,卻提供了 %d 個。"
 
-#: builtin/checkout.c:1330 builtin/worktree.c:270 builtin/worktree.c:438
+#: builtin/checkout.c:1325 builtin/worktree.c:268 builtin/worktree.c:436
 #, c-format
 msgid "invalid reference: %s"
 msgstr "無效引用:%s"
 
-#: builtin/checkout.c:1343 builtin/checkout.c:1709
+#: builtin/checkout.c:1338 builtin/checkout.c:1707
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一個樹:%s"
 
-#: builtin/checkout.c:1390
+#: builtin/checkout.c:1385
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一個分支,得到標籤 '%s'"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1387
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一個分支,得到遠端分支 '%s'"
 
-#: builtin/checkout.c:1393 builtin/checkout.c:1401
+#: builtin/checkout.c:1388 builtin/checkout.c:1396
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一個分支,得到 '%s'"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1391
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一個分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1412
+#: builtin/checkout.c:1407
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -12366,7 +12136,7 @@
 "不能在合併時切換分支\n"
 "考慮使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1416
+#: builtin/checkout.c:1411
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -12374,7 +12144,7 @@
 "不能在 am 工作階段期間切換分支\n"
 "考慮使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1420
+#: builtin/checkout.c:1415
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -12382,7 +12152,7 @@
 "不能在重定基底時切換分支\n"
 "考慮使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1424
+#: builtin/checkout.c:1419
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -12390,7 +12160,7 @@
 "不能在揀選時切換分支\n"
 "考慮使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1428
+#: builtin/checkout.c:1423
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -12398,207 +12168,208 @@
 "不能在還原時切換分支\n"
 "考慮使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1432
+#: builtin/checkout.c:1427
 msgid "you are switching branch while bisecting"
 msgstr "您在執行二分搜尋時切換分支"
 
-#: builtin/checkout.c:1439
+#: builtin/checkout.c:1434
 msgid "paths cannot be used with switching branches"
 msgstr "路徑不能和切換分支同時使用"
 
-#: builtin/checkout.c:1442 builtin/checkout.c:1446 builtin/checkout.c:1450
+#: builtin/checkout.c:1437 builtin/checkout.c:1441 builtin/checkout.c:1445
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切換分支同時使用"
 
-#: builtin/checkout.c:1454 builtin/checkout.c:1457 builtin/checkout.c:1460
-#: builtin/checkout.c:1465 builtin/checkout.c:1470
+#: builtin/checkout.c:1449 builtin/checkout.c:1452 builtin/checkout.c:1455
+#: builtin/checkout.c:1460 builtin/checkout.c:1465
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同時使用"
 
-#: builtin/checkout.c:1467
+#: builtin/checkout.c:1462
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不帶 <起始點>"
 
-#: builtin/checkout.c:1475
+#: builtin/checkout.c:1470
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切換分支到一個非提交 '%s'"
 
-#: builtin/checkout.c:1482
+#: builtin/checkout.c:1477
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交參數"
 
-#: builtin/checkout.c:1525
+#: builtin/checkout.c:1520
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支執行三方合併"
 
-#: builtin/checkout.c:1526 builtin/log.c:1807 parse-options.h:323
+#: builtin/checkout.c:1521 builtin/log.c:1810 parse-options.h:323
 msgid "style"
 msgstr "風格"
 
-#: builtin/checkout.c:1527
+#: builtin/checkout.c:1522
 msgid "conflict style (merge or diff3)"
 msgstr "衝突輸出風格(merge 或 diff3)"
 
-#: builtin/checkout.c:1539 builtin/worktree.c:488
+#: builtin/checkout.c:1534 builtin/worktree.c:488
 msgid "detach HEAD at named commit"
 msgstr "HEAD 從指定的提交分離"
 
-#: builtin/checkout.c:1540
+#: builtin/checkout.c:1535
 msgid "set upstream info for new branch"
 msgstr "為新的分支設定上游訊息"
 
-#: builtin/checkout.c:1542
+#: builtin/checkout.c:1537
 msgid "force checkout (throw away local modifications)"
-msgstr "強制檢出(捨棄本機修改)"
+msgstr "強制簽出(捨棄本機修改)"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1544
+#: builtin/checkout.c:1539
 msgid "new unparented branch"
 msgstr "新的沒有父提交的分支"
 
-#: builtin/checkout.c:1546 builtin/merge.c:301
+#: builtin/checkout.c:1541 builtin/merge.c:301
 msgid "update ignored files (default)"
 msgstr "更新忽略的檔案(預設)"
 
-#: builtin/checkout.c:1549
+#: builtin/checkout.c:1544
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不檢查指定的引用是否被其他工作區所占用"
 
-#: builtin/checkout.c:1562
+#: builtin/checkout.c:1557
 msgid "checkout our version for unmerged files"
-msgstr "對尚未合併的檔案檢出我們的版本"
+msgstr "對尚未合併的檔案簽出我們的版本"
 
-#: builtin/checkout.c:1565
+#: builtin/checkout.c:1560
 msgid "checkout their version for unmerged files"
-msgstr "對尚未合併的檔案檢出他們的版本"
+msgstr "對尚未合併的檔案簽出他們的版本"
 
-#: builtin/checkout.c:1569
+#: builtin/checkout.c:1564
 msgid "do not limit pathspecs to sparse entries only"
-msgstr "對路徑不做稀疏檢出的限制"
+msgstr "對路徑不做稀疏簽出的限制"
 
-#: builtin/checkout.c:1624
+#: builtin/checkout.c:1622
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1628
+#: builtin/checkout.c:1626
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1665
+#: builtin/checkout.c:1663
 msgid "--track needs a branch name"
 msgstr "--track 需要一個分支名"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名稱,請嘗試 -%c"
 
-#: builtin/checkout.c:1702
+#: builtin/checkout.c:1700
 #, c-format
 msgid "could not resolve %s"
 msgstr "無法解析 %s"
 
-#: builtin/checkout.c:1718
+#: builtin/checkout.c:1716
 msgid "invalid path specification"
 msgstr "無效的路徑規格"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一個提交,不能基於它建立分支 '%s'"
 
-#: builtin/checkout.c:1729
+#: builtin/checkout.c:1727
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路徑參數 '%s'"
 
-#: builtin/checkout.c:1738
+#: builtin/checkout.c:1736
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 與 --detach 不相容"
 
-#: builtin/checkout.c:1741 builtin/reset.c:325 builtin/stash.c:1634
+#: builtin/checkout.c:1739 builtin/reset.c:325 builtin/stash.c:1630
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 與 --patch 不相容"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
-"git checkout:在從索引檢出時,--ours/--theirs、--force 和 --merge 不相容。"
+"git checkout:在從索引簽出時,--ours/--theirs、--force 和 --merge 不相容。"
 
-#: builtin/checkout.c:1759
+#: builtin/checkout.c:1757
 msgid "you must specify path(s) to restore"
 msgstr "您必須指定一個要復原的路徑"
 
-#: builtin/checkout.c:1785 builtin/checkout.c:1787 builtin/checkout.c:1836
-#: builtin/checkout.c:1838 builtin/clone.c:126 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/submodule--helper.c:2720 builtin/worktree.c:484
+#: builtin/checkout.c:1783 builtin/checkout.c:1785 builtin/checkout.c:1834
+#: builtin/checkout.c:1836 builtin/clone.c:126 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2887 builtin/worktree.c:484
 #: builtin/worktree.c:486
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1786
+#: builtin/checkout.c:1784
 msgid "create and checkout a new branch"
-msgstr "建立並檢出一個新的分支"
+msgstr "建立並簽出一個新的分支"
 
-#: builtin/checkout.c:1788
+#: builtin/checkout.c:1786
 msgid "create/reset and checkout a branch"
-msgstr "建立/重設並檢出一個分支"
+msgstr "建立/重設並簽出一個分支"
 
-#: builtin/checkout.c:1789
+#: builtin/checkout.c:1787
 msgid "create reflog for new branch"
 msgstr "為新的分支建立引用日誌"
 
-#: builtin/checkout.c:1791
+#: builtin/checkout.c:1789
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜測 'git checkout <無此分支>'(預設)"
 
-#: builtin/checkout.c:1792
+#: builtin/checkout.c:1790
 msgid "use overlay mode (default)"
 msgstr "使用疊加模式(預設)"
 
-#: builtin/checkout.c:1837
+#: builtin/checkout.c:1835
 msgid "create and switch to a new branch"
 msgstr "建立並切換一個新分支"
 
-#: builtin/checkout.c:1839
+#: builtin/checkout.c:1837
 msgid "create/reset and switch to a branch"
 msgstr "建立/重設並切換一個分支"
 
-#: builtin/checkout.c:1841
+#: builtin/checkout.c:1839
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜測 'git switch <無此分支>'"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "throw away local modifications"
 msgstr "捨棄本機修改"
 
-#: builtin/checkout.c:1877
+#: builtin/checkout.c:1875
 msgid "which tree-ish to checkout from"
-msgstr "要檢出哪一個樹"
+msgstr "要簽出哪一個樹"
 
-#: builtin/checkout.c:1879
+#: builtin/checkout.c:1877
 msgid "restore the index"
 msgstr "復原索引"
 
-#: builtin/checkout.c:1881
+#: builtin/checkout.c:1879
 msgid "restore the working tree (default)"
 msgstr "復原工作區(預設)"
 
-#: builtin/checkout.c:1883
+#: builtin/checkout.c:1881
 msgid "ignore unmerged entries"
 msgstr "忽略未合併條目"
 
-#: builtin/checkout.c:1884
+#: builtin/checkout.c:1882
 msgid "use overlay mode"
 msgstr "使用疊加模式"
 
@@ -12633,7 +12404,7 @@
 msgid "could not lstat %s\n"
 msgstr "不能對 %s 呼叫 lstat\n"
 
-#: builtin/clean.c:302 git-add--interactive.perl:593
+#: builtin/clean.c:300 git-add--interactive.perl:593
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12646,7 +12417,7 @@
 "foo        - 透過唯一前綴選擇一個選項\n"
 "           - (空)什麼也不選擇\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:602
+#: builtin/clean.c:304 git-add--interactive.perl:602
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -12667,33 +12438,33 @@
 "*          - 選擇所有選項\n"
 "           - (空)結束選擇\n"
 
-#: builtin/clean.c:521 git-add--interactive.perl:568
+#: builtin/clean.c:519 git-add--interactive.perl:568
 #: git-add--interactive.perl:573
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "嗯(%s)?\n"
 
-#: builtin/clean.c:661
+#: builtin/clean.c:659
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "輸入範本以排除條目>> "
 
-#: builtin/clean.c:696
+#: builtin/clean.c:693
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "警告:無法找到和 %s 符合的條目"
 
-#: builtin/clean.c:717
+#: builtin/clean.c:714
 msgid "Select items to delete"
 msgstr "選擇要刪除的條目"
 
 #. TRANSLATORS: Make sure to keep [y/N] as is
-#: builtin/clean.c:758
+#: builtin/clean.c:755
 #, c-format
 msgid "Remove %s [y/N]? "
 msgstr "移除 %s [y/N]? "
 
-#: builtin/clean.c:789
+#: builtin/clean.c:786
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -12711,65 +12482,65 @@
 "help                - 顯示本協助\n"
 "?                   - 顯示如何在提示符下選擇的協助"
 
-#: builtin/clean.c:825
+#: builtin/clean.c:822
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "將刪除如下條目:"
 
-#: builtin/clean.c:841
+#: builtin/clean.c:838
 msgid "No more files to clean, exiting."
 msgstr "沒有要清理的檔案,離開。"
 
-#: builtin/clean.c:903
+#: builtin/clean.c:900
 msgid "do not print names of files removed"
 msgstr "不列印刪除檔案的名稱"
 
-#: builtin/clean.c:905
+#: builtin/clean.c:902
 msgid "force"
 msgstr "強制"
 
-#: builtin/clean.c:906
+#: builtin/clean.c:903
 msgid "interactive cleaning"
 msgstr "互動式清除"
 
-#: builtin/clean.c:908
+#: builtin/clean.c:905
 msgid "remove whole directories"
 msgstr "刪除整個目錄"
 
-#: builtin/clean.c:909 builtin/describe.c:565 builtin/describe.c:567
-#: builtin/grep.c:924 builtin/log.c:184 builtin/log.c:186
+#: builtin/clean.c:906 builtin/describe.c:565 builtin/describe.c:567
+#: builtin/grep.c:923 builtin/log.c:184 builtin/log.c:186
 #: builtin/ls-files.c:650 builtin/name-rev.c:526 builtin/name-rev.c:528
 #: builtin/show-ref.c:179
 msgid "pattern"
 msgstr "模式"
 
-#: builtin/clean.c:910
+#: builtin/clean.c:907
 msgid "add <pattern> to ignore rules"
 msgstr "新增 <模式> 到忽略規則"
 
-#: builtin/clean.c:911
+#: builtin/clean.c:908
 msgid "remove ignored files, too"
 msgstr "也刪除忽略的檔案"
 
-#: builtin/clean.c:913
+#: builtin/clean.c:910
 msgid "remove only ignored files"
 msgstr "只刪除忽略的檔案"
 
-#: builtin/clean.c:929
+#: builtin/clean.c:925
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
 msgstr ""
 "clean.requireForce 設定為 true 且未提供 -i、-n 或 -f 選項,拒絕執行清理動作"
 
-#: builtin/clean.c:932
+#: builtin/clean.c:928
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr ""
 "clean.requireForce 預設為 true 且未提供 -i、-n 或 -f 選項,拒絕執行清理動作"
 
-#: builtin/clean.c:944
+#: builtin/clean.c:940
 msgid "-x and -X cannot be used together"
 msgstr "-x 和 -X 不能同時使用"
 
@@ -12783,9 +12554,9 @@
 
 #: builtin/clone.c:98
 msgid "don't create a checkout"
-msgstr "不建立一個檢出"
+msgstr "不建立一個簽出"
 
-#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:541
+#: builtin/clone.c:99 builtin/clone.c:101 builtin/init-db.c:542
 msgid "create a bare repository"
 msgstr "建立一個純版本庫"
 
@@ -12815,28 +12586,28 @@
 
 #: builtin/clone.c:115
 msgid "number of submodules cloned in parallel"
-msgstr "並發複製的子模組的數量"
+msgstr "並行複製的子模組數"
 
-#: builtin/clone.c:116 builtin/init-db.c:538
+#: builtin/clone.c:116 builtin/init-db.c:539
 msgid "template-directory"
 msgstr "範本目錄"
 
-#: builtin/clone.c:117 builtin/init-db.c:539
+#: builtin/clone.c:117 builtin/init-db.c:540
 msgid "directory from which templates will be used"
 msgstr "範本目錄將被使用"
 
-#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1832
-#: builtin/submodule--helper.c:2337
+#: builtin/clone.c:119 builtin/clone.c:121 builtin/submodule--helper.c:1899
+#: builtin/submodule--helper.c:2353 builtin/submodule--helper.c:2903
 msgid "reference repository"
 msgstr "參考版本庫"
 
-#: builtin/clone.c:123 builtin/submodule--helper.c:1834
-#: builtin/submodule--helper.c:2339
+#: builtin/clone.c:123 builtin/submodule--helper.c:1901
+#: builtin/submodule--helper.c:2355 builtin/submodule--helper.c:2905
 msgid "use --reference only while cloning"
 msgstr "僅在複製時參考 --reference 指向的本機版本庫"
 
-#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:549
-#: builtin/merge-file.c:46 builtin/pack-objects.c:3815 builtin/repack.c:495
+#: builtin/clone.c:124 builtin/column.c:27 builtin/init-db.c:550
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3975 builtin/repack.c:495
 #: t/helper/test-simple-ipc.c:696 t/helper/test-simple-ipc.c:698
 msgid "name"
 msgstr "名稱"
@@ -12847,13 +12618,13 @@
 
 #: builtin/clone.c:127
 msgid "checkout <branch> instead of the remote's HEAD"
-msgstr "檢出 <分支> 而不是遠端 HEAD"
+msgstr "簽出 <分支> 而不是遠端 HEAD"
 
 #: builtin/clone.c:129
 msgid "path to git-upload-pack on the remote"
 msgstr "遠端 git-upload-pack 路徑"
 
-#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:863
+#: builtin/clone.c:130 builtin/fetch.c:180 builtin/grep.c:862
 #: builtin/pull.c:208
 msgid "depth"
 msgstr "深度"
@@ -12862,14 +12633,14 @@
 msgid "create a shallow clone of that depth"
 msgstr "建立一個指定深度的淺複製"
 
-#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3804
+#: builtin/clone.c:132 builtin/fetch.c:182 builtin/pack-objects.c:3964
 #: builtin/pull.c:211
 msgid "time"
 msgstr "時間"
 
 #: builtin/clone.c:133
 msgid "create a shallow clone since a specific time"
-msgstr "從一個特定時間建立一個淺複製"
+msgstr "建立從指定時間到現在的淺複製"
 
 #: builtin/clone.c:134 builtin/fetch.c:184 builtin/fetch.c:207
 #: builtin/pull.c:214 builtin/pull.c:239 builtin/rebase.c:1318
@@ -12878,26 +12649,26 @@
 
 #: builtin/clone.c:135 builtin/fetch.c:185 builtin/pull.c:215
 msgid "deepen history of shallow clone, excluding rev"
-msgstr "深化淺複製的歷史,除了特定版本"
+msgstr "取得更多淺複製的過去歷史記錄,除了特定版本"
 
-#: builtin/clone.c:137 builtin/submodule--helper.c:1844
-#: builtin/submodule--helper.c:2353
+#: builtin/clone.c:137 builtin/submodule--helper.c:1911
+#: builtin/submodule--helper.c:2369
 msgid "clone only one branch, HEAD or --branch"
 msgstr "只複製一個分支、HEAD 或 --branch"
 
 #: builtin/clone.c:139
 msgid "don't clone any tags, and make later fetches not to follow them"
-msgstr "不要複製任何標籤,並且後續取得動作也不下載它們"
+msgstr "不要複製任何標籤,之後取得也不要追蹤這些標籤"
 
 #: builtin/clone.c:141
 msgid "any cloned submodules will be shallow"
 msgstr "子模組將以淺下載模式複製"
 
-#: builtin/clone.c:142 builtin/init-db.c:547
+#: builtin/clone.c:142 builtin/init-db.c:548
 msgid "gitdir"
 msgstr "git目錄"
 
-#: builtin/clone.c:143 builtin/init-db.c:548
+#: builtin/clone.c:143 builtin/init-db.c:549
 msgid "separate git dir from working tree"
 msgstr "git目錄和工作區分離"
 
@@ -12910,32 +12681,32 @@
 msgstr "在新版本庫中設定設定訊息"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:230 builtin/push.c:584 builtin/send-pack.c:196
+#: builtin/pull.c:230 builtin/push.c:575 builtin/send-pack.c:196
 msgid "server-specific"
 msgstr "server-specific"
 
 #: builtin/clone.c:147 builtin/fetch.c:202 builtin/ls-remote.c:77
-#: builtin/pull.c:231 builtin/push.c:584 builtin/send-pack.c:197
+#: builtin/pull.c:231 builtin/push.c:575 builtin/send-pack.c:197
 msgid "option to transmit"
 msgstr "傳輸選項"
 
 #: builtin/clone.c:148 builtin/fetch.c:203 builtin/pull.c:234
-#: builtin/push.c:585
+#: builtin/push.c:576
 msgid "use IPv4 addresses only"
 msgstr "只使用 IPv4 位址"
 
 #: builtin/clone.c:150 builtin/fetch.c:205 builtin/pull.c:237
-#: builtin/push.c:587
+#: builtin/push.c:578
 msgid "use IPv6 addresses only"
 msgstr "只使用 IPv6 位址"
 
 #: builtin/clone.c:154
 msgid "any cloned submodules will use their remote-tracking branch"
-msgstr "任何複製的子模組將使用它們的遠端追蹤分支"
+msgstr "任何複製的子模組都將使用它們的遠端追蹤分支"
 
 #: builtin/clone.c:156
 msgid "initialize sparse-checkout file to include only files at root"
-msgstr "初始化稀疏檢出檔案,只包含根目錄中的檔案"
+msgstr "初始化稀疏簽出檔案,只包含根目錄中的檔案"
 
 #: builtin/clone.c:292
 msgid ""
@@ -12986,14 +12757,14 @@
 "You can inspect what was checked out with 'git status'\n"
 "and retry with 'git restore --source=HEAD :/'\n"
 msgstr ""
-"複製成功,但是檢出失敗。\n"
-"您可以透過 'git status' 檢查哪些已被檢出,然後使用指令\n"
+"複製成功,但是簽出失敗。\n"
+"您可以透過 'git status' 檢查哪些已被簽出,然後使用指令\n"
 "'git restore --source=HEAD :/' 重試\n"
 
 #: builtin/clone.c:594
 #, c-format
 msgid "Could not find remote branch %s to clone."
-msgstr "不能發現要複製的遠端分支 %s。"
+msgstr "找不到要複製的遠端分支 %s。"
 
 #: builtin/clone.c:713
 #, c-format
@@ -13002,15 +12773,15 @@
 
 #: builtin/clone.c:761
 msgid "failed to initialize sparse-checkout"
-msgstr "無法初始化稀疏檢出"
+msgstr "無法初始化稀疏簽出"
 
 #: builtin/clone.c:784
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
-msgstr "遠端 HEAD 指向一個不存在的引用,無法檢出。\n"
+msgstr "遠端 HEAD 指向一個不存在的引用,無法簽出。\n"
 
 #: builtin/clone.c:816
 msgid "unable to checkout working tree"
-msgstr "不能檢出工作區"
+msgstr "不能簽出工作區"
 
 #: builtin/clone.c:894
 msgid "unable to write parameters to config file"
@@ -13024,13 +12795,13 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "無法刪除暫時的 alternates 檔案"
 
-#: builtin/clone.c:1001 builtin/receive-pack.c:2491
+#: builtin/clone.c:1001 builtin/receive-pack.c:2490
 msgid "Too many arguments."
 msgstr "太多參數。"
 
 #: builtin/clone.c:1005
 msgid "You must specify a repository to clone."
-msgstr "您必須指定一個版本庫來複製。"
+msgstr "您必須指定要複製的版本庫。"
 
 #: builtin/clone.c:1018
 #, c-format
@@ -13046,7 +12817,7 @@
 msgid "repository '%s' does not exist"
 msgstr "版本庫 '%s' 不存在"
 
-#: builtin/clone.c:1039 builtin/fetch.c:2011
+#: builtin/clone.c:1039 builtin/fetch.c:2014
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一個正數"
@@ -13067,7 +12838,7 @@
 msgstr "工作區 '%s' 已經存在。"
 
 #: builtin/clone.c:1084 builtin/clone.c:1105 builtin/difftool.c:272
-#: builtin/log.c:1995 builtin/worktree.c:282 builtin/worktree.c:314
+#: builtin/log.c:1997 builtin/worktree.c:280 builtin/worktree.c:312
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能為 '%s' 建立先導目錄"
@@ -13091,7 +12862,7 @@
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
-msgstr "clone --recursive 和 --reference 以及 --reference-if-able 不相容"
+msgstr "clone --recursive 與 --reference 和 --reference-if-able 不相容"
 
 #: builtin/clone.c:1188 builtin/remote.c:200 builtin/remote.c:705
 #, c-format
@@ -13100,19 +12871,19 @@
 
 #: builtin/clone.c:1229
 msgid "--depth is ignored in local clones; use file:// instead."
-msgstr "--depth 在本機複製時被忽略,請改用 file:// 協定。"
+msgstr "本機複製會忽略 --depth。請改用 file:// 通訊協定。"
 
 #: builtin/clone.c:1231
 msgid "--shallow-since is ignored in local clones; use file:// instead."
-msgstr "--shallow-since 在本機複製時被忽略,請改用 file:// 協定。"
+msgstr "本機複製會忽略 --shallow-since。請改用 file:// 協定。"
 
 #: builtin/clone.c:1233
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
-msgstr "--shallow-exclude 在本機複製時被忽略,請改用 file:// 協定。"
+msgstr "本機複製會忽略 --shallow-exclude。請改用 file:// 協定。"
 
 #: builtin/clone.c:1235
 msgid "--filter is ignored in local clones; use file:// instead."
-msgstr "--filter 在本機複製時被忽略,請改用 file:// 協定。"
+msgstr "本機複製會忽略 --filter。請改用 file:// 協定。"
 
 #: builtin/clone.c:1240
 msgid "source repository is shallow, ignoring --local"
@@ -13122,14 +12893,18 @@
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1337 builtin/clone.c:1345
+#: builtin/clone.c:1324 builtin/clone.c:1383
+msgid "remote transport reported error"
+msgstr "遠端傳輸回報錯誤"
+
+#: builtin/clone.c:1336 builtin/clone.c:1344
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "遠端分支 %s 在上游 %s 未發現"
 
-#: builtin/clone.c:1348
+#: builtin/clone.c:1347
 msgid "You appear to have cloned an empty repository."
-msgstr "您似乎複製了一個空版本庫。"
+msgstr "您複製的版本庫似乎是空的。"
 
 #: builtin/column.c:10
 msgid "git column [<options>]"
@@ -13186,7 +12961,7 @@
 msgstr "找不到符合 %s 的物件目錄"
 
 #: builtin/commit-graph.c:80 builtin/commit-graph.c:210
-#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1776
+#: builtin/commit-graph.c:316 builtin/fetch.c:191 builtin/log.c:1779
 msgid "dir"
 msgstr "目錄"
 
@@ -13280,7 +13055,7 @@
 msgid "duplicate parent %s ignored"
 msgstr "忽略重複的父提交 %s"
 
-#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:559
+#: builtin/commit-tree.c:56 builtin/commit-tree.c:136 builtin/log.c:562
 #, c-format
 msgid "not a valid object name %s"
 msgstr "不是一個有效的物件名 %s"
@@ -13308,13 +13083,13 @@
 msgid "id of a parent commit object"
 msgstr "父提交物件 ID"
 
-#: builtin/commit-tree.c:114 builtin/commit.c:1614 builtin/merge.c:282
-#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1605
+#: builtin/commit-tree.c:114 builtin/commit.c:1624 builtin/merge.c:282
+#: builtin/notes.c:409 builtin/notes.c:575 builtin/stash.c:1601
 #: builtin/tag.c:456
 msgid "message"
 msgstr "訊息"
 
-#: builtin/commit-tree.c:115 builtin/commit.c:1614
+#: builtin/commit-tree.c:115 builtin/commit.c:1624
 msgid "commit message"
 msgstr "提交說明"
 
@@ -13322,7 +13097,7 @@
 msgid "read commit log message from file"
 msgstr "從檔案中讀取提交說明"
 
-#: builtin/commit-tree.c:121 builtin/commit.c:1631 builtin/merge.c:299
+#: builtin/commit-tree.c:121 builtin/commit.c:1641 builtin/merge.c:299
 #: builtin/pull.c:176 builtin/revert.c:118
 msgid "GPG sign commit"
 msgstr "GPG 提交簽名"
@@ -13467,7 +13242,7 @@
 "in the current commit message"
 msgstr "無法選擇一個未被目前提交說明使用的備註字元"
 
-#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1158
+#: builtin/commit.c:746 builtin/commit.c:780 builtin/commit.c:1165
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "不能查詢提交 %s"
@@ -13503,7 +13278,45 @@
 msgid "could not write commit template"
 msgstr "不能寫提交範本"
 
-#: builtin/commit.c:900
+#: builtin/commit.c:893
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored.\n"
+msgstr ""
+"請輸入描述您變更的提交訊息。\n"
+"開頭是「%c」的行皆會忽略。\n"
+
+#: builtin/commit.c:895
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"請輸入描述您變更的提交訊息。開頭是「%c」\n"
+"的行皆會忽略。提交訊息空白則取消本次提交作業。\n"
+
+#: builtin/commit.c:899
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"請輸入描述您變更的提交訊息。會保留開頭是「%c」\n"
+"的行,但也可以自己移除掉這些行。\n"
+
+#: builtin/commit.c:903
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"請輸入描述您變更的提交訊息。會保留開頭是\n"
+"「%c」的行,但也可以自己移除掉這些行。\n"
+"提交訊息空白則取消本次提交作業。\n"
+
+#: builtin/commit.c:915
 msgid ""
 "\n"
 "It looks like you may be committing a merge.\n"
@@ -13517,7 +13330,7 @@
 "\tgit update-ref -d MERGE_HEAD\n"
 "後重試。\n"
 
-#: builtin/commit.c:905
+#: builtin/commit.c:920
 msgid ""
 "\n"
 "It looks like you may be committing a cherry-pick.\n"
@@ -13531,193 +13344,174 @@
 "\tgit update-ref -d CHERRY_PICK_HEAD\n"
 "後重試。\n"
 
-#: builtin/commit.c:915
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
-msgstr ""
-"請為您的變更輸入提交說明。以 '%c' 開始的行將被忽略,而一個空的提交\n"
-"說明將會終止提交。\n"
-
-#: builtin/commit.c:923
-#, c-format
-msgid ""
-"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
-msgstr ""
-"請為您的變更輸入提交說明。以 '%c' 開始的行將被保留,如果您原意\n"
-"也可以刪除它們。一個空的提交說明將會終止提交。\n"
-
 #  譯者:為保證在輸出中對齊,注意調整句中空格!
-#: builtin/commit.c:940
+#: builtin/commit.c:947
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%s作者:  %.*s <%.*s>"
 
 #  譯者:為保證在輸出中對齊,注意調整句中空格!
-#: builtin/commit.c:948
+#: builtin/commit.c:955
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%s日期:  %s"
 
 #  譯者:為保證在輸出中對齊,注意調整句中空格!
-#: builtin/commit.c:955
+#: builtin/commit.c:962
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%s提交者:%.*s <%.*s>"
 
-#: builtin/commit.c:973
+#: builtin/commit.c:980
 msgid "Cannot read index"
 msgstr "無法讀取索引"
 
-#: builtin/commit.c:1018
+#: builtin/commit.c:1025
 msgid "unable to pass trailers to --trailers"
 msgstr "無法將尾部署名傳遞至 --trailers"
 
-#: builtin/commit.c:1058
+#: builtin/commit.c:1065
 msgid "Error building trees"
 msgstr "無法建立樹狀物件"
 
-#: builtin/commit.c:1072 builtin/tag.c:319
+#: builtin/commit.c:1079 builtin/tag.c:319
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "請使用 -m 或 -F 選項提供提交說明。\n"
 
-#: builtin/commit.c:1116
+#: builtin/commit.c:1123
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr "--author '%s' 不是 '姓名 <信箱>' 格式,且未能在現有作者中找到符合"
 
-#: builtin/commit.c:1130
+#: builtin/commit.c:1137
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "無效的忽略模式 '%s'"
 
-#: builtin/commit.c:1148 builtin/commit.c:1441
+#: builtin/commit.c:1155 builtin/commit.c:1448
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "無效的未追蹤檔案參數 '%s'"
 
-#: builtin/commit.c:1188
+#: builtin/commit.c:1195
 msgid "--long and -z are incompatible"
 msgstr "--long 和 -z 選項不相容"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1226
 msgid "You are in the middle of a merge -- cannot reword."
 msgstr "正在合併中——不能重新輸入。"
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1228
 msgid "You are in the middle of a cherry-pick -- cannot reword."
 msgstr "正在揀選中——不能重新輸入。"
 
-#: builtin/commit.c:1224
+#: builtin/commit.c:1231
 #, c-format
 msgid "cannot combine reword option of --fixup with path '%s'"
 msgstr "不能將「%s」路徑與 --fixup 的 reword 選項結合"
 
-#: builtin/commit.c:1226
+#: builtin/commit.c:1233
 msgid ""
 "reword option of --fixup is mutually exclusive with --patch/--interactive/--"
 "all/--include/--only"
 msgstr ""
 "--fixup 的 reword 選項與 --patch/--interactive/--all/--include/--only 互斥"
 
-#: builtin/commit.c:1245
+#: builtin/commit.c:1252
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "同時使用 --reset-author 和 --author 沒有意義"
 
-#: builtin/commit.c:1254
+#: builtin/commit.c:1261
 msgid "You have nothing to amend."
 msgstr "您沒有可修補的提交。"
 
-#: builtin/commit.c:1257
+#: builtin/commit.c:1264
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "您正處於一個合併過程中 -- 無法修補提交。"
 
-#: builtin/commit.c:1259
+#: builtin/commit.c:1266
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "您正處於一個揀選過程中 -- 無法修補提交。"
 
-#: builtin/commit.c:1261
+#: builtin/commit.c:1268
 msgid "You are in the middle of a rebase -- cannot amend."
 msgstr "您正處於重定基底的過程中 -- 無法修訂。"
 
-#: builtin/commit.c:1264
+#: builtin/commit.c:1271
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "選項 --squash 和 --fixup 不能同時使用"
 
-#: builtin/commit.c:1274
+#: builtin/commit.c:1281
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "只能用一個 -c/-C/-F/--fixup 選項。"
 
-#: builtin/commit.c:1276
+#: builtin/commit.c:1283
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "選項 -m 不能和 -c/-C/-F 同時使用。"
 
-#: builtin/commit.c:1285
+#: builtin/commit.c:1292
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author 只能和 -C、-c 或 --amend 同時使用。"
 
-#: builtin/commit.c:1303
+#: builtin/commit.c:1310
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr "只能用一個 --include/--only/--all/--interactive/--patch 選項。"
 
-#: builtin/commit.c:1331
+#: builtin/commit.c:1338
 #, c-format
 msgid "unknown option: --fixup=%s:%s"
 msgstr "未知選項:--fixup=%s:%s"
 
-#: builtin/commit.c:1345
+#: builtin/commit.c:1352
 #, c-format
 msgid "paths '%s ...' with -a does not make sense"
 msgstr "路徑 '%s ...' 和 -a 選項同時使用沒有意義"
 
-#: builtin/commit.c:1476 builtin/commit.c:1642
+#: builtin/commit.c:1483 builtin/commit.c:1652
 msgid "show status concisely"
 msgstr "以簡潔的格式顯示狀態"
 
-#: builtin/commit.c:1478 builtin/commit.c:1644
+#: builtin/commit.c:1485 builtin/commit.c:1654
 msgid "show branch information"
 msgstr "顯示分支訊息"
 
-#: builtin/commit.c:1480
+#: builtin/commit.c:1487
 msgid "show stash information"
 msgstr "顯示儲藏區訊息"
 
-#: builtin/commit.c:1482 builtin/commit.c:1646
+#: builtin/commit.c:1489 builtin/commit.c:1656
 msgid "compute full ahead/behind values"
 msgstr "計算完整的領先/落後值"
 
-#: builtin/commit.c:1484
+#: builtin/commit.c:1491
 msgid "version"
 msgstr "版本"
 
-#: builtin/commit.c:1484 builtin/commit.c:1648 builtin/push.c:560
-#: builtin/worktree.c:681
+#: builtin/commit.c:1491 builtin/commit.c:1658 builtin/push.c:551
+#: builtin/worktree.c:690
 msgid "machine-readable output"
 msgstr "機器可讀的輸出"
 
-#: builtin/commit.c:1487 builtin/commit.c:1650
+#: builtin/commit.c:1494 builtin/commit.c:1660
 msgid "show status in long format (default)"
 msgstr "以長格式顯示狀態(預設)"
 
-#: builtin/commit.c:1490 builtin/commit.c:1653
+#: builtin/commit.c:1497 builtin/commit.c:1663
 msgid "terminate entries with NUL"
 msgstr "條目以 NUL 字元結尾"
 
-#: builtin/commit.c:1492 builtin/commit.c:1496 builtin/commit.c:1656
+#: builtin/commit.c:1499 builtin/commit.c:1503 builtin/commit.c:1666
 #: builtin/fast-export.c:1198 builtin/fast-export.c:1201
 #: builtin/fast-export.c:1204 builtin/rebase.c:1407 parse-options.h:337
 msgid "mode"
 msgstr "模式"
 
-#: builtin/commit.c:1493 builtin/commit.c:1656
+#: builtin/commit.c:1500 builtin/commit.c:1666
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "顯示未追蹤的檔案,「模式」的可選參數:all、normal、no。(預設值:all)"
 
-#: builtin/commit.c:1497
+#: builtin/commit.c:1504
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -13725,202 +13519,201 @@
 "顯示已忽略的檔案,可選模式:traditional、matching、no。(預設值:"
 "traditional)"
 
-#: builtin/commit.c:1499 parse-options.h:193
+#: builtin/commit.c:1506 parse-options.h:193
 msgid "when"
 msgstr "何時"
 
-#: builtin/commit.c:1500
+#: builtin/commit.c:1507
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 "忽略子模組的更改,「何時」的可選參數:all、dirty、untracked。(預設值:all)"
 
-#: builtin/commit.c:1502
+#: builtin/commit.c:1509
 msgid "list untracked files in columns"
 msgstr "以列的方式顯示未追蹤的檔案"
 
-#: builtin/commit.c:1503
+#: builtin/commit.c:1510
 msgid "do not detect renames"
 msgstr "不檢測重新命名"
 
-#: builtin/commit.c:1505
+#: builtin/commit.c:1512
 msgid "detect renames, optionally set similarity index"
 msgstr "檢測重新命名,可以設定索引相似度"
 
-#: builtin/commit.c:1525
+#: builtin/commit.c:1535
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "不支援已忽略和未追蹤檔案參數的組合"
 
-#: builtin/commit.c:1607
+#: builtin/commit.c:1617
 msgid "suppress summary after successful commit"
 msgstr "提交成功後不顯示概述訊息"
 
-#: builtin/commit.c:1608
+#: builtin/commit.c:1618
 msgid "show diff in commit message template"
 msgstr "在提交說明範本裡顯示差異"
 
-#: builtin/commit.c:1610
+#: builtin/commit.c:1620
 msgid "Commit message options"
 msgstr "提交說明選項"
 
-#: builtin/commit.c:1611 builtin/merge.c:286 builtin/tag.c:458
+#: builtin/commit.c:1621 builtin/merge.c:286 builtin/tag.c:458
 msgid "read message from file"
 msgstr "從檔案中讀取提交說明"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "author"
 msgstr "作者"
 
-#: builtin/commit.c:1612
+#: builtin/commit.c:1622
 msgid "override author for commit"
 msgstr "提交時覆蓋作者"
 
-#: builtin/commit.c:1613 builtin/gc.c:550
+#: builtin/commit.c:1623 builtin/gc.c:550
 msgid "date"
 msgstr "日期"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1623
 msgid "override date for commit"
 msgstr "提交時覆蓋日期"
 
-#: builtin/commit.c:1615 builtin/commit.c:1616 builtin/commit.c:1622
+#: builtin/commit.c:1625 builtin/commit.c:1626 builtin/commit.c:1632
 #: parse-options.h:329 ref-filter.h:90
 msgid "commit"
 msgstr "提交"
 
-#: builtin/commit.c:1615
+#: builtin/commit.c:1625
 msgid "reuse and edit message from specified commit"
 msgstr "重用並編輯指定提交的提交說明"
 
-#: builtin/commit.c:1616
+#: builtin/commit.c:1626
 msgid "reuse message from specified commit"
 msgstr "重用指定提交的提交說明"
 
 #. TRANSLATORS: Leave "[(amend|reword):]" as-is,
 #. and only translate <commit>.
 #.
-#: builtin/commit.c:1621
-#| msgid "amend previous commit"
+#: builtin/commit.c:1631
 msgid "[(amend|reword):]commit"
 msgstr "[(amend|reword):]commit"
 
-#: builtin/commit.c:1621
+#: builtin/commit.c:1631
 msgid ""
 "use autosquash formatted message to fixup or amend/reword specified commit"
 msgstr "使用 autosquash 格式化後的說明來 fixup 或是 amend/reword 指定提交"
 
-#: builtin/commit.c:1622
+#: builtin/commit.c:1632
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "使用 autosquash 格式的提交說明用以壓縮至指定的提交"
 
-#: builtin/commit.c:1623
+#: builtin/commit.c:1633
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "現在將該提交的作者改為我(和 -C/-c/--amend 參數共用)"
 
-#: builtin/commit.c:1624 builtin/interpret-trailers.c:111
+#: builtin/commit.c:1634 builtin/interpret-trailers.c:111
 msgid "trailer"
 msgstr "尾部署名"
 
-#: builtin/commit.c:1624
+#: builtin/commit.c:1634
 msgid "add custom trailer(s)"
 msgstr "加入自訂尾部署名"
 
-#: builtin/commit.c:1625 builtin/log.c:1751 builtin/merge.c:302
+#: builtin/commit.c:1635 builtin/log.c:1754 builtin/merge.c:302
 #: builtin/pull.c:145 builtin/revert.c:110
 msgid "add a Signed-off-by trailer"
 msgstr "在結尾加入 Signed-off-by"
 
-#: builtin/commit.c:1626
+#: builtin/commit.c:1636
 msgid "use specified template file"
 msgstr "使用指定的範本檔案"
 
-#: builtin/commit.c:1627
+#: builtin/commit.c:1637
 msgid "force edit of commit"
 msgstr "強制編輯提交"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1639
 msgid "include status in commit message template"
 msgstr "在提交說明範本裡包含狀態訊息"
 
-#: builtin/commit.c:1634
+#: builtin/commit.c:1644
 msgid "Commit contents options"
 msgstr "提交內容選項"
 
-#: builtin/commit.c:1635
+#: builtin/commit.c:1645
 msgid "commit all changed files"
 msgstr "提交所有改動的檔案"
 
-#: builtin/commit.c:1636
+#: builtin/commit.c:1646
 msgid "add specified files to index for commit"
 msgstr "新增指定的檔案到索引區等待提交"
 
-#: builtin/commit.c:1637
+#: builtin/commit.c:1647
 msgid "interactively add files"
 msgstr "互動式新增檔案"
 
-#: builtin/commit.c:1638
+#: builtin/commit.c:1648
 msgid "interactively add changes"
 msgstr "互動式新增變更"
 
-#: builtin/commit.c:1639
+#: builtin/commit.c:1649
 msgid "commit only specified files"
 msgstr "只提交指定的檔案"
 
-#: builtin/commit.c:1640
+#: builtin/commit.c:1650
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "繞過 pre-commit 和 commit-msg 掛鉤"
 
-#: builtin/commit.c:1641
+#: builtin/commit.c:1651
 msgid "show what would be committed"
 msgstr "顯示將要提交的內容"
 
-#: builtin/commit.c:1654
+#: builtin/commit.c:1664
 msgid "amend previous commit"
 msgstr "修改先前的提交"
 
-#: builtin/commit.c:1655
+#: builtin/commit.c:1665
 msgid "bypass post-rewrite hook"
 msgstr "繞過 post-rewrite 掛鉤"
 
-#: builtin/commit.c:1662
+#: builtin/commit.c:1672
 msgid "ok to record an empty change"
 msgstr "允許一個空提交"
 
-#: builtin/commit.c:1664
+#: builtin/commit.c:1674
 msgid "ok to record a change with an empty message"
 msgstr "允許空的提交說明"
 
-#: builtin/commit.c:1737
+#: builtin/commit.c:1750
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "損壞的 MERGE_HEAD 檔案(%s)"
 
-#: builtin/commit.c:1744
+#: builtin/commit.c:1757
 msgid "could not read MERGE_MODE"
 msgstr "不能讀取 MERGE_MODE"
 
-#: builtin/commit.c:1765
+#: builtin/commit.c:1778
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "不能讀取提交說明:%s"
 
-#: builtin/commit.c:1772
+#: builtin/commit.c:1785
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "終止提交因為提交說明為空。\n"
 
-#: builtin/commit.c:1777
+#: builtin/commit.c:1790
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "終止提交;您未更改來自範本的提交說明。\n"
 
-#: builtin/commit.c:1788
+#: builtin/commit.c:1801
 #, c-format
 msgid "Aborting commit due to empty commit message body.\n"
 msgstr "提交說明內文空白,中止提交作業。\n"
 
-#: builtin/commit.c:1824
+#: builtin/commit.c:1837
 msgid ""
 "repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -14550,65 +14343,65 @@
 msgid "you may want to cleanup or recover these."
 msgstr "您可能想要清理或者復原它們。"
 
-#: builtin/difftool.c:700
+#: builtin/difftool.c:699
 msgid "use `diff.guitool` instead of `diff.tool`"
 msgstr "使用 `diff.guitool` 代替 `diff.tool`"
 
-#: builtin/difftool.c:702
+#: builtin/difftool.c:701
 msgid "perform a full-directory diff"
 msgstr "執行一個全目錄差異比較"
 
-#: builtin/difftool.c:704
+#: builtin/difftool.c:703
 msgid "do not prompt before launching a diff tool"
 msgstr "啟動差異比較工具之前不提示"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "use symlinks in dir-diff mode"
 msgstr "在 dir-diff 模式中使用符號連結"
 
-#: builtin/difftool.c:710
+#: builtin/difftool.c:709
 msgid "tool"
 msgstr "工具"
 
-#: builtin/difftool.c:711
+#: builtin/difftool.c:710
 msgid "use the specified diff tool"
 msgstr "使用指定的差異比較工具"
 
-#: builtin/difftool.c:713
+#: builtin/difftool.c:712
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "顯示可以用在 `--tool` 參數後的差異工具列表"
 
-#: builtin/difftool.c:716
+#: builtin/difftool.c:715
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr "當執行 diff 工具返回非零離開碼時,使 'git-difftool' 離開"
 
-#: builtin/difftool.c:719
+#: builtin/difftool.c:718
 msgid "specify a custom command for viewing diffs"
 msgstr "指定一個用於檢視差異的自訂指令"
 
-#: builtin/difftool.c:720
+#: builtin/difftool.c:719
 msgid "passed to `diff`"
 msgstr "傳遞給 `diff`"
 
-#: builtin/difftool.c:735
+#: builtin/difftool.c:734
 msgid "difftool requires worktree or --no-index"
 msgstr "difftool 要求工作區或者 --no-index"
 
-#: builtin/difftool.c:742
+#: builtin/difftool.c:741
 msgid "--dir-diff is incompatible with --no-index"
 msgstr "--dir-diff 和 --no-index 不相容"
 
-#: builtin/difftool.c:745
+#: builtin/difftool.c:744
 msgid "--gui, --tool and --extcmd are mutually exclusive"
 msgstr "--gui、--tool 和 --extcmd 互斥"
 
-#: builtin/difftool.c:753
+#: builtin/difftool.c:752
 msgid "no <tool> given for --tool=<tool>"
 msgstr "沒有為 --tool=<工具> 參數提供 <工具>"
 
-#: builtin/difftool.c:760
+#: builtin/difftool.c:759
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "沒有為 --extcmd=<命令> 參數提供 <命令>"
 
@@ -14631,14 +14424,14 @@
 #: builtin/env--helper.c:67
 #, c-format
 msgid "option `--default' expects a boolean value with `--type=bool`, not `%s`"
-msgstr "選項 `--default' 和 `type=bool` 期望一個布林值,不是 `%s`"
+msgstr "選項「--default」預期收到「--type=bool」的布林值,而非「%s」"
 
 #: builtin/env--helper.c:82
 #, c-format
 msgid ""
 "option `--default' expects an unsigned long value with `--type=ulong`, not `"
 "%s`"
-msgstr "選項 `--default' 和 `type=ulong` 期望一個無符號長整型,不是 `%s`"
+msgstr "選項「--default」預期收到「--type=ulong」的無號 long 數值,而非「%s」"
 
 #: builtin/fast-export.c:29
 msgid "git fast-export [rev-list-opts]"
@@ -14696,7 +14489,7 @@
 msgid "skip output of blob data"
 msgstr "略過資料物件資料的輸出"
 
-#: builtin/fast-export.c:1222 builtin/log.c:1823
+#: builtin/fast-export.c:1222 builtin/log.c:1826
 msgid "refspec"
 msgstr "參照規格"
 
@@ -14828,7 +14621,7 @@
 
 #: builtin/fetch.c:162
 msgid "number of submodules fetched in parallel"
-msgstr "子模組取得的並發數"
+msgstr "並行取得的子模組數量"
 
 #: builtin/fetch.c:164
 msgid "modify the refspec to place all refs within refs/prefetch/"
@@ -14866,7 +14659,7 @@
 #: builtin/fetch.c:181 builtin/fetch.c:187 builtin/pull.c:209
 #: builtin/pull.c:218
 msgid "deepen history of shallow clone"
-msgstr "深化淺複製的歷史"
+msgstr "取得淺複製的更多過去歷史記錄"
 
 #: builtin/fetch.c:183 builtin/pull.c:212
 msgid "deepen history of shallow repository based on time"
@@ -14903,9 +14696,8 @@
 msgstr "報告我們只擁有從該物件開始可以取得的物件"
 
 #: builtin/fetch.c:210
-#, fuzzy
 msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
-msgstr "不取得包檔案。反之,輸出 negotiation tips 的祖先"
+msgstr "不取得包檔案,而是輸出交涉的祖先提交"
 
 #: builtin/fetch.c:213 builtin/fetch.c:215
 msgid "run 'maintenance --auto' after fetching"
@@ -15010,8 +14802,8 @@
 
 #: builtin/fetch.c:1129
 #, c-format
-msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "拒絕 %s 因為淺複製不允許被更新"
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "已拒絕 %s,不允許更新淺複製"
 
 #: builtin/fetch.c:1206 builtin/fetch.c:1357
 #, c-format
@@ -15111,58 +14903,62 @@
 msgid "You need to specify a tag name."
 msgstr "您需要指定一個標籤名稱。"
 
-#: builtin/fetch.c:1995
+#: builtin/fetch.c:1994
+msgid "--negotiate-only needs one or more --negotiate-tip=*"
+msgstr "--negotiate-only 需要一或多個 --negotiate-tip=*"
+
+#: builtin/fetch.c:1998
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支援負數深度"
 
-#: builtin/fetch.c:1997
+#: builtin/fetch.c:2000
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:2002
+#: builtin/fetch.c:2005
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同時使用"
 
-#: builtin/fetch.c:2004
+#: builtin/fetch.c:2007
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "對於一個完整的版本庫,參數 --unshallow 沒有意義"
 
-#: builtin/fetch.c:2021
+#: builtin/fetch.c:2024
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能帶一個版本庫參數"
 
-#: builtin/fetch.c:2023
+#: builtin/fetch.c:2026
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 帶引用規格沒有任何意義"
 
-#: builtin/fetch.c:2032
+#: builtin/fetch.c:2035
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "沒有這樣的遠端或遠端組:%s"
 
-#: builtin/fetch.c:2039
+#: builtin/fetch.c:2042
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "取得組並指定引用規格沒有意義"
 
-#: builtin/fetch.c:2055
+#: builtin/fetch.c:2058
 msgid "must supply remote when using --negotiate-only"
 msgstr "使用 --negotiate-only 時必須提供遠端"
 
-#: builtin/fetch.c:2060
+#: builtin/fetch.c:2063
 msgid "Protocol does not support --negotiate-only, exiting."
 msgstr "協定不支援 --negotiate-only,結束。"
 
-#: builtin/fetch.c:2079
+#: builtin/fetch.c:2082
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
-msgstr "只可以將 --filter 用於在 extensions.partialClone 中設定的遠端版本庫"
+msgstr "只可以將 --filter 用於在 extensions.partialclone 中設定的遠端版本庫"
 
-#: builtin/fetch.c:2083
+#: builtin/fetch.c:2086
 msgid "--atomic can only be used when fetching from one remote"
-msgstr "--stdin 只能在擷取 (fetch) 一個遠端時使用"
+msgstr "--atomic 只能在擷取 (fetch) 一個遠端時使用"
 
-#: builtin/fetch.c:2087
+#: builtin/fetch.c:2090
 msgid "--stdin can only be used when fetching from one remote"
 msgstr "--stdin 只能在取得一個遠端時使用"
 
@@ -15255,19 +15051,19 @@
 msgid "git for-each-repo --config=<config> <command-args>"
 msgstr "git for-each-repo --config=<設定> <命令引數>"
 
-#: builtin/for-each-repo.c:37
+#: builtin/for-each-repo.c:34
 msgid "config"
 msgstr "config"
 
-#: builtin/for-each-repo.c:38
+#: builtin/for-each-repo.c:35
 msgid "config key storing a list of repository paths"
 msgstr "儲存版本庫路徑清單的設定鍵"
 
-#: builtin/for-each-repo.c:46
+#: builtin/for-each-repo.c:43
 msgid "missing --config=<config>"
 msgstr "缺少 --config=<設定>"
 
-#: builtin/fsck.c:69 builtin/fsck.c:127 builtin/fsck.c:128
+#: builtin/fsck.c:69 builtin/fsck.c:128 builtin/fsck.c:129
 msgid "unknown"
 msgstr "未知"
 
@@ -15283,16 +15079,16 @@
 msgid "warning in %s %s: %s"
 msgstr "%s %s 警告:%s"
 
-#: builtin/fsck.c:123 builtin/fsck.c:126
+#: builtin/fsck.c:124 builtin/fsck.c:127
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "來自 %7s %s 的損壞的連結"
 
-#: builtin/fsck.c:135
+#: builtin/fsck.c:136
 msgid "wrong object type in link"
 msgstr "連結中錯誤的物件類型"
 
-#: builtin/fsck.c:151
+#: builtin/fsck.c:152
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -15301,211 +15097,211 @@
 "損壞的連結來自於 %7s %s\n"
 "              到 %7s %s"
 
-#: builtin/fsck.c:263
+#: builtin/fsck.c:264
 #, c-format
 msgid "missing %s %s"
 msgstr "缺少 %s %s"
 
-#: builtin/fsck.c:290
+#: builtin/fsck.c:291
 #, c-format
 msgid "unreachable %s %s"
 msgstr "無法取得 %s %s"
 
-#: builtin/fsck.c:310
+#: builtin/fsck.c:311
 #, c-format
 msgid "dangling %s %s"
 msgstr "懸空 %s %s"
 
-#: builtin/fsck.c:320
+#: builtin/fsck.c:321
 msgid "could not create lost-found"
 msgstr "不能建立 lost-found"
 
-#: builtin/fsck.c:331
+#: builtin/fsck.c:332
 #, c-format
 msgid "could not finish '%s'"
 msgstr "不能完成 '%s'"
 
-#: builtin/fsck.c:348
+#: builtin/fsck.c:349
 #, c-format
 msgid "Checking %s"
 msgstr "正在檢查 %s"
 
-#: builtin/fsck.c:386
+#: builtin/fsck.c:387
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "正在檢查連通性(%d 個物件)"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking %s %s"
 msgstr "正在檢查 %s %s"
 
-#: builtin/fsck.c:410
+#: builtin/fsck.c:411
 msgid "broken links"
 msgstr "損壞的連結"
 
-#: builtin/fsck.c:419
+#: builtin/fsck.c:420
 #, c-format
 msgid "root %s"
 msgstr "根 %s"
 
-#: builtin/fsck.c:427
+#: builtin/fsck.c:428
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "已標記 %s %s (%s) 於 %s"
 
-#: builtin/fsck.c:456
+#: builtin/fsck.c:457
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s:物件損壞或遺失"
 
-#: builtin/fsck.c:481
+#: builtin/fsck.c:482
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s:無效的引用日誌條目 %s"
 
-#: builtin/fsck.c:495
+#: builtin/fsck.c:496
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "正在檢查引用日誌 %s->%s"
 
-#: builtin/fsck.c:529
+#: builtin/fsck.c:530
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s:無效的 sha1 指標 %s"
 
-#: builtin/fsck.c:536
+#: builtin/fsck.c:537
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s:不是一個提交"
 
-#: builtin/fsck.c:590
+#: builtin/fsck.c:591
 msgid "notice: No default references"
 msgstr "注意:無預設引用"
 
-#: builtin/fsck.c:605
+#: builtin/fsck.c:606
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s:物件損壞或遺失:%s"
 
-#: builtin/fsck.c:618
+#: builtin/fsck.c:619
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s:不能解析物件:%s"
 
-#: builtin/fsck.c:638
+#: builtin/fsck.c:639
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "壞的 sha1 檔案:%s"
 
-#: builtin/fsck.c:653
+#: builtin/fsck.c:654
 msgid "Checking object directory"
 msgstr "正在檢查物件目錄"
 
-#: builtin/fsck.c:656
+#: builtin/fsck.c:657
 msgid "Checking object directories"
 msgstr "正在檢查物件目錄"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 #, c-format
 msgid "Checking %s link"
 msgstr "正在檢查 %s 連結"
 
-#: builtin/fsck.c:676 builtin/index-pack.c:866
+#: builtin/fsck.c:677 builtin/index-pack.c:864
 #, c-format
 msgid "invalid %s"
 msgstr "無效的 %s"
 
-#: builtin/fsck.c:683
+#: builtin/fsck.c:684
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s 指向奇怪的東西(%s)"
 
-#: builtin/fsck.c:689
+#: builtin/fsck.c:690
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s:分離開頭指標的指向不存在"
 
-#: builtin/fsck.c:693
+#: builtin/fsck.c:694
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "注意:%s 指向一個尚未誕生的分支(%s)"
 
-#: builtin/fsck.c:705
+#: builtin/fsck.c:706
 msgid "Checking cache tree"
 msgstr "正在檢查快取樹"
 
-#: builtin/fsck.c:710
+#: builtin/fsck.c:711
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s:cache-tree 中無效的 sha1 指標"
 
-#: builtin/fsck.c:719
+#: builtin/fsck.c:720
 msgid "non-tree in cache-tree"
 msgstr "cache-tree 中非樹狀物件"
 
-#: builtin/fsck.c:750
+#: builtin/fsck.c:751
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<選項>] [<物件>...]"
 
-#: builtin/fsck.c:756
+#: builtin/fsck.c:757
 msgid "show unreachable objects"
 msgstr "顯示無法取得的物件"
 
-#: builtin/fsck.c:757
+#: builtin/fsck.c:758
 msgid "show dangling objects"
 msgstr "顯示懸空的物件"
 
-#: builtin/fsck.c:758
+#: builtin/fsck.c:759
 msgid "report tags"
 msgstr "報告標籤"
 
-#: builtin/fsck.c:759
+#: builtin/fsck.c:760
 msgid "report root nodes"
 msgstr "報告根節點"
 
-#: builtin/fsck.c:760
+#: builtin/fsck.c:761
 msgid "make index objects head nodes"
 msgstr "將索引亦作為檢查的頭節點"
 
-#: builtin/fsck.c:761
+#: builtin/fsck.c:762
 msgid "make reflogs head nodes (default)"
 msgstr "將引用日誌作為檢查的頭節點(預設)"
 
-#: builtin/fsck.c:762
+#: builtin/fsck.c:763
 msgid "also consider packs and alternate objects"
 msgstr "也考慮包和備用物件"
 
-#: builtin/fsck.c:763
+#: builtin/fsck.c:764
 msgid "check only connectivity"
 msgstr "僅檢查連通性"
 
-#: builtin/fsck.c:764 builtin/mktag.c:75
+#: builtin/fsck.c:765 builtin/mktag.c:75
 msgid "enable more strict checking"
 msgstr "啟用更嚴格的檢查"
 
-#: builtin/fsck.c:766
+#: builtin/fsck.c:767
 msgid "write dangling objects in .git/lost-found"
 msgstr "將懸空物件寫入 .git/lost-found 中"
 
-#: builtin/fsck.c:767 builtin/prune.c:134
+#: builtin/fsck.c:768 builtin/prune.c:134
 msgid "show progress"
 msgstr "顯示進度"
 
-#: builtin/fsck.c:768
+#: builtin/fsck.c:769
 msgid "show verbose names for reachable objects"
 msgstr "顯示可以取得物件的詳細名稱"
 
-#: builtin/fsck.c:827 builtin/index-pack.c:262
+#: builtin/fsck.c:828 builtin/index-pack.c:262
 msgid "Checking objects"
 msgstr "正在檢查物件"
 
-#: builtin/fsck.c:855
+#: builtin/fsck.c:856
 #, c-format
 msgid "%s: object missing"
 msgstr "%s:物件缺少"
 
-#: builtin/fsck.c:866
+#: builtin/fsck.c:867
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "無效的參數:期望 sha1,得到 '%s'"
@@ -15782,8 +15578,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:285 builtin/index-pack.c:1590 builtin/index-pack.c:1793
-#: builtin/pack-objects.c:2969
+#: builtin/grep.c:285 builtin/index-pack.c:1588 builtin/index-pack.c:1791
+#: builtin/pack-objects.c:3129
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "沒有執行緒支援,忽略 %s"
@@ -15798,243 +15594,243 @@
 msgid "unable to grep from object of type %s"
 msgstr "無法抓取來自於 %s 類型的物件"
 
-#: builtin/grep.c:739
+#: builtin/grep.c:738
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "開關 `%c' 期望一個數字值"
 
-#: builtin/grep.c:838
+#: builtin/grep.c:837
 msgid "search in index instead of in the work tree"
 msgstr "在索引區搜尋而不是在工作區"
 
-#: builtin/grep.c:840
+#: builtin/grep.c:839
 msgid "find in contents not managed by git"
 msgstr "在未被 git 管理的內容中尋找"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: builtin/grep.c:842
+#: builtin/grep.c:841
 msgid "search in both tracked and untracked files"
 msgstr "在追蹤和未追蹤的檔案中搜尋"
 
-#: builtin/grep.c:844
+#: builtin/grep.c:843
 msgid "ignore files specified via '.gitignore'"
 msgstr "忽略 '.gitignore' 包含的檔案"
 
-#: builtin/grep.c:846
+#: builtin/grep.c:845
 msgid "recursively search in each submodule"
 msgstr "在每一個子模組中遞迴搜尋"
 
-#: builtin/grep.c:849
+#: builtin/grep.c:848
 msgid "show non-matching lines"
 msgstr "顯示未符合的行"
 
-#: builtin/grep.c:851
+#: builtin/grep.c:850
 msgid "case insensitive matching"
 msgstr "不區分大小寫符合"
 
-#: builtin/grep.c:853
+#: builtin/grep.c:852
 msgid "match patterns only at word boundaries"
 msgstr "只在單詞邊界符合模式"
 
-#: builtin/grep.c:855
+#: builtin/grep.c:854
 msgid "process binary files as text"
 msgstr "把二進位檔案當做文字處理"
 
-#: builtin/grep.c:857
+#: builtin/grep.c:856
 msgid "don't match patterns in binary files"
 msgstr "不在二進位檔案中符合模式"
 
-#: builtin/grep.c:860
+#: builtin/grep.c:859
 msgid "process binary files with textconv filters"
 msgstr "用 textconv 過濾器處理二進位檔案"
 
-#: builtin/grep.c:862
+#: builtin/grep.c:861
 msgid "search in subdirectories (default)"
 msgstr "在子目錄中尋找(預設)"
 
-#: builtin/grep.c:864
+#: builtin/grep.c:863
 msgid "descend at most <depth> levels"
 msgstr "最多以指定的深度向下尋找"
 
-#: builtin/grep.c:868
+#: builtin/grep.c:867
 msgid "use extended POSIX regular expressions"
 msgstr "使用擴展的 POSIX 正規表示式"
 
-#: builtin/grep.c:871
+#: builtin/grep.c:870
 msgid "use basic POSIX regular expressions (default)"
 msgstr "使用基本的 POSIX 正規表示式(預設)"
 
-#: builtin/grep.c:874
+#: builtin/grep.c:873
 msgid "interpret patterns as fixed strings"
 msgstr "把模式解析為固定的字串"
 
-#: builtin/grep.c:877
+#: builtin/grep.c:876
 msgid "use Perl-compatible regular expressions"
 msgstr "使用 Perl 相容的正規表示式"
 
-#: builtin/grep.c:880
+#: builtin/grep.c:879
 msgid "show line numbers"
 msgstr "顯示行號"
 
-#: builtin/grep.c:881
+#: builtin/grep.c:880
 msgid "show column number of first match"
 msgstr "顯示第一個符合的列號"
 
-#: builtin/grep.c:882
+#: builtin/grep.c:881
 msgid "don't show filenames"
 msgstr "不顯示檔案名"
 
-#: builtin/grep.c:883
+#: builtin/grep.c:882
 msgid "show filenames"
 msgstr "顯示檔案名"
 
-#: builtin/grep.c:885
+#: builtin/grep.c:884
 msgid "show filenames relative to top directory"
 msgstr "顯示相對於頂級目錄的檔案名"
 
-#: builtin/grep.c:887
+#: builtin/grep.c:886
 msgid "show only filenames instead of matching lines"
 msgstr "只顯示檔案名而不顯示符合的行"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "synonym for --files-with-matches"
 msgstr "和 --files-with-matches 同義"
 
-#: builtin/grep.c:892
+#: builtin/grep.c:891
 msgid "show only the names of files without match"
 msgstr "只顯示未符合的檔案名"
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "print NUL after filenames"
 msgstr "在檔案名後輸出 NUL 字元"
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "show only matching parts of a line"
 msgstr "只顯示行中的符合的部分"
 
-#: builtin/grep.c:899
+#: builtin/grep.c:898
 msgid "show the number of matches instead of matching lines"
 msgstr "顯示總符合行數,而不顯示符合的行"
 
-#: builtin/grep.c:900
+#: builtin/grep.c:899
 msgid "highlight matches"
 msgstr "高亮顯示符合項"
 
-#: builtin/grep.c:902
+#: builtin/grep.c:901
 msgid "print empty line between matches from different files"
 msgstr "在不同檔案的符合項之間列印空行"
 
-#: builtin/grep.c:904
+#: builtin/grep.c:903
 msgid "show filename only once above matches from same file"
 msgstr "只在同一檔案的符合項的上面顯示一次檔案名"
 
-#: builtin/grep.c:907
+#: builtin/grep.c:906
 msgid "show <n> context lines before and after matches"
 msgstr "顯示符合項前後的 <n> 行上下文"
 
-#: builtin/grep.c:910
+#: builtin/grep.c:909
 msgid "show <n> context lines before matches"
 msgstr "顯示符合項前 <n> 行上下文"
 
-#: builtin/grep.c:912
+#: builtin/grep.c:911
 msgid "show <n> context lines after matches"
 msgstr "顯示符合項後 <n> 行上下文"
 
-#: builtin/grep.c:914
+#: builtin/grep.c:913
 msgid "use <n> worker threads"
 msgstr "使用 <n> 個工作執行緒"
 
-#: builtin/grep.c:915
+#: builtin/grep.c:914
 msgid "shortcut for -C NUM"
 msgstr "快捷鍵 -C 數字"
 
-#: builtin/grep.c:918
+#: builtin/grep.c:917
 msgid "show a line with the function name before matches"
 msgstr "在符合的前面顯示一行函數名"
 
-#: builtin/grep.c:920
+#: builtin/grep.c:919
 msgid "show the surrounding function"
 msgstr "顯示所在函數的前後內容"
 
-#: builtin/grep.c:923
+#: builtin/grep.c:922
 msgid "read patterns from file"
 msgstr "從檔案讀取模式"
 
-#: builtin/grep.c:925
+#: builtin/grep.c:924
 msgid "match <pattern>"
 msgstr "符合 <模式>"
 
-#: builtin/grep.c:927
+#: builtin/grep.c:926
 msgid "combine patterns specified with -e"
 msgstr "組合用 -e 參數設定的模式"
 
-#: builtin/grep.c:939
+#: builtin/grep.c:938
 msgid "indicate hit with exit status without output"
 msgstr "不輸出,而用離開碼標記命中狀態"
 
-#: builtin/grep.c:941
+#: builtin/grep.c:940
 msgid "show only matches from files that match all patterns"
 msgstr "只顯示符合所有模式的檔案中的符合"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "pager"
 msgstr "分頁"
 
-#: builtin/grep.c:944
+#: builtin/grep.c:943
 msgid "show matching files in the pager"
 msgstr "分頁顯示符合的檔案"
 
-#: builtin/grep.c:948
+#: builtin/grep.c:947
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "允許呼叫 grep(1)(本次組建忽略)"
 
-#: builtin/grep.c:1014
+#: builtin/grep.c:1013
 msgid "no pattern given"
 msgstr "未提供符合模式"
 
-#: builtin/grep.c:1050
+#: builtin/grep.c:1049
 msgid "--no-index or --untracked cannot be used with revs"
 msgstr "--no-index 或 --untracked 不能和版本同時使用"
 
-#: builtin/grep.c:1058
+#: builtin/grep.c:1057
 #, c-format
 msgid "unable to resolve revision: %s"
 msgstr "不能解析版本:%s"
 
-#: builtin/grep.c:1088
+#: builtin/grep.c:1087
 msgid "--untracked not supported with --recurse-submodules"
 msgstr "--untracked 不支援與 --recurse-submodules 一起使用"
 
-#: builtin/grep.c:1092
+#: builtin/grep.c:1091
 msgid "invalid option combination, ignoring --threads"
 msgstr "無效的選項組合,忽略 --threads"
 
-#: builtin/grep.c:1095 builtin/pack-objects.c:3930
+#: builtin/grep.c:1094 builtin/pack-objects.c:4090
 msgid "no threads support, ignoring --threads"
 msgstr "沒有執行緒支援,忽略 --threads"
 
-#: builtin/grep.c:1098 builtin/index-pack.c:1587 builtin/pack-objects.c:2966
+#: builtin/grep.c:1097 builtin/index-pack.c:1585 builtin/pack-objects.c:3126
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的執行緒數無效(%d)"
 
-#: builtin/grep.c:1132
+#: builtin/grep.c:1131
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager 僅用於工作區"
 
-#: builtin/grep.c:1158
+#: builtin/grep.c:1157
 msgid "--cached or --untracked cannot be used with --no-index"
 msgstr "--cached 或 --untracked 不能與 --no-index 同時使用"
 
-#: builtin/grep.c:1161
+#: builtin/grep.c:1160
 msgid "--untracked cannot be used with --cached"
 msgstr "--untracked 不能與 --cached 一起使用"
 
-#: builtin/grep.c:1167
+#: builtin/grep.c:1166
 msgid "--[no-]exclude-standard cannot be used for tracked contents"
 msgstr "--[no-]exclude-standard 不能用於已追蹤內容"
 
-#: builtin/grep.c:1175
+#: builtin/grep.c:1174
 msgid "both --cached and trees are given"
 msgstr "同時給出了 --cached 和樹狀物件"
 
@@ -16157,30 +15953,30 @@
 msgid "'%s': unknown man viewer."
 msgstr "'%s':未知的 man 檢視器。"
 
-#: builtin/help.c:453
+#: builtin/help.c:452
 msgid "no man viewer handled the request"
 msgstr "沒有 man 檢視器處理此請求"
 
-#: builtin/help.c:461
+#: builtin/help.c:459
 msgid "no info viewer handled the request"
 msgstr "沒有 info 檢視器處理此請求"
 
-#: builtin/help.c:520 builtin/help.c:531 git.c:348
+#: builtin/help.c:517 builtin/help.c:528 git.c:348
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' 是 '%s' 的別名"
 
-#: builtin/help.c:534 git.c:380
+#: builtin/help.c:531 git.c:380
 #, c-format
 msgid "bad alias.%s string: %s"
 msgstr "壞的 alias.%s 字串:%s"
 
-#: builtin/help.c:563 builtin/help.c:593
+#: builtin/help.c:561 builtin/help.c:591
 #, c-format
 msgid "usage: %s%s"
 msgstr "用法:%s%s"
 
-#: builtin/help.c:577
+#: builtin/help.c:575
 msgid "'git help config' for more information"
 msgstr "'git help config' 取得更多訊息"
 
@@ -16217,7 +16013,7 @@
 msgid "used more bytes than were available"
 msgstr "用掉了超過可用的位元組"
 
-#: builtin/index-pack.c:325 builtin/pack-objects.c:624
+#: builtin/index-pack.c:325 builtin/pack-objects.c:756
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超過了目前 off_t 的定義"
 
@@ -16244,233 +16040,233 @@
 msgid "pack version %<PRIu32> unsupported"
 msgstr "不支援包版本 %<PRIu32>"
 
-#: builtin/index-pack.c:383
+#: builtin/index-pack.c:381
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "包中有錯誤的物件位於位移量 %<PRIuMAX>:%s"
 
-#: builtin/index-pack.c:489
+#: builtin/index-pack.c:487
 #, c-format
 msgid "inflate returned %d"
 msgstr "解壓縮返回 %d"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:536
 msgid "offset value overflow for delta base object"
 msgstr "位移值覆蓋了 delta 基準物件"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:544
 msgid "delta base offset is out of bound"
 msgstr "delta 基準位移越界"
 
-#: builtin/index-pack.c:554
+#: builtin/index-pack.c:552
 #, c-format
 msgid "unknown object type %d"
 msgstr "未知物件類型 %d"
 
-#: builtin/index-pack.c:585
+#: builtin/index-pack.c:583
 msgid "cannot pread pack file"
 msgstr "無法讀取包檔案"
 
-#: builtin/index-pack.c:587
+#: builtin/index-pack.c:585
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "包檔案過早結束,缺少 %<PRIuMAX> 位元組"
 
-#: builtin/index-pack.c:613
+#: builtin/index-pack.c:611
 msgid "serious inflate inconsistency"
 msgstr "解壓縮嚴重的不一致"
 
-#: builtin/index-pack.c:758 builtin/index-pack.c:764 builtin/index-pack.c:788
-#: builtin/index-pack.c:827 builtin/index-pack.c:836
+#: builtin/index-pack.c:756 builtin/index-pack.c:762 builtin/index-pack.c:786
+#: builtin/index-pack.c:825 builtin/index-pack.c:834
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "發現 %s 出現 SHA1 衝突!"
 
-#: builtin/index-pack.c:761 builtin/pack-objects.c:171
-#: builtin/pack-objects.c:231 builtin/pack-objects.c:326
+#: builtin/index-pack.c:759 builtin/pack-objects.c:292
+#: builtin/pack-objects.c:352 builtin/pack-objects.c:458
 #, c-format
 msgid "unable to read %s"
 msgstr "不能讀 %s"
 
-#: builtin/index-pack.c:825
+#: builtin/index-pack.c:823
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "不能讀取現存物件訊息 %s"
 
-#: builtin/index-pack.c:833
+#: builtin/index-pack.c:831
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "不能讀取現存物件 %s"
 
-#: builtin/index-pack.c:847
+#: builtin/index-pack.c:845
 #, c-format
 msgid "invalid blob object %s"
 msgstr "無效的資料物件 %s"
 
-#: builtin/index-pack.c:850 builtin/index-pack.c:869
+#: builtin/index-pack.c:848 builtin/index-pack.c:867
 msgid "fsck error in packed object"
 msgstr "對打包物件 fsck 檢查發生錯誤"
 
-#: builtin/index-pack.c:871
+#: builtin/index-pack.c:869
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "%s 的所有子物件並非都可以取得"
 
-#: builtin/index-pack.c:932 builtin/index-pack.c:979
+#: builtin/index-pack.c:930 builtin/index-pack.c:977
 msgid "failed to apply delta"
 msgstr "套用 delta 失敗"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Receiving objects"
 msgstr "接收物件中"
 
-#: builtin/index-pack.c:1162
+#: builtin/index-pack.c:1160
 msgid "Indexing objects"
 msgstr "索引物件中"
 
-#: builtin/index-pack.c:1196
+#: builtin/index-pack.c:1194
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "包衝突(SHA1 不符合)"
 
-#: builtin/index-pack.c:1201
+#: builtin/index-pack.c:1199
 msgid "cannot fstat packfile"
 msgstr "不能對 packfile 呼叫 fstat"
 
-#: builtin/index-pack.c:1204
+#: builtin/index-pack.c:1202
 msgid "pack has junk at the end"
 msgstr "包的結尾有垃圾資料"
 
-#: builtin/index-pack.c:1216
+#: builtin/index-pack.c:1214
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "parse_pack_objects() 中遇到不可理喻的問題"
 
-#: builtin/index-pack.c:1239
+#: builtin/index-pack.c:1237
 msgid "Resolving deltas"
 msgstr "處理 delta 中"
 
-#: builtin/index-pack.c:1250 builtin/pack-objects.c:2732
+#: builtin/index-pack.c:1248 builtin/pack-objects.c:2892
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能建立執行緒:%s"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1281
 msgid "confusion beyond insanity"
 msgstr "不可理喻"
 
-#: builtin/index-pack.c:1289
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "完成 %d 個本機物件"
 
-#: builtin/index-pack.c:1301
+#: builtin/index-pack.c:1299
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "對 %s 的尾部總和檢查出現意外(磁碟損壞?)"
 
-#: builtin/index-pack.c:1305
+#: builtin/index-pack.c:1303
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "包有 %d 個未解決的 delta"
 
-#: builtin/index-pack.c:1329
+#: builtin/index-pack.c:1327
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "不能壓縮附加物件(%d)"
 
-#: builtin/index-pack.c:1425
+#: builtin/index-pack.c:1423
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "本機物件 %s 已損壞"
 
-#: builtin/index-pack.c:1446
+#: builtin/index-pack.c:1444
 #, c-format
 msgid "packfile name '%s' does not end with '.%s'"
 msgstr "packfile 名稱「%s」的結尾不是「.%s」"
 
-#: builtin/index-pack.c:1470
+#: builtin/index-pack.c:1468
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "無法寫入 %s 檔案 '%s'"
 
-#: builtin/index-pack.c:1478
+#: builtin/index-pack.c:1476
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "無法關閉已寫入的 %s 檔案 '%s'"
 
-#: builtin/index-pack.c:1504
+#: builtin/index-pack.c:1502
 msgid "error while closing pack file"
 msgstr "關閉包檔案時發生錯誤"
 
-#: builtin/index-pack.c:1518
+#: builtin/index-pack.c:1516
 msgid "cannot store pack file"
 msgstr "無法儲存包檔案"
 
-#: builtin/index-pack.c:1526
+#: builtin/index-pack.c:1524
 msgid "cannot store index file"
 msgstr "無法儲存索引檔案"
 
-#: builtin/index-pack.c:1581 builtin/pack-objects.c:2977
+#: builtin/index-pack.c:1579 builtin/pack-objects.c:3137
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "壞的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1651
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "無法開啟現存包檔案 '%s'"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "無法為 %s 開啟包索引檔案"
 
-#: builtin/index-pack.c:1701
+#: builtin/index-pack.c:1699
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "非 delta:%d 個物件"
 
-#: builtin/index-pack.c:1708
+#: builtin/index-pack.c:1706
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "鏈長 = %d: %lu 物件"
 
-#: builtin/index-pack.c:1750
+#: builtin/index-pack.c:1748
 msgid "Cannot come back to cwd"
 msgstr "無法返回目前工作目錄"
 
-#: builtin/index-pack.c:1804 builtin/index-pack.c:1807
-#: builtin/index-pack.c:1823 builtin/index-pack.c:1827
+#: builtin/index-pack.c:1802 builtin/index-pack.c:1805
+#: builtin/index-pack.c:1821 builtin/index-pack.c:1825
 #, c-format
 msgid "bad %s"
 msgstr "錯誤選項 %s"
 
-#: builtin/index-pack.c:1833 builtin/init-db.c:378 builtin/init-db.c:613
+#: builtin/index-pack.c:1831 builtin/init-db.c:379 builtin/init-db.c:614
 #, c-format
 msgid "unknown hash algorithm '%s'"
 msgstr "未知的「%s」雜湊算法"
 
-#: builtin/index-pack.c:1852
+#: builtin/index-pack.c:1850
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同時使用"
 
-#: builtin/index-pack.c:1854
+#: builtin/index-pack.c:1852
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要一個 git 版本庫"
 
-#: builtin/index-pack.c:1856
+#: builtin/index-pack.c:1854
 msgid "--object-format cannot be used with --stdin"
 msgstr "--object-format 不能和 --stdin 同時使用"
 
-#: builtin/index-pack.c:1871
+#: builtin/index-pack.c:1869
 msgid "--verify with no packfile name given"
 msgstr "--verify 沒有提供 packfile 名稱參數"
 
-#: builtin/index-pack.c:1937 builtin/unpack-objects.c:584
+#: builtin/index-pack.c:1935 builtin/unpack-objects.c:584
 msgid "fsck error in pack objects"
 msgstr "在打包物件中 fsck 檢查發生錯誤"
 
@@ -16514,56 +16310,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "沒有從 '%s' 複製範本:%s"
 
-#: builtin/init-db.c:262
+#: builtin/init-db.c:263
 #, c-format
 msgid "invalid initial branch name: '%s'"
 msgstr "無效的初始分支名稱:'%s'"
 
-#: builtin/init-db.c:353
+#: builtin/init-db.c:354
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "不能處理 %d 類型的檔案"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:357
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "不能移動 %s 至 %s"
 
-#: builtin/init-db.c:372
+#: builtin/init-db.c:373
 msgid "attempt to reinitialize repository with different hash"
 msgstr "嘗試以不同的雜湊值重新初始化版本庫"
 
-#: builtin/init-db.c:396 builtin/init-db.c:399
+#: builtin/init-db.c:397 builtin/init-db.c:400
 #, c-format
 msgid "%s already exists"
 msgstr "%s 已經存在"
 
-#: builtin/init-db.c:431
+#: builtin/init-db.c:432
 #, c-format
 msgid "re-init: ignored --initial-branch=%s"
 msgstr "re-init: 忽略 --initial-branch=%s"
 
-#: builtin/init-db.c:462
+#: builtin/init-db.c:463
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "重新初始化已存在的共享 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:464
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "重新初始化已存在的 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:467
+#: builtin/init-db.c:468
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "已初始化空的共享 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:468
+#: builtin/init-db.c:469
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "已初始化空的 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:517
+#: builtin/init-db.c:518
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -16571,53 +16367,53 @@
 "git init [-q | --quiet] [--bare] [--template=<範本目錄>] [--shared[=<權限>]] "
 "[<目錄>]"
 
-#: builtin/init-db.c:543
+#: builtin/init-db.c:544
 msgid "permissions"
 msgstr "權限"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:545
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "指定 git 版本庫是多個使用者之間共享的"
 
-#: builtin/init-db.c:550
+#: builtin/init-db.c:551
 msgid "override the name of the initial branch"
 msgstr "覆蓋初始分支的名稱"
 
-#: builtin/init-db.c:551 builtin/verify-pack.c:74
+#: builtin/init-db.c:552 builtin/verify-pack.c:74
 msgid "hash"
 msgstr "雜湊"
 
-#: builtin/init-db.c:552 builtin/show-index.c:22 builtin/verify-pack.c:75
+#: builtin/init-db.c:553 builtin/show-index.c:22 builtin/verify-pack.c:75
 msgid "specify the hash algorithm to use"
 msgstr "指定要使用的雜湊算法"
 
-#: builtin/init-db.c:559
+#: builtin/init-db.c:560
 msgid "--separate-git-dir and --bare are mutually exclusive"
 msgstr "--separate-git-dir 和 --bare 互斥"
 
-#: builtin/init-db.c:590 builtin/init-db.c:595
+#: builtin/init-db.c:591 builtin/init-db.c:596
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "不能建立目錄 %s"
 
-#: builtin/init-db.c:599 builtin/init-db.c:654
+#: builtin/init-db.c:600 builtin/init-db.c:655
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "不能切換目錄到 %s"
 
-#: builtin/init-db.c:626
+#: builtin/init-db.c:627
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr "不允許 %s(或 --work-tree=<目錄>)而沒有指定 %s(或 --git-dir=<目錄>)"
 
-#: builtin/init-db.c:678
+#: builtin/init-db.c:679
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "不能存取工作區 '%s'"
 
-#: builtin/init-db.c:683
+#: builtin/init-db.c:684
 msgid "--separate-git-dir incompatible with bare repository"
 msgstr "--separate-git-dir 與純版本庫不相容"
 
@@ -16724,85 +16520,85 @@
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<範圍>:<檔案> 和 pathspec 不能同時使用"
 
-#: builtin/log.c:303
+#: builtin/log.c:306
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "最終輸出:%d %s\n"
 
-#: builtin/log.c:568
+#: builtin/log.c:571
 #, c-format
 msgid "git show %s: bad file"
 msgstr "git show %s: 損壞的檔案"
 
-#: builtin/log.c:583 builtin/log.c:673
+#: builtin/log.c:586 builtin/log.c:676
 #, c-format
 msgid "could not read object %s"
 msgstr "不能讀取物件 %s"
 
-#: builtin/log.c:698
+#: builtin/log.c:701
 #, c-format
 msgid "unknown type: %d"
 msgstr "未知類型:%d"
 
-#: builtin/log.c:843
+#: builtin/log.c:846
 #, c-format
 msgid "%s: invalid cover from description mode"
 msgstr "%s:從描述產生附函的模式無效"
 
-#: builtin/log.c:850
+#: builtin/log.c:853
 msgid "format.headers without value"
 msgstr "format.headers 沒有值"
 
-#: builtin/log.c:979
+#: builtin/log.c:982
 #, c-format
 msgid "cannot open patch file %s"
 msgstr "無法開啟修補檔案 %s"
 
-#: builtin/log.c:996
+#: builtin/log.c:999
 msgid "need exactly one range"
 msgstr "只需要一個範圍"
 
-#: builtin/log.c:1006
+#: builtin/log.c:1009
 msgid "not a range"
 msgstr "不是一個範圍"
 
-#: builtin/log.c:1170
+#: builtin/log.c:1173
 msgid "cover letter needs email format"
 msgstr "附函需要信件位址格式"
 
-#: builtin/log.c:1176
+#: builtin/log.c:1179
 msgid "failed to create cover-letter file"
 msgstr "無法建立附函檔案"
 
-#: builtin/log.c:1263
+#: builtin/log.c:1266
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "不正常的 in-reply-to:%s"
 
-#: builtin/log.c:1290
+#: builtin/log.c:1293
 msgid "git format-patch [<options>] [<since> | <revision-range>]"
 msgstr "git format-patch [<選項>] [<從> | <版本範圍>]"
 
-#: builtin/log.c:1348
+#: builtin/log.c:1351
 msgid "two output directories?"
 msgstr "兩個輸出目錄?"
 
-#: builtin/log.c:1499 builtin/log.c:2326 builtin/log.c:2328 builtin/log.c:2340
+#: builtin/log.c:1502 builtin/log.c:2328 builtin/log.c:2330 builtin/log.c:2342
 #, c-format
 msgid "unknown commit %s"
 msgstr "未知提交 %s"
 
-#: builtin/log.c:1510 builtin/replace.c:58 builtin/replace.c:207
+#: builtin/log.c:1513 builtin/replace.c:58 builtin/replace.c:207
 #: builtin/replace.c:210
 #, c-format
 msgid "failed to resolve '%s' as a valid ref"
 msgstr "無法將 '%s' 解析為一個有效引用"
 
-#: builtin/log.c:1519
+#: builtin/log.c:1522
 msgid "could not find exact merge base"
 msgstr "不能找到準確的合併基礎"
 
-#: builtin/log.c:1529
+#: builtin/log.c:1532
 msgid ""
 "failed to get upstream, if you want to record base commit automatically,\n"
 "please use git branch --set-upstream-to to track a remote branch.\n"
@@ -16812,288 +16608,288 @@
 "git branch --set-upstream-to 來追蹤一個遠端分支。或者你可以透過\n"
 "參數 --base=<基礎提交> 手動指定一個基礎提交"
 
-#: builtin/log.c:1552
+#: builtin/log.c:1555
 msgid "failed to find exact merge base"
 msgstr "無法找到準確的合併基礎"
 
-#: builtin/log.c:1569
+#: builtin/log.c:1572
 msgid "base commit should be the ancestor of revision list"
 msgstr "基礎提交應該是版本列表的祖先"
 
-#: builtin/log.c:1579
+#: builtin/log.c:1582
 msgid "base commit shouldn't be in revision list"
 msgstr "基礎提交不應該出現在版本列表中"
 
-#: builtin/log.c:1637
+#: builtin/log.c:1640
 msgid "cannot get patch id"
 msgstr "無法得到修補檔 id"
 
-#: builtin/log.c:1700
+#: builtin/log.c:1703
 msgid "failed to infer range-diff origin of current series"
 msgstr "無法推斷目前系列的 range-diff 起點"
 
-#: builtin/log.c:1702
+#: builtin/log.c:1705
 #, c-format
 msgid "using '%s' as range-diff origin of current series"
 msgstr "將 '%s' 當作目前系列的 range-diff 起點"
 
-#: builtin/log.c:1746
+#: builtin/log.c:1749
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "使用 [PATCH n/m],即使只有一個修補檔"
 
-#: builtin/log.c:1749
+#: builtin/log.c:1752
 msgid "use [PATCH] even with multiple patches"
 msgstr "使用 [PATCH],即使有多個修補檔"
 
-#: builtin/log.c:1753
+#: builtin/log.c:1756
 msgid "print patches to standard out"
 msgstr "列印修補檔到標準輸出"
 
-#: builtin/log.c:1755
+#: builtin/log.c:1758
 msgid "generate a cover letter"
 msgstr "生成一封附函"
 
-#: builtin/log.c:1757
+#: builtin/log.c:1760
 msgid "use simple number sequence for output file names"
 msgstr "使用簡單的數字序列作為輸出檔案名"
 
-#: builtin/log.c:1758
+#: builtin/log.c:1761
 msgid "sfx"
 msgstr "後綴"
 
-#: builtin/log.c:1759
+#: builtin/log.c:1762
 msgid "use <sfx> instead of '.patch'"
 msgstr "使用 <後綴> 代替 '.patch'"
 
-#: builtin/log.c:1761
+#: builtin/log.c:1764
 msgid "start numbering patches at <n> instead of 1"
 msgstr "修補檔以 <n> 開始編號,而不是1"
 
-#: builtin/log.c:1762
+#: builtin/log.c:1765
 msgid "reroll-count"
 msgstr "reroll-count"
 
-#: builtin/log.c:1763
+#: builtin/log.c:1766
 msgid "mark the series as Nth re-roll"
 msgstr "標記修補檔系列是第幾次重製"
 
-#: builtin/log.c:1765
+#: builtin/log.c:1768
 msgid "max length of output filename"
 msgstr "輸出檔名的最大長度"
 
-#: builtin/log.c:1767
+#: builtin/log.c:1770
 msgid "use [RFC PATCH] instead of [PATCH]"
 msgstr "使用 [RFC PATCH] 代替 [PATCH]"
 
-#: builtin/log.c:1770
+#: builtin/log.c:1773
 msgid "cover-from-description-mode"
 msgstr "從描述產生附函的模式"
 
-#: builtin/log.c:1771
+#: builtin/log.c:1774
 msgid "generate parts of a cover letter based on a branch's description"
 msgstr "基於分支描述產生部分附函"
 
-#: builtin/log.c:1773
+#: builtin/log.c:1776
 msgid "use [<prefix>] instead of [PATCH]"
 msgstr "使用 [<前綴>] 代替 [PATCH]"
 
-#: builtin/log.c:1776
+#: builtin/log.c:1779
 msgid "store resulting files in <dir>"
 msgstr "把結果檔案儲存在 <目錄>"
 
-#: builtin/log.c:1779
+#: builtin/log.c:1782
 msgid "don't strip/add [PATCH]"
 msgstr "不刪除/新增 [PATCH]"
 
-#: builtin/log.c:1782
+#: builtin/log.c:1785
 msgid "don't output binary diffs"
 msgstr "不輸出二進位差異"
 
-#: builtin/log.c:1784
+#: builtin/log.c:1787
 msgid "output all-zero hash in From header"
 msgstr "在 From 標頭訊息中輸出全為零的雜湊值"
 
-#: builtin/log.c:1786
+#: builtin/log.c:1789
 msgid "don't include a patch matching a commit upstream"
 msgstr "不包含已在上游提交中的修補檔"
 
-#: builtin/log.c:1788
+#: builtin/log.c:1791
 msgid "show patch format instead of default (patch + stat)"
 msgstr "顯示純修補檔格式而非預設的(修補檔+狀態)"
 
-#: builtin/log.c:1790
+#: builtin/log.c:1793
 msgid "Messaging"
 msgstr "信件傳送"
 
-#: builtin/log.c:1791
+#: builtin/log.c:1794
 msgid "header"
 msgstr "header"
 
-#: builtin/log.c:1792
+#: builtin/log.c:1795
 msgid "add email header"
 msgstr "新增信件頭"
 
-#: builtin/log.c:1793 builtin/log.c:1794
+#: builtin/log.c:1796 builtin/log.c:1797
 msgid "email"
 msgstr "信件位址"
 
-#: builtin/log.c:1793
+#: builtin/log.c:1796
 msgid "add To: header"
 msgstr "新增收件人"
 
-#: builtin/log.c:1794
+#: builtin/log.c:1797
 msgid "add Cc: header"
 msgstr "新增抄送"
 
-#: builtin/log.c:1795
+#: builtin/log.c:1798
 msgid "ident"
 msgstr "標記"
 
-#: builtin/log.c:1796
+#: builtin/log.c:1799
 msgid "set From address to <ident> (or committer ident if absent)"
 msgstr "將 From 位址設定為 <標記>(如若不提供,則用提交者 ID 做為位址)"
 
-#: builtin/log.c:1798
+#: builtin/log.c:1801
 msgid "message-id"
 msgstr "信件標記"
 
-#: builtin/log.c:1799
+#: builtin/log.c:1802
 msgid "make first mail a reply to <message-id>"
 msgstr "使第一封信件作為對 <信件標記> 的回覆"
 
-#: builtin/log.c:1800 builtin/log.c:1803
+#: builtin/log.c:1803 builtin/log.c:1806
 msgid "boundary"
 msgstr "邊界"
 
-#: builtin/log.c:1801
+#: builtin/log.c:1804
 msgid "attach the patch"
 msgstr "附件方式新增修補檔"
 
-#: builtin/log.c:1804
+#: builtin/log.c:1807
 msgid "inline the patch"
 msgstr "內聯顯示修補檔"
 
-#: builtin/log.c:1808
+#: builtin/log.c:1811
 msgid "enable message threading, styles: shallow, deep"
 msgstr "啟用信件線索,風格:淺,深"
 
-#: builtin/log.c:1810
+#: builtin/log.c:1813
 msgid "signature"
 msgstr "簽名"
 
-#: builtin/log.c:1811
+#: builtin/log.c:1814
 msgid "add a signature"
 msgstr "新增一個簽名"
 
-#: builtin/log.c:1812
+#: builtin/log.c:1815
 msgid "base-commit"
 msgstr "基礎提交"
 
-#: builtin/log.c:1813
+#: builtin/log.c:1816
 msgid "add prerequisite tree info to the patch series"
 msgstr "為修補檔列表新增前置樹訊息"
 
-#: builtin/log.c:1816
+#: builtin/log.c:1819
 msgid "add a signature from a file"
 msgstr "從檔案新增一個簽名"
 
-#: builtin/log.c:1817
+#: builtin/log.c:1820
 msgid "don't print the patch filenames"
 msgstr "不要列印修補檔檔案名"
 
-#: builtin/log.c:1819
+#: builtin/log.c:1822
 msgid "show progress while generating patches"
 msgstr "在生成修補檔時顯示進度"
 
-#: builtin/log.c:1821
+#: builtin/log.c:1824
 msgid "show changes against <rev> in cover letter or single patch"
 msgstr "在附函或單個修補檔中顯示和 <rev> 的差異"
 
-#: builtin/log.c:1824
+#: builtin/log.c:1827
 msgid "show changes against <refspec> in cover letter or single patch"
 msgstr "在附函或單個修補檔中顯示和 <refspec> 的差異"
 
-#: builtin/log.c:1826 builtin/range-diff.c:28
+#: builtin/log.c:1829 builtin/range-diff.c:28
 msgid "percentage by which creation is weighted"
 msgstr "建立權重的百分比"
 
-#: builtin/log.c:1913
+#: builtin/log.c:1916
 #, c-format
 msgid "invalid ident line: %s"
 msgstr "包含無效的身份標記:%s"
 
-#: builtin/log.c:1928
+#: builtin/log.c:1931
 msgid "-n and -k are mutually exclusive"
 msgstr "-n 和 -k 互斥"
 
-#: builtin/log.c:1930
+#: builtin/log.c:1933
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
 msgstr "--subject-prefix/--rfc 和 -k 互斥"
 
-#: builtin/log.c:1938
+#: builtin/log.c:1941
 msgid "--name-only does not make sense"
 msgstr "--name-only 無意義"
 
-#: builtin/log.c:1940
+#: builtin/log.c:1943
 msgid "--name-status does not make sense"
 msgstr "--name-status 無意義"
 
-#: builtin/log.c:1942
+#: builtin/log.c:1945
 msgid "--check does not make sense"
 msgstr "--check 無意義"
 
-#: builtin/log.c:1964
+#: builtin/log.c:1967
 msgid "--stdout, --output, and --output-directory are mutually exclusive"
 msgstr "--stdout、--output 和 --output-directory 互斥"
 
-#: builtin/log.c:2087
+#: builtin/log.c:2089
 msgid "--interdiff requires --cover-letter or single patch"
 msgstr "--interdiff 需要 --cover-letter 或單一修補檔"
 
-#: builtin/log.c:2091
+#: builtin/log.c:2093
 msgid "Interdiff:"
 msgstr "版本間差異:"
 
-#: builtin/log.c:2092
+#: builtin/log.c:2094
 #, c-format
 msgid "Interdiff against v%d:"
 msgstr "對 v%d 的版本差異:"
 
-#: builtin/log.c:2098
+#: builtin/log.c:2100
 msgid "--creation-factor requires --range-diff"
 msgstr "--creation-factor 需要 --range-diff"
 
-#: builtin/log.c:2102
+#: builtin/log.c:2104
 msgid "--range-diff requires --cover-letter or single patch"
 msgstr "--range-diff 需要 --cover-letter 或單一修補檔"
 
-#: builtin/log.c:2110
+#: builtin/log.c:2112
 msgid "Range-diff:"
 msgstr "範圍差異:"
 
-#: builtin/log.c:2111
+#: builtin/log.c:2113
 #, c-format
 msgid "Range-diff against v%d:"
 msgstr "對 v%d 的範圍差異:"
 
-#: builtin/log.c:2122
+#: builtin/log.c:2124
 #, c-format
 msgid "unable to read signature file '%s'"
 msgstr "無法讀取簽名檔案 '%s'"
 
-#: builtin/log.c:2158
+#: builtin/log.c:2160
 msgid "Generating patches"
 msgstr "生成修補檔"
 
-#: builtin/log.c:2202
+#: builtin/log.c:2204
 msgid "failed to create output files"
 msgstr "無法建立輸出檔案"
 
-#: builtin/log.c:2261
+#: builtin/log.c:2263
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<上游> [<頭> [<限制>]]]"
 
-#: builtin/log.c:2315
+#: builtin/log.c:2317
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -17291,7 +17087,6 @@
 
 #. TRANSLATORS: keep <> in "<" mail ">" info.
 #: builtin/mailinfo.c:14
-#| msgid "git diff --no-index [<options>] <path> <path>"
 msgid "git mailinfo [<options>] <msg> <patch> < mail >info"
 msgstr "git mailinfo [<選項>] <訊息> <修補檔> < mail >info"
 
@@ -17324,9 +17119,8 @@
 msgstr "重新將中繼資料編碼為這個編碼方式"
 
 #: builtin/mailinfo.c:72
-#, fuzzy
 msgid "use scissors"
-msgstr "使用 scissors"
+msgstr "使用剪刀標記"
 
 #: builtin/mailinfo.c:73
 msgid "<action>"
@@ -17337,9 +17131,8 @@
 msgstr "當找到可列印 CR 字元時所要採取的行為"
 
 #: builtin/mailinfo.c:77
-#, fuzzy
 msgid "use headers in message's body"
-msgstr "在訊息本文部分使用標頭"
+msgstr "在訊息內文中使用標頭"
 
 #: builtin/mailsplit.c:241
 #, c-format
@@ -17460,14 +17253,6 @@
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<選項>] [<提交>...]"
 
-#: builtin/merge.c:59
-msgid "git merge --abort"
-msgstr "git merge --abort"
-
-#: builtin/merge.c:60
-msgid "git merge --continue"
-msgstr "git merge --continue"
-
 #: builtin/merge.c:123
 msgid "switch `m' requires a value"
 msgstr "開關 `m' 需要一個值"
@@ -17611,36 +17396,36 @@
 msgid "'%s' does not point to a commit"
 msgstr "'%s' 沒有指向一個提交"
 
-#: builtin/merge.c:602
+#: builtin/merge.c:603
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "壞的 branch.%s.mergeoptions 字串:%s"
 
-#: builtin/merge.c:728
+#: builtin/merge.c:729
 msgid "Not handling anything other than two heads merge."
 msgstr "未處理兩個頭合併之外的任何動作。"
 
-#: builtin/merge.c:741
+#: builtin/merge.c:742
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive 的未知選項:-X%s"
 
-#: builtin/merge.c:760 t/helper/test-fast-rebase.c:209
+#: builtin/merge.c:761 t/helper/test-fast-rebase.c:223
 #, c-format
 msgid "unable to write %s"
 msgstr "不能寫 %s"
 
-#: builtin/merge.c:812
+#: builtin/merge.c:813
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "不能從 '%s' 讀取"
 
-#: builtin/merge.c:821
+#: builtin/merge.c:822
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr "未提交合並,使用 'git commit' 完成此次合併。\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:828
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
 "especially if it merges an updated upstream into a topic branch.\n"
@@ -17650,83 +17435,83 @@
 "合併到主題分支。\n"
 "\n"
 
-#: builtin/merge.c:832
+#: builtin/merge.c:833
 msgid "An empty message aborts the commit.\n"
 msgstr "空的提交說明會終止提交。\n"
 
-#: builtin/merge.c:835
+#: builtin/merge.c:836
 #, c-format
 msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr "以 '%c' 開始的行將被忽略,而空的提交說明將終止提交。\n"
 
-#: builtin/merge.c:888
+#: builtin/merge.c:889
 msgid "Empty commit message."
 msgstr "空提交說明。"
 
-#: builtin/merge.c:903
+#: builtin/merge.c:904
 #, c-format
 msgid "Wonderful.\n"
 msgstr "太棒了。\n"
 
-#: builtin/merge.c:964
+#: builtin/merge.c:965
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "自動合併失敗,修正衝突然後提交修正的結果。\n"
 
-#: builtin/merge.c:1003
+#: builtin/merge.c:1004
 msgid "No current branch."
 msgstr "沒有目前分支。"
 
-#: builtin/merge.c:1005
+#: builtin/merge.c:1006
 msgid "No remote for the current branch."
 msgstr "目前分支沒有對應的遠端版本庫。"
 
-#: builtin/merge.c:1007
+#: builtin/merge.c:1008
 msgid "No default upstream defined for the current branch."
 msgstr "目前分支沒有定義預設的上游分支。"
 
-#: builtin/merge.c:1012
+#: builtin/merge.c:1013
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "對於 %s 沒有來自 %s 的遠端追蹤分支"
 
-#: builtin/merge.c:1069
+#: builtin/merge.c:1070
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "環境 '%2$s' 中存在壞的取值 '%1$s'"
 
-#: builtin/merge.c:1172
+#: builtin/merge.c:1173
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "不能在 %s 中合併:%s"
 
-#: builtin/merge.c:1206
+#: builtin/merge.c:1207
 msgid "not something we can merge"
 msgstr "不能合併"
 
-#: builtin/merge.c:1316
+#: builtin/merge.c:1317
 msgid "--abort expects no arguments"
 msgstr "--abort 不帶參數"
 
-#: builtin/merge.c:1320
+#: builtin/merge.c:1321
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "沒有要終止的合併(MERGE_HEAD 遺失)。"
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1339
 msgid "--quit expects no arguments"
 msgstr "--quit 不帶參數"
 
-#: builtin/merge.c:1351
+#: builtin/merge.c:1352
 msgid "--continue expects no arguments"
 msgstr "--continue 不帶參數"
 
-#: builtin/merge.c:1355
+#: builtin/merge.c:1356
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "沒有進行中的合併(MERGE_HEAD 遺失)。"
 
-#: builtin/merge.c:1371
+#: builtin/merge.c:1372
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17734,7 +17519,7 @@
 "您尚未結束您的合併(存在 MERGE_HEAD)。\n"
 "請在合併前先提交您的修改。"
 
-#: builtin/merge.c:1378
+#: builtin/merge.c:1379
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -17742,88 +17527,88 @@
 "您尚未結束您的揀選(存在 CHERRY_PICK_HEAD)。\n"
 "請在合併前先提交您的修改。"
 
-#: builtin/merge.c:1381
+#: builtin/merge.c:1382
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "您尚未結束您的揀選(存在 CHERRY_PICK_HEAD)。"
 
-#: builtin/merge.c:1395
+#: builtin/merge.c:1396
 msgid "You cannot combine --squash with --no-ff."
 msgstr "您不能將 --squash 和 --no-ff 組合使用。"
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1398
 msgid "You cannot combine --squash with --commit."
 msgstr "您不能將 --squash 和 --commit 組合使用。"
 
-#: builtin/merge.c:1413
+#: builtin/merge.c:1414
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "未指定提交並且 merge.defaultToUpstream 未設定。"
 
-#: builtin/merge.c:1430
+#: builtin/merge.c:1431
 msgid "Squash commit into empty head not supported yet"
 msgstr "尚不支援到空分支的壓縮提交"
 
-#: builtin/merge.c:1432
+#: builtin/merge.c:1433
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "到空分支的非快轉式提交沒有意義"
 
-#: builtin/merge.c:1437
+#: builtin/merge.c:1438
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 不能被合併"
 
-#: builtin/merge.c:1439
+#: builtin/merge.c:1440
 msgid "Can merge only exactly one commit into empty head"
 msgstr "只能將一個提交合並到空分支上"
 
-#: builtin/merge.c:1520
+#: builtin/merge.c:1521
 msgid "refusing to merge unrelated histories"
 msgstr "拒絕合併無關的歷史"
 
-#: builtin/merge.c:1539
+#: builtin/merge.c:1540
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "更新 %s..%s\n"
 
-#: builtin/merge.c:1585
+#: builtin/merge.c:1587
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "嘗試非常小的索引內合併...\n"
 
-#: builtin/merge.c:1592
+#: builtin/merge.c:1594
 #, c-format
 msgid "Nope.\n"
 msgstr "無。\n"
 
-#: builtin/merge.c:1623
+#: builtin/merge.c:1625
 msgid "Not possible to fast-forward, aborting."
 msgstr "無法快轉,終止。"
 
-#: builtin/merge.c:1651 builtin/merge.c:1716
+#: builtin/merge.c:1653 builtin/merge.c:1719
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "將樹回滾至原始狀態...\n"
 
-#: builtin/merge.c:1655
+#: builtin/merge.c:1657
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "嘗試合併策略 %s...\n"
 
-#: builtin/merge.c:1707
+#: builtin/merge.c:1709
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "沒有合併策略處理此合併。\n"
 
-#: builtin/merge.c:1709
+#: builtin/merge.c:1711
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "使用策略 %s 合併失敗。\n"
 
-#: builtin/merge.c:1718
+#: builtin/merge.c:1721
 #, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "使用 %s 以準備手動解決。\n"
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "使用 %s 策略,準備自行解決。\n"
 
-#: builtin/merge.c:1732
+#: builtin/merge.c:1735
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "自動合併進展順利,按要求在提交前停止\n"
@@ -17886,26 +17671,18 @@
 msgstr "允許建立一個以上的樹"
 
 #: builtin/multi-pack-index.c:10
-#| msgid ""
-#| "git multi-pack-index [<options>] (write|verify|expire|repack --batch-"
-#| "size=<size>)"
 msgid "git multi-pack-index [<options>] write [--preferred-pack=<pack>]"
 msgstr "git multi-pack-index [<選項>] write [--preferred-pack=<包>]"
 
 #: builtin/multi-pack-index.c:13
-#| msgid "git upload-pack [<options>] <dir>"
 msgid "git multi-pack-index [<options>] verify"
 msgstr "git multi-pack-index [<選項>] verify"
 
 #: builtin/multi-pack-index.c:16
-#| msgid "git upload-pack [<options>] <dir>"
 msgid "git multi-pack-index [<options>] expire"
 msgstr "git multi-pack-index [<選項>] expire"
 
 #: builtin/multi-pack-index.c:19
-#| msgid ""
-#| "git multi-pack-index [<options>] (write|verify|expire|repack --batch-"
-#| "size=<size>)"
 msgid "git multi-pack-index [<options>] repack [--batch-size=<size>]"
 msgstr "git multi-pack-index [<選項>] repack [--batch-size=<大小>]"
 
@@ -17927,7 +17704,7 @@
 "larger than this size"
 msgstr "在 repack 期間,將較小尺寸的包檔案收集到大於此大小的批次中"
 
-#: builtin/multi-pack-index.c:180
+#: builtin/multi-pack-index.c:179
 #, c-format
 msgid "unrecognized subcommand: %s"
 msgstr "未識別的子指令:%s"
@@ -18456,7 +18233,7 @@
 msgid "read object names from the standard input"
 msgstr "從標準輸入讀取物件名稱"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:148
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:146
 msgid "do not remove, show only"
 msgstr "不刪除,只顯示"
 
@@ -18472,22 +18249,22 @@
 msgid "use notes from <notes-ref>"
 msgstr "從 <註解引用> 使用註解"
 
-#: builtin/notes.c:1034 builtin/stash.c:1739
+#: builtin/notes.c:1034 builtin/stash.c:1735
 #, c-format
 msgid "unknown subcommand: %s"
 msgstr "未知子指令:%s"
 
-#: builtin/pack-objects.c:54
+#: builtin/pack-objects.c:182
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects --stdout [<選項>...] [< <引用列表> | < <物件列表>]"
 
-#: builtin/pack-objects.c:55
+#: builtin/pack-objects.c:183
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<選項>...] <前綴名稱> [< <引用列表> | < <物件列表>]"
 
-#: builtin/pack-objects.c:440
+#: builtin/pack-objects.c:572
 #, c-format
 msgid ""
 "write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -18495,106 +18272,106 @@
 msgstr ""
 "write_reuse_object:無法定位 %1$s,預期在 %3$s 包中的 %2$<PRIuMAX> 偏移量"
 
-#: builtin/pack-objects.c:448
+#: builtin/pack-objects.c:580
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 錯的包物件 CRC"
 
-#: builtin/pack-objects.c:459
+#: builtin/pack-objects.c:591
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 損壞的包物件"
 
-#: builtin/pack-objects.c:590
+#: builtin/pack-objects.c:722
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "發現物件 %s 遞迴 delta"
 
-#: builtin/pack-objects.c:801
+#: builtin/pack-objects.c:941
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 個物件,預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:896
+#: builtin/pack-objects.c:1036
 #, c-format
 msgid "expected object at offset %<PRIuMAX> in pack %s"
 msgstr "預期 %2$s 包中的偏移 %1$<PRIuMAX> 有物件"
 
-#: builtin/pack-objects.c:1015
+#: builtin/pack-objects.c:1155
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "停用 bitmap 寫入,因為 pack.packSizeLimit 設定使得包被切分為多個"
 
-#: builtin/pack-objects.c:1028
+#: builtin/pack-objects.c:1168
 msgid "Writing objects"
 msgstr "寫入物件中"
 
-#: builtin/pack-objects.c:1089 builtin/update-index.c:90
+#: builtin/pack-objects.c:1229 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "對 %s 呼叫 stat 失敗"
 
-#: builtin/pack-objects.c:1141
+#: builtin/pack-objects.c:1281
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "寫入 %<PRIu32> 個物件而預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:1383
+#: builtin/pack-objects.c:1523
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "停用 bitmap 寫入,因為一些物件將不會被打包"
 
-#: builtin/pack-objects.c:1831
+#: builtin/pack-objects.c:1971
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 壓縮中 delta 基準位移越界"
 
-#: builtin/pack-objects.c:1840
+#: builtin/pack-objects.c:1980
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基準位移越界"
 
-#: builtin/pack-objects.c:2121
+#: builtin/pack-objects.c:2261
 msgid "Counting objects"
 msgstr "物件計數中"
 
-#: builtin/pack-objects.c:2266
+#: builtin/pack-objects.c:2426
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "無法解析物件 %s 標頭訊息"
 
-#: builtin/pack-objects.c:2336 builtin/pack-objects.c:2352
-#: builtin/pack-objects.c:2362
+#: builtin/pack-objects.c:2496 builtin/pack-objects.c:2512
+#: builtin/pack-objects.c:2522
 #, c-format
 msgid "object %s cannot be read"
 msgstr "物件 %s 無法讀取"
 
-#: builtin/pack-objects.c:2339 builtin/pack-objects.c:2366
+#: builtin/pack-objects.c:2499 builtin/pack-objects.c:2526
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "物件 %s 不一致的物件長度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2376
+#: builtin/pack-objects.c:2536
 msgid "suboptimal pack - out of memory"
 msgstr "次優(suboptimal)打包 - 記憶體不足"
 
-#: builtin/pack-objects.c:2691
+#: builtin/pack-objects.c:2851
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 個執行緒進行壓縮"
 
-#: builtin/pack-objects.c:2830
+#: builtin/pack-objects.c:2990
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "無法為標籤 %s 壓縮物件"
 
-#: builtin/pack-objects.c:2916
+#: builtin/pack-objects.c:3076
 msgid "Compressing objects"
 msgstr "壓縮物件中"
 
-#: builtin/pack-objects.c:2922
+#: builtin/pack-objects.c:3082
 msgid "inconsistency with delta count"
 msgstr "不一致的差異計數"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3161
 #, c-format
 msgid ""
 "value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -18603,23 +18380,23 @@
 "uploadpack.blobpackfileuri 的值格式必須為 '<object-hash> <pack-hash> "
 "<uri>' (收到 '%s')"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3164
 #, c-format
 msgid ""
 "object already configured in another uploadpack.blobpackfileuri (got '%s')"
 msgstr "物件已經在其他 uploadpack.blobpackfileuri 設定過 (收到 '%s')"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3199
 #, c-format
 msgid "could not get type of object %s in pack %s"
 msgstr "無法取得 %2$s 包中 %1$s 物件的類型"
 
-#: builtin/pack-objects.c:3161 builtin/pack-objects.c:3175
+#: builtin/pack-objects.c:3321 builtin/pack-objects.c:3335
 #, c-format
 msgid "could not find pack '%s'"
 msgstr "找不到「%s」包"
 
-#: builtin/pack-objects.c:3218
+#: builtin/pack-objects.c:3378
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -18628,7 +18405,7 @@
 "預期邊界物件(edge object)ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:3224
+#: builtin/pack-objects.c:3384
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -18637,246 +18414,246 @@
 "預期物件 ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:3322
+#: builtin/pack-objects.c:3482
 msgid "invalid value for --missing"
 msgstr "選項 --missing 的值無效"
 
-#: builtin/pack-objects.c:3381 builtin/pack-objects.c:3490
+#: builtin/pack-objects.c:3541 builtin/pack-objects.c:3650
 msgid "cannot open pack index"
 msgstr "無法開啟包檔案索引"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3572
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "無法檢查 %s 處的鬆散物件"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3658
 msgid "unable to force loose object"
 msgstr "無法強制鬆散物件"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3788
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一個版本 '%s'"
 
-#: builtin/pack-objects.c:3631
+#: builtin/pack-objects.c:3791 builtin/rev-parse.c:1061
 #, c-format
 msgid "bad revision '%s'"
 msgstr "壞的版本 '%s'"
 
-#: builtin/pack-objects.c:3659
+#: builtin/pack-objects.c:3819
 msgid "unable to add recent objects"
 msgstr "無法新增最近的物件"
 
-#: builtin/pack-objects.c:3712
+#: builtin/pack-objects.c:3872
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支援的索引版本 %s"
 
-#: builtin/pack-objects.c:3716
+#: builtin/pack-objects.c:3876
 #, c-format
 msgid "bad index version '%s'"
 msgstr "壞的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3755
+#: builtin/pack-objects.c:3915
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<位移>]"
 
-#: builtin/pack-objects.c:3756
+#: builtin/pack-objects.c:3916
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本來寫包索引檔案"
 
-#: builtin/pack-objects.c:3759
+#: builtin/pack-objects.c:3919
 msgid "maximum size of each output pack file"
 msgstr "每個輸出包的最大尺寸"
 
-#: builtin/pack-objects.c:3761
+#: builtin/pack-objects.c:3921
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略從備用物件儲存裡借用物件"
 
-#: builtin/pack-objects.c:3763
+#: builtin/pack-objects.c:3923
 msgid "ignore packed objects"
 msgstr "忽略包物件"
 
-#: builtin/pack-objects.c:3765
+#: builtin/pack-objects.c:3925
 msgid "limit pack window by objects"
 msgstr "限制打包視窗的物件數"
 
-#: builtin/pack-objects.c:3767
+#: builtin/pack-objects.c:3927
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除物件數量限制外設定打包視窗的記憶體限制"
 
-#: builtin/pack-objects.c:3769
+#: builtin/pack-objects.c:3929
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允許的 delta 鏈的最大長度"
 
-#: builtin/pack-objects.c:3771
+#: builtin/pack-objects.c:3931
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3773
+#: builtin/pack-objects.c:3933
 msgid "reuse existing objects"
 msgstr "重用已存在的物件"
 
-#: builtin/pack-objects.c:3775
+#: builtin/pack-objects.c:3935
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 物件"
 
-#: builtin/pack-objects.c:3777
+#: builtin/pack-objects.c:3937
 msgid "use threads when searching for best delta matches"
 msgstr "使用執行緒查詢最佳 delta 符合"
 
-#: builtin/pack-objects.c:3779
+#: builtin/pack-objects.c:3939
 msgid "do not create an empty pack output"
 msgstr "不建立空的包輸出"
 
-#: builtin/pack-objects.c:3781
+#: builtin/pack-objects.c:3941
 msgid "read revision arguments from standard input"
 msgstr "從標準輸入讀取版本號參數"
 
-#: builtin/pack-objects.c:3783
+#: builtin/pack-objects.c:3943
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的物件"
 
-#: builtin/pack-objects.c:3786
+#: builtin/pack-objects.c:3946
 msgid "include objects reachable from any reference"
 msgstr "包括可以從任何引用存取到的物件"
 
-#: builtin/pack-objects.c:3789
+#: builtin/pack-objects.c:3949
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日誌引用到的物件"
 
-#: builtin/pack-objects.c:3792
+#: builtin/pack-objects.c:3952
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的物件"
 
-#: builtin/pack-objects.c:3795
+#: builtin/pack-objects.c:3955
 msgid "read packs from stdin"
 msgstr "從標準輸入中讀取包"
 
-#: builtin/pack-objects.c:3797
+#: builtin/pack-objects.c:3957
 msgid "output pack to stdout"
 msgstr "輸出包到標準輸出"
 
-#: builtin/pack-objects.c:3799
+#: builtin/pack-objects.c:3959
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包物件的標籤物件"
 
-#: builtin/pack-objects.c:3801
+#: builtin/pack-objects.c:3961
 msgid "keep unreachable objects"
 msgstr "維持無法取得的物件"
 
-#: builtin/pack-objects.c:3803
+#: builtin/pack-objects.c:3963
 msgid "pack loose unreachable objects"
 msgstr "打包鬆散的無法取得物件"
 
-#: builtin/pack-objects.c:3805
+#: builtin/pack-objects.c:3965
 msgid "unpack unreachable objects newer than <time>"
 msgstr "將比提供 <時間> 新的無法存取的物件解包"
 
-#: builtin/pack-objects.c:3808
+#: builtin/pack-objects.c:3968
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可以取得性演算法"
 
-#: builtin/pack-objects.c:3810
+#: builtin/pack-objects.c:3970
 msgid "create thin packs"
 msgstr "建立精簡包"
 
-#: builtin/pack-objects.c:3812
+#: builtin/pack-objects.c:3972
 msgid "create packs suitable for shallow fetches"
 msgstr "建立適合淺複製版本庫取得的包"
 
-#: builtin/pack-objects.c:3814
+#: builtin/pack-objects.c:3974
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 檔案的包"
 
-#: builtin/pack-objects.c:3816
+#: builtin/pack-objects.c:3976
 msgid "ignore this pack"
 msgstr "忽略該 pack"
 
-#: builtin/pack-objects.c:3818
+#: builtin/pack-objects.c:3978
 msgid "pack compression level"
 msgstr "打包壓縮級別"
 
-#: builtin/pack-objects.c:3820
+#: builtin/pack-objects.c:3980
 msgid "do not hide commits by grafts"
 msgstr "顯示被移植隱藏的提交"
 
-#: builtin/pack-objects.c:3822
+#: builtin/pack-objects.c:3982
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的話)以提高物件計數時的速度"
 
-#: builtin/pack-objects.c:3824
+#: builtin/pack-objects.c:3984
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同時建立 bitmap 索引"
 
-#: builtin/pack-objects.c:3828
+#: builtin/pack-objects.c:3988
 msgid "write a bitmap index if possible"
 msgstr "如果可能,寫 bitmap 索引"
 
-#: builtin/pack-objects.c:3832
+#: builtin/pack-objects.c:3992
 msgid "handling for missing objects"
 msgstr "處理遺失的物件"
 
-#: builtin/pack-objects.c:3835
+#: builtin/pack-objects.c:3995
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor packfile 中的物件"
 
-#: builtin/pack-objects.c:3837
+#: builtin/pack-objects.c:3997
 msgid "respect islands during delta compression"
 msgstr "在增量壓縮時參考資料島"
 
-#: builtin/pack-objects.c:3839
+#: builtin/pack-objects.c:3999
 msgid "protocol"
 msgstr "通訊協定"
 
-#: builtin/pack-objects.c:3840
+#: builtin/pack-objects.c:4000
 msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
 msgstr "排除任何設定過,使用此通訊協定的 uploadpack.blobpackfileuri"
 
-#: builtin/pack-objects.c:3873
+#: builtin/pack-objects.c:4033
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量鏈深度 %d 太深了,強制為 %d"
 
-#: builtin/pack-objects.c:3878
+#: builtin/pack-objects.c:4038
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "設定 pack.deltaCacheLimit 太高了,強制為 %d"
 
-#: builtin/pack-objects.c:3934
+#: builtin/pack-objects.c:4094
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 來組建傳輸用的包檔案"
 
-#: builtin/pack-objects.c:3936
+#: builtin/pack-objects.c:4096
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包檔案大小是 1 MiB"
 
-#: builtin/pack-objects.c:3941
+#: builtin/pack-objects.c:4101
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用於建立一個可索引包"
 
-#: builtin/pack-objects.c:3944
+#: builtin/pack-objects.c:4104
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不相容"
 
-#: builtin/pack-objects.c:3950
+#: builtin/pack-objects.c:4110
 msgid "cannot use --filter without --stdout"
 msgstr "不能在沒有 --stdout 的情況下使用 --filter"
 
-#: builtin/pack-objects.c:3952
+#: builtin/pack-objects.c:4112
 msgid "cannot use --filter with --stdin-packs"
 msgstr "無法將 --filter 及 --stdin-packs 結合使用"
 
-#: builtin/pack-objects.c:3956
+#: builtin/pack-objects.c:4116
 msgid "cannot use internal rev list with --stdin-packs"
 msgstr "無法將內部版本清單與 --stdin-packs 結合使用"
 
-#: builtin/pack-objects.c:4015
+#: builtin/pack-objects.c:4175
 msgid "Enumerating objects"
 msgstr "枚舉物件"
 
-#: builtin/pack-objects.c:4052
+#: builtin/pack-objects.c:4212
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18974,7 +18751,7 @@
 
 #: builtin/pull.c:201
 msgid "number of submodules pulled in parallel"
-msgstr "並發拉取的子模組的數量"
+msgstr "並行拉取的子模組數量"
 
 #: builtin/pull.c:317
 #, c-format
@@ -19089,19 +18866,19 @@
 "pull 命令時傳遞 --rebase、--no-rebase 或 --ff-only 覆蓋\n"
 "設定的預設值。\n"
 
-#: builtin/pull.c:991
+#: builtin/pull.c:990
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "更新尚未誕生的分支,變更新增至索引。"
 
-#: builtin/pull.c:995
+#: builtin/pull.c:994
 msgid "pull with rebase"
 msgstr "重定基底式拉取"
 
-#: builtin/pull.c:996
+#: builtin/pull.c:995
 msgid "please commit or stash them."
 msgstr "請提交或儲藏它們。"
 
-#: builtin/pull.c:1021
+#: builtin/pull.c:1020
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -19111,7 +18888,7 @@
 "fetch 更新了目前的分支。快轉您的工作區\n"
 "至提交 %s。"
 
-#: builtin/pull.c:1027
+#: builtin/pull.c:1026
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -19128,15 +18905,15 @@
 "$ git reset --hard\n"
 "復原之前的狀態。"
 
-#: builtin/pull.c:1042
+#: builtin/pull.c:1041
 msgid "Cannot merge multiple branches into empty head."
 msgstr "無法將多個分支合併到空分支。"
 
-#: builtin/pull.c:1046
+#: builtin/pull.c:1045
 msgid "Cannot rebase onto multiple branches."
 msgstr "無法重定基底到多個分支。"
 
-#: builtin/pull.c:1067
+#: builtin/pull.c:1065
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "本機子模組中有修改,無法重定基底"
 
@@ -19198,7 +18975,7 @@
 "\n"
 "    git push %s HEAD:<遠端分支名字>\n"
 
-#: builtin/push.c:194
+#: builtin/push.c:191
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -19211,12 +18988,17 @@
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:202
+#: builtin/push.c:199
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "目前分支 %s 有多個上游分支,拒絕推送。"
 
-#: builtin/push.c:205
+#: builtin/push.c:217
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr "您沒有為推送指定任何引用規格,並且 push.default 為 \"nothing\"。"
+
+#: builtin/push.c:243
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -19226,12 +19008,7 @@
 "您正推送至遠端 '%s'(其並非目前分支 '%s' 的上游),\n"
 "而沒有告訴我要推送什麼、更新哪個遠端分支。"
 
-#: builtin/push.c:260
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
-msgstr "您沒有為推送指定任何引用規格,並且 push.default 為 \"nothing\"。"
-
-#: builtin/push.c:267
+#: builtin/push.c:258
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -19242,7 +19019,7 @@
 "再次推送前,先與遠端變更合併(如 'git pull ...')。詳見\n"
 "'git push --help' 中的 'Note about fast-forwards' 小節。"
 
-#: builtin/push.c:273
+#: builtin/push.c:264
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -19250,10 +19027,10 @@
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 "更新被拒絕,因為推送的一個分支的最新提交落後於其對應的遠端分支。\n"
-"檢出該分支並整合遠端變更(如 'git pull ...'),然後再推送。詳見\n"
+"簽出該分支並整合遠端變更(如 'git pull ...'),然後再推送。詳見\n"
 "'git push --help' 中的 'Note about fast-forwards' 小節。"
 
-#: builtin/push.c:279
+#: builtin/push.c:270
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -19266,11 +19043,11 @@
 "(如 'git pull ...')。\n"
 "詳見 'git push --help' 中的 'Note about fast-forwards' 小節。"
 
-#: builtin/push.c:286
+#: builtin/push.c:277
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "更新被拒絕,因為該標籤在遠端已經存在。"
 
-#: builtin/push.c:289
+#: builtin/push.c:280
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -19279,7 +19056,7 @@
 "如果不使用 '--force' 參數,您不能更新一個指向非提交物件的遠端引用,\n"
 "也不能更新遠端引用讓其指向一個非提交物件。\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:285
 msgid ""
 "Updates were rejected because the tip of the remote-tracking\n"
 "branch has been updated since the last checkout. You may want\n"
@@ -19290,103 +19067,103 @@
 "您可能會希望先將這些變更整合至本地(例如:‘git pull …’)\n"
 "最後才強制更新。\n"
 
-#: builtin/push.c:364
+#: builtin/push.c:355
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "推送到 %s\n"
 
-#: builtin/push.c:371
+#: builtin/push.c:362
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "推送一些引用到 '%s' 失敗"
 
-#: builtin/push.c:553
+#: builtin/push.c:544
 msgid "repository"
 msgstr "版本庫"
 
-#: builtin/push.c:554 builtin/send-pack.c:189
+#: builtin/push.c:545 builtin/send-pack.c:189
 msgid "push all refs"
 msgstr "推送所有引用"
 
-#: builtin/push.c:555 builtin/send-pack.c:191
+#: builtin/push.c:546 builtin/send-pack.c:191
 msgid "mirror all refs"
 msgstr "鏡像所有引用"
 
-#: builtin/push.c:557
+#: builtin/push.c:548
 msgid "delete refs"
 msgstr "刪除引用"
 
-#: builtin/push.c:558
+#: builtin/push.c:549
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "推送標籤(不能使用 --all or --mirror)"
 
-#: builtin/push.c:561 builtin/send-pack.c:192
+#: builtin/push.c:552 builtin/send-pack.c:192
 msgid "force updates"
 msgstr "強制更新"
 
-#: builtin/push.c:562 builtin/send-pack.c:204
+#: builtin/push.c:553 builtin/send-pack.c:204
 msgid "<refname>:<expect>"
 msgstr "<引用名>:<期望值>"
 
-#: builtin/push.c:563 builtin/send-pack.c:205
+#: builtin/push.c:554 builtin/send-pack.c:205
 msgid "require old value of ref to be at this value"
 msgstr "要求引用舊的取值為設定值"
 
-#: builtin/push.c:566 builtin/send-pack.c:208
+#: builtin/push.c:557 builtin/send-pack.c:208
 msgid "require remote updates to be integrated locally"
 msgstr "需要將遠端更新整合進本地"
 
-#: builtin/push.c:569
+#: builtin/push.c:560
 msgid "control recursive pushing of submodules"
 msgstr "控制子模組的遞迴推送"
 
-#: builtin/push.c:570 builtin/send-pack.c:199
+#: builtin/push.c:561 builtin/send-pack.c:199
 msgid "use thin pack"
 msgstr "使用精簡打包"
 
-#: builtin/push.c:571 builtin/push.c:572 builtin/send-pack.c:186
+#: builtin/push.c:562 builtin/push.c:563 builtin/send-pack.c:186
 #: builtin/send-pack.c:187
 msgid "receive pack program"
 msgstr "接收包程式"
 
-#: builtin/push.c:573
+#: builtin/push.c:564
 msgid "set upstream for git pull/status"
 msgstr "設定 git pull/status 的上游"
 
-#: builtin/push.c:576
+#: builtin/push.c:567
 msgid "prune locally removed refs"
 msgstr "清除本機刪除的引用"
 
-#: builtin/push.c:578
+#: builtin/push.c:569
 msgid "bypass pre-push hook"
 msgstr "繞過 pre-push 掛鉤"
 
-#: builtin/push.c:579
+#: builtin/push.c:570
 msgid "push missing but relevant tags"
 msgstr "推送缺少但有關的標籤"
 
-#: builtin/push.c:581 builtin/send-pack.c:193
+#: builtin/push.c:572 builtin/send-pack.c:193
 msgid "GPG sign the push"
 msgstr "用 GPG 為推送簽名"
 
-#: builtin/push.c:583 builtin/send-pack.c:200
+#: builtin/push.c:574 builtin/send-pack.c:200
 msgid "request atomic transaction on remote side"
 msgstr "需要遠端支援原子事務"
 
-#: builtin/push.c:601
+#: builtin/push.c:592
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete 與 --all、--mirror 及 --tags 不相容"
 
-#: builtin/push.c:603
+#: builtin/push.c:594
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete 未接任何引用沒有意義"
 
-#: builtin/push.c:623
+#: builtin/push.c:614
 #, c-format
 msgid "bad repository '%s'"
 msgstr "壞的版本庫 '%s'"
 
-#: builtin/push.c:624
+#: builtin/push.c:615
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -19407,27 +19184,27 @@
 "\n"
 "    git push <名稱>\n"
 
-#: builtin/push.c:639
+#: builtin/push.c:630
 msgid "--all and --tags are incompatible"
 msgstr "--all 和 --tags 不相容"
 
-#: builtin/push.c:641
+#: builtin/push.c:632
 msgid "--all can't be combined with refspecs"
 msgstr "--all 不能和引用規格同時使用"
 
-#: builtin/push.c:645
+#: builtin/push.c:636
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror 和 --tags 不相容"
 
-#: builtin/push.c:647
+#: builtin/push.c:638
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror 不能和引用規格同時使用"
 
-#: builtin/push.c:650
+#: builtin/push.c:641
 msgid "--all and --mirror are incompatible"
 msgstr "--all 和 --mirror 不相容"
 
-#: builtin/push.c:657
+#: builtin/push.c:648
 msgid "push options must not have new line characters"
 msgstr "推送選項不能有換行符號"
 
@@ -19544,7 +19321,7 @@
 
 #: builtin/read-tree.c:151
 msgid "skip applying sparse checkout filter"
-msgstr "略過套用稀疏檢出過濾器"
+msgstr "略過套用稀疏簽出過濾器"
 
 #: builtin/read-tree.c:153
 msgid "debug unpack-trees"
@@ -19716,7 +19493,7 @@
 
 #: builtin/rebase.c:545
 msgid "the branch or commit to checkout"
-msgstr "要檢出的分支或提交"
+msgstr "要簽出的分支或提交"
 
 #: builtin/rebase.c:546
 msgid "onto-name"
@@ -19897,7 +19674,7 @@
 #  譯者:請維持前導空格
 #: builtin/rebase.c:1359
 msgid "abort and check out the original branch"
-msgstr "終止並檢出原有分支"
+msgstr "終止並簽出原有分支"
 
 #: builtin/rebase.c:1362
 msgid "abort but keep HEAD where it is"
@@ -19973,7 +19750,7 @@
 
 #: builtin/rebase.c:1442
 msgid "It looks like 'git am' is in progress. Cannot rebase."
-msgstr "看起來 'git-am' 正在執行中。無法重定基底。"
+msgstr "看起來 'git am' 正在執行中。無法重定基底。"
 
 #: builtin/rebase.c:1483
 msgid ""
@@ -20000,7 +19777,7 @@
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "動作 --edit-todo 只能用在互動式重定基底過程中。"
 
-#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:123
+#: builtin/rebase.c:1524 t/helper/test-fast-rebase.c:122
 msgid "Cannot read HEAD"
 msgstr "不能讀取 HEAD"
 
@@ -20105,8 +19882,8 @@
 msgid "fatal: no such branch/commit '%s'"
 msgstr "致命錯誤:無此分支/提交 '%s'"
 
-#: builtin/rebase.c:1929 builtin/submodule--helper.c:40
-#: builtin/submodule--helper.c:2415
+#: builtin/rebase.c:1929 builtin/submodule--helper.c:39
+#: builtin/submodule--helper.c:2431
 #, c-format
 msgid "No such ref: %s"
 msgstr "沒有這樣的引用:%s"
@@ -20174,7 +19951,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <版本庫目錄>"
 
-#: builtin/receive-pack.c:1276
+#: builtin/receive-pack.c:1275
 msgid ""
 "By default, updating the current branch in a non-bare repository\n"
 "is denied, because it will make the index and work tree inconsistent\n"
@@ -20200,7 +19977,7 @@
 "若要封鎖此訊息且保持預設行為,設定 'receive.denyCurrentBranch'\n"
 "設定變數為 'refuse'。"
 
-#: builtin/receive-pack.c:1296
+#: builtin/receive-pack.c:1295
 msgid ""
 "By default, deleting the current branch is denied, because the next\n"
 "'git clone' won't result in any file checked out, causing confusion.\n"
@@ -20211,7 +19988,7 @@
 "\n"
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
-"預設禁止刪除目前分支,因為下一次 'git clone' 將不會檢出任何檔案,\n"
+"預設禁止刪除目前分支,因為下一次 'git clone' 將不會簽出任何檔案,\n"
 "導致困惑。\n"
 "\n"
 "您可以在遠端版本庫中設定 'receive.denyDeleteCurrent' 設定變數為\n"
@@ -20219,11 +19996,11 @@
 "\n"
 "若要封鎖此訊息,您可以設定它為 'refuse'。"
 
-#: builtin/receive-pack.c:2479
+#: builtin/receive-pack.c:2478
 msgid "quiet"
 msgstr "靜默模式"
 
-#: builtin/receive-pack.c:2493
+#: builtin/receive-pack.c:2492
 msgid "You must specify a directory."
 msgstr "您必須指定一個目錄。"
 
@@ -20922,7 +20699,6 @@
 msgstr "--keep-unreachable 和 -A 不相容"
 
 #: builtin/repack.c:527
-#| msgid "--long is incompatible with --abbrev=0"
 msgid "--geometric is incompatible with -A, -a"
 msgstr "--geometric 與 -A, -a 不相容"
 
@@ -21190,15 +20966,15 @@
 msgid "git rerere [clear | forget <path>... | status | remaining | diff | gc]"
 msgstr "git rerere [clear | forget <路徑>... | status | remaining | diff | gc]"
 
-#: builtin/rerere.c:60
+#: builtin/rerere.c:58
 msgid "register clean resolutions in index"
 msgstr "在索引中註冊乾淨的解決方案"
 
-#: builtin/rerere.c:79
+#: builtin/rerere.c:77
 msgid "'git rerere forget' without paths is deprecated"
 msgstr "沒有路徑的 'git rerere forget' 已經過時"
 
-#: builtin/rerere.c:113
+#: builtin/rerere.c:111
 #, c-format
 msgid "unable to generate diff for '%s'"
 msgstr "無法為 '%s' 生成差異"
@@ -21350,19 +21126,19 @@
 msgid "Could not write new index file."
 msgstr "不能寫入新的索引檔案。"
 
-#: builtin/rev-list.c:538
+#: builtin/rev-list.c:541
 msgid "cannot combine --exclude-promisor-objects and --missing"
 msgstr "不能同時使用 --exclude-promisor-objects 和 --missing 選項"
 
-#: builtin/rev-list.c:599
+#: builtin/rev-list.c:602
 msgid "object filtering requires --objects"
 msgstr "物件過濾需要 --objects"
 
-#: builtin/rev-list.c:659
+#: builtin/rev-list.c:674
 msgid "rev-list does not support display of notes"
 msgstr "rev-list 不支援顯示註解"
 
-#: builtin/rev-list.c:664
+#: builtin/rev-list.c:679
 msgid "marked counting is incompatible with --objects"
 msgstr "--objects 不相容標記計數 (marked counting)"
 
@@ -21382,6 +21158,18 @@
 msgid "output in stuck long form"
 msgstr "以固定長格式輸出"
 
+#: builtin/rev-parse.c:438
+msgid "premature end of input"
+msgstr "輸入過早到達結尾"
+
+#: builtin/rev-parse.c:442
+msgid "no usage string given before the `--' separator"
+msgstr "「--」分隔符號前未提供用法字串"
+
+#: builtin/rev-parse.c:548
+msgid "Needed a single revision"
+msgstr "需要一個修訂版本"
+
 #: builtin/rev-parse.c:552
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -21396,6 +21184,50 @@
 "\n"
 "初次使用時執行 \"git rev-parse --parseopt -h\" 來獲得更多訊息。"
 
+#: builtin/rev-parse.c:712
+msgid "--resolve-git-dir requires an argument"
+msgstr "--resolve-git-dir 需要 1 個引數"
+
+#: builtin/rev-parse.c:715
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "'%s' 不是 git 目錄"
+
+#: builtin/rev-parse.c:739
+msgid "--git-path requires an argument"
+msgstr "--git-path 需要 1 個引數"
+
+#: builtin/rev-parse.c:749
+msgid "-n requires an argument"
+msgstr "-n 需要 1 個引數"
+
+#: builtin/rev-parse.c:763
+msgid "--path-format requires an argument"
+msgstr "--path-format 需要 1 個引數"
+
+#: builtin/rev-parse.c:769
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "傳入 --path-format 的引數未知:%s"
+
+#: builtin/rev-parse.c:776
+msgid "--default requires an argument"
+msgstr "--default 需要 1 個引數"
+
+#: builtin/rev-parse.c:782
+msgid "--prefix requires an argument"
+msgstr "--prefix 需要 1 個引數"
+
+#: builtin/rev-parse.c:851
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "--abbrev-ref 的模式未知:%s"
+
+#: builtin/rev-parse.c:1023
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "--show-object-format 的模式未知:%s"
+
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
 msgstr "git revert [<選項>] <提交號>..."
@@ -21506,7 +21338,7 @@
 #: builtin/rm.c:217
 msgid "the following file has changes staged in the index:"
 msgid_plural "the following files have changes staged in the index:"
-msgstr[0] "下列檔案索引中有變更"
+msgstr[0] "下列檔案有暫存在索引的變更:"
 
 #: builtin/rm.c:221 builtin/rm.c:230
 msgid ""
@@ -21840,7 +21672,7 @@
 
 #: builtin/sparse-checkout.c:227
 msgid "failed to create directory for sparse-checkout file"
-msgstr "無法建立稀疏檢出檔案的目錄"
+msgstr "無法建立稀疏簽出檔案的目錄"
 
 #: builtin/sparse-checkout.c:268
 msgid "unable to upgrade repository format to enable worktreeConfig"
@@ -21851,13 +21683,12 @@
 msgstr "無法設定 extensions.worktreeConfig 設定"
 
 #: builtin/sparse-checkout.c:290
-#| msgid "git sparse-checkout init [--cone]"
 msgid "git sparse-checkout init [--cone] [--[no-]sparse-index]"
 msgstr "git sparse-checkout init [--cone] [--[no-]sparse-index]"
 
 #: builtin/sparse-checkout.c:310
 msgid "initialize the sparse-checkout in cone mode"
-msgstr "以 cone 模式初始化稀疏檢出"
+msgstr "以 cone 模式初始化稀疏簽出"
 
 #: builtin/sparse-checkout.c:312
 msgid "toggle the use of a sparse index"
@@ -21872,37 +21703,37 @@
 msgid "failed to open '%s'"
 msgstr "無法開啟「%s」"
 
-#: builtin/sparse-checkout.c:419
+#: builtin/sparse-checkout.c:413
 #, c-format
 msgid "could not normalize path %s"
 msgstr "無法標準化路徑 %s"
 
-#: builtin/sparse-checkout.c:431
+#: builtin/sparse-checkout.c:425
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <樣式>)"
 
-#: builtin/sparse-checkout.c:456
+#: builtin/sparse-checkout.c:450
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "無法去掉 '%s' C 樣式字串的引號"
 
-#: builtin/sparse-checkout.c:510 builtin/sparse-checkout.c:534
+#: builtin/sparse-checkout.c:504 builtin/sparse-checkout.c:528
 msgid "unable to load existing sparse-checkout patterns"
-msgstr "無法載入現存的稀疏檢出樣式"
+msgstr "無法載入現存的稀疏簽出樣式"
 
-#: builtin/sparse-checkout.c:579
+#: builtin/sparse-checkout.c:573
 msgid "read patterns from standard in"
 msgstr "從標準輸入讀取樣式"
 
-#: builtin/sparse-checkout.c:594
+#: builtin/sparse-checkout.c:588
 msgid "git sparse-checkout reapply"
 msgstr "git sparse-checkout reapply"
 
-#: builtin/sparse-checkout.c:613
+#: builtin/sparse-checkout.c:607
 msgid "git sparse-checkout disable"
 msgstr "git sparse-checkout disable"
 
-#: builtin/sparse-checkout.c:644
+#: builtin/sparse-checkout.c:638
 msgid "error while refreshing working directory"
 msgstr "重新整理工作目錄時發生錯誤"
 
@@ -21926,10 +21757,6 @@
 msgid "git stash branch <branchname> [<stash>]"
 msgstr "git stash branch <分支名> [<stash>]"
 
-#: builtin/stash.c:29 builtin/stash.c:70
-msgid "git stash clear"
-msgstr "git stash clear"
-
 #: builtin/stash.c:30
 msgid ""
 "git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
@@ -22079,93 +21906,93 @@
 msgid "only show untracked files in the stash"
 msgstr "只在儲藏區顯示未追蹤檔案"
 
-#: builtin/stash.c:932 builtin/stash.c:969
+#: builtin/stash.c:929 builtin/stash.c:966
 #, c-format
 msgid "Cannot update %s with %s"
 msgstr "無法用 %2$s 更新 %1$s"
 
-#: builtin/stash.c:950 builtin/stash.c:1606 builtin/stash.c:1671
+#: builtin/stash.c:947 builtin/stash.c:1602 builtin/stash.c:1667
 msgid "stash message"
 msgstr "儲藏說明"
 
-#: builtin/stash.c:960
+#: builtin/stash.c:957
 msgid "\"git stash store\" requires one <commit> argument"
 msgstr "\"git stash store\" 需要一個 <提交> 參數"
 
-#: builtin/stash.c:1175
+#: builtin/stash.c:1171
 msgid "No changes selected"
 msgstr "沒有選擇變更"
 
-#: builtin/stash.c:1275
+#: builtin/stash.c:1271
 msgid "You do not have the initial commit yet"
 msgstr "您尚未建立初始提交"
 
-#: builtin/stash.c:1302
+#: builtin/stash.c:1298
 msgid "Cannot save the current index state"
 msgstr "無法儲存目前索引狀態"
 
-#: builtin/stash.c:1311
+#: builtin/stash.c:1307
 msgid "Cannot save the untracked files"
 msgstr "無法儲存未追蹤檔案"
 
-#: builtin/stash.c:1322 builtin/stash.c:1331
+#: builtin/stash.c:1318 builtin/stash.c:1327
 msgid "Cannot save the current worktree state"
 msgstr "無法儲存目前工作區狀態"
 
-#: builtin/stash.c:1359
+#: builtin/stash.c:1355
 msgid "Cannot record working tree state"
 msgstr "不能記錄工作區狀態"
 
-#: builtin/stash.c:1408
+#: builtin/stash.c:1404
 msgid "Can't use --patch and --include-untracked or --all at the same time"
 msgstr "不能同時使用參數 --patch 和 --include-untracked 或 --all"
 
-#: builtin/stash.c:1426
+#: builtin/stash.c:1422
 msgid "Did you forget to 'git add'?"
 msgstr "您是否忘了執行 'git add'?"
 
-#: builtin/stash.c:1441
+#: builtin/stash.c:1437
 msgid "No local changes to save"
 msgstr "沒有要儲存的本機修改"
 
-#: builtin/stash.c:1448
+#: builtin/stash.c:1444
 msgid "Cannot initialize stash"
 msgstr "無法初始化儲藏"
 
-#: builtin/stash.c:1463
+#: builtin/stash.c:1459
 msgid "Cannot save the current status"
 msgstr "無法儲存目前狀態"
 
-#: builtin/stash.c:1468
+#: builtin/stash.c:1464
 #, c-format
 msgid "Saved working directory and index state %s"
 msgstr "儲存工作目錄和索引狀態 %s"
 
-#: builtin/stash.c:1558
+#: builtin/stash.c:1554
 msgid "Cannot remove worktree changes"
 msgstr "無法刪除工作區變更"
 
-#: builtin/stash.c:1597 builtin/stash.c:1662
+#: builtin/stash.c:1593 builtin/stash.c:1658
 msgid "keep index"
 msgstr "保持索引"
 
-#: builtin/stash.c:1599 builtin/stash.c:1664
+#: builtin/stash.c:1595 builtin/stash.c:1660
 msgid "stash in patch mode"
 msgstr "以修補檔模式儲藏"
 
-#: builtin/stash.c:1600 builtin/stash.c:1665
+#: builtin/stash.c:1596 builtin/stash.c:1661
 msgid "quiet mode"
 msgstr "靜默模式"
 
-#: builtin/stash.c:1602 builtin/stash.c:1667
+#: builtin/stash.c:1598 builtin/stash.c:1663
 msgid "include untracked files in stash"
 msgstr "儲藏中包含未追蹤檔案"
 
-#: builtin/stash.c:1604 builtin/stash.c:1669
+#: builtin/stash.c:1600 builtin/stash.c:1665
 msgid "include ignore files"
 msgstr "包含忽略的檔案"
 
-#: builtin/stash.c:1704
+#: builtin/stash.c:1700
 msgid ""
 "the stash.useBuiltin support has been removed!\n"
 "See its entry in 'git help config' for details."
@@ -22189,40 +22016,41 @@
 msgid "prepend comment character and space to each line"
 msgstr "為每一行的行首新增備註符和空格"
 
-#: builtin/submodule--helper.c:47 builtin/submodule--helper.c:2424
+#: builtin/submodule--helper.c:46 builtin/submodule--helper.c:2440
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "期望一個完整的引用名稱,卻得到 %s"
 
-#: builtin/submodule--helper.c:64
+#: builtin/submodule--helper.c:63
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote 不帶參數"
 
-#: builtin/submodule--helper.c:102
+#: builtin/submodule--helper.c:101
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "無法從 url '%s' 剝離一個元件"
 
-#: builtin/submodule--helper.c:410 builtin/submodule--helper.c:1820
+#: builtin/submodule--helper.c:411 builtin/submodule--helper.c:1887
+#: builtin/submodule--helper.c:2891
 msgid "alternative anchor for relative paths"
 msgstr "相對路徑的替代錨記(anchor)"
 
-#: builtin/submodule--helper.c:415
+#: builtin/submodule--helper.c:416
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<路徑>] [<路徑>...]"
 
-#: builtin/submodule--helper.c:473 builtin/submodule--helper.c:630
-#: builtin/submodule--helper.c:653
+#: builtin/submodule--helper.c:474 builtin/submodule--helper.c:631
+#: builtin/submodule--helper.c:654
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "在 .gitmodules 中未找到子模組 '%s' 的 url"
 
-#: builtin/submodule--helper.c:525
+#: builtin/submodule--helper.c:526
 #, c-format
 msgid "Entering '%s'\n"
 msgstr "進入 '%s'\n"
 
-#: builtin/submodule--helper.c:528
+#: builtin/submodule--helper.c:529
 #, c-format
 msgid ""
 "run_command returned non-zero status for %s\n"
@@ -22231,7 +22059,7 @@
 "對 %s 執行 run_command 返回非零值。\n"
 "."
 
-#: builtin/submodule--helper.c:550
+#: builtin/submodule--helper.c:551
 #, c-format
 msgid ""
 "run_command returned non-zero status while recursing in the nested "
@@ -22241,169 +22069,169 @@
 "在遞迴 %s 的子模組執行 run_command 時返回非零值。\n"
 "."
 
-#: builtin/submodule--helper.c:566
+#: builtin/submodule--helper.c:567
 msgid "suppress output of entering each submodule command"
 msgstr "隱藏每個子模組進入命令的輸出"
 
-#: builtin/submodule--helper.c:568 builtin/submodule--helper.c:889
-#: builtin/submodule--helper.c:1488
+#: builtin/submodule--helper.c:569 builtin/submodule--helper.c:890
+#: builtin/submodule--helper.c:1489
 msgid "recurse into nested submodules"
 msgstr "遞迴進入嵌套子模組中"
 
-#: builtin/submodule--helper.c:573
+#: builtin/submodule--helper.c:574
 msgid "git submodule--helper foreach [--quiet] [--recursive] [--] <command>"
 msgstr "git submodule--helper foreach [--quiet] [--recursive] [--] <命令>"
 
-#: builtin/submodule--helper.c:600
+#: builtin/submodule--helper.c:601
 #, c-format
 msgid ""
 "could not look up configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr "無法找到設定 '%s'。假定這個版本庫是其自身的官方上游。"
 
-#: builtin/submodule--helper.c:667
+#: builtin/submodule--helper.c:668
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "無法為子模組 '%s' 註冊 url"
 
-#: builtin/submodule--helper.c:671
+#: builtin/submodule--helper.c:672
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "子模組 '%s'(%s)已對路徑 '%s' 註冊\n"
 
-#: builtin/submodule--helper.c:681
+#: builtin/submodule--helper.c:682
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "警告:建議子模組 '%s' 使用指令更新模式\n"
 
-#: builtin/submodule--helper.c:688
+#: builtin/submodule--helper.c:689
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "無法為子模組 '%s' 註冊更新模式"
 
-#: builtin/submodule--helper.c:710
+#: builtin/submodule--helper.c:711
 msgid "suppress output for initializing a submodule"
 msgstr "隱藏初始化子模組的輸出"
 
-#: builtin/submodule--helper.c:715
+#: builtin/submodule--helper.c:716
 msgid "git submodule--helper init [<options>] [<path>]"
 msgstr "git submodule--helper init [<選項>] [<路徑>]"
 
-#: builtin/submodule--helper.c:788 builtin/submodule--helper.c:923
+#: builtin/submodule--helper.c:789 builtin/submodule--helper.c:924
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "在 .gitmodules 中沒有發現路徑 '%s' 的子模組映射"
 
-#: builtin/submodule--helper.c:836
+#: builtin/submodule--helper.c:837
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "無法解析子模組 '%s' 的 HEAD 引用"
 
-#: builtin/submodule--helper.c:863 builtin/submodule--helper.c:1458
+#: builtin/submodule--helper.c:864 builtin/submodule--helper.c:1459
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "遞迴子模組 '%s' 失敗"
 
-#: builtin/submodule--helper.c:887 builtin/submodule--helper.c:1624
+#: builtin/submodule--helper.c:888 builtin/submodule--helper.c:1625
 msgid "suppress submodule status output"
 msgstr "隱藏子模組的狀態輸出"
 
-#: builtin/submodule--helper.c:888
+#: builtin/submodule--helper.c:889
 msgid ""
 "use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "使用儲存在索引中的提交,而非儲存在子模組 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:894
+#: builtin/submodule--helper.c:895
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<路徑>...]"
 
-#: builtin/submodule--helper.c:918
+#: builtin/submodule--helper.c:919
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <路徑>"
 
-#: builtin/submodule--helper.c:990
+#: builtin/submodule--helper.c:991
 #, c-format
 msgid "* %s %s(blob)->%s(submodule)"
 msgstr "* %s %s(blob)->%s(submodule)"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:994
 #, c-format
 msgid "* %s %s(submodule)->%s(blob)"
 msgstr "* %s %s(submodule)->%s(blob)"
 
-#: builtin/submodule--helper.c:1006
+#: builtin/submodule--helper.c:1007
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: builtin/submodule--helper.c:1056
+#: builtin/submodule--helper.c:1057
 #, c-format
 msgid "couldn't hash object from '%s'"
 msgstr "無法雜湊來自 '%s' 的物件"
 
-#: builtin/submodule--helper.c:1060
+#: builtin/submodule--helper.c:1061
 #, c-format
 msgid "unexpected mode %o\n"
 msgstr "非預期的模式 %o\n"
 
-#: builtin/submodule--helper.c:1301
+#: builtin/submodule--helper.c:1302
 msgid "use the commit stored in the index instead of the submodule HEAD"
 msgstr "使用儲存在索引中的提交而非子模組 HEAD"
 
-#: builtin/submodule--helper.c:1303
-msgid "to compare the commit in the index with that in the submodule HEAD"
-msgstr "比較索引中的,和子模組 HEAD 中的提交"
+#: builtin/submodule--helper.c:1304
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr "比較索引中提交與子模組 HEAD 提交的差異"
 
-#: builtin/submodule--helper.c:1305
+#: builtin/submodule--helper.c:1306
 msgid "skip submodules with 'ignore_config' value set to 'all'"
 msgstr "'ignore_config' 值設為 'all' 時略過子模組"
 
-#: builtin/submodule--helper.c:1307
+#: builtin/submodule--helper.c:1308
 msgid "limit the summary size"
 msgstr "限制摘要大小"
 
-#: builtin/submodule--helper.c:1312
+#: builtin/submodule--helper.c:1313
 msgid "git submodule--helper summary [<options>] [<commit>] [--] [<path>]"
 msgstr "git submodule--helper summary [<選項>] [<提交>] [--] [<路徑>]"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1337
 msgid "could not fetch a revision for HEAD"
 msgstr "無法取得 HEAD 的版本"
 
-#: builtin/submodule--helper.c:1341
+#: builtin/submodule--helper.c:1342
 msgid "--cached and --files are mutually exclusive"
 msgstr "--cached 和 --files 互斥"
 
-#: builtin/submodule--helper.c:1408
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "為 '%s' 同步子模組 url\n"
 
-#: builtin/submodule--helper.c:1414
+#: builtin/submodule--helper.c:1415
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "無法為子模組路徑 '%s' 註冊 url"
 
-#: builtin/submodule--helper.c:1428
+#: builtin/submodule--helper.c:1429
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "無法得到子模組 '%s' 的預設遠端關聯"
 
-#: builtin/submodule--helper.c:1439
+#: builtin/submodule--helper.c:1440
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "無法為子模組 '%s' 更新遠端關聯"
 
-#: builtin/submodule--helper.c:1486
+#: builtin/submodule--helper.c:1487
 msgid "suppress output of synchronizing submodule url"
 msgstr "隱藏子模組 URL 同步的輸出"
 
-#: builtin/submodule--helper.c:1493
+#: builtin/submodule--helper.c:1494
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<路徑>]"
 
-#: builtin/submodule--helper.c:1547
+#: builtin/submodule--helper.c:1548
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -22412,52 +22240,52 @@
 "子模組工作區 '%s' 包含一個 .git 目錄(如果您確需刪除它及其全部歷史,使用 'rm "
 "-rf' 指令)"
 
-#: builtin/submodule--helper.c:1559
+#: builtin/submodule--helper.c:1560
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr "子模組工作區 '%s' 包含本機修改;使用 '-f' 捨棄它們"
 
-#: builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1568
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "已清除目錄 '%s'\n"
 
-#: builtin/submodule--helper.c:1569
+#: builtin/submodule--helper.c:1570
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "無法移除子模組工作區 '%s'\n"
 
-#: builtin/submodule--helper.c:1580
+#: builtin/submodule--helper.c:1581
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "不能建立空的子模組目錄 %s"
 
-#: builtin/submodule--helper.c:1596
+#: builtin/submodule--helper.c:1597
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "子模組 '%s'(%s)未對路徑 '%s' 註冊\n"
 
-#: builtin/submodule--helper.c:1625
+#: builtin/submodule--helper.c:1626
 msgid "remove submodule working trees even if they contain local changes"
 msgstr "即使有本機變更仍移除子模組的工作區"
 
-#: builtin/submodule--helper.c:1626
+#: builtin/submodule--helper.c:1627
 msgid "unregister all submodules"
 msgstr "取消註冊所有子模組"
 
-#: builtin/submodule--helper.c:1631
+#: builtin/submodule--helper.c:1632
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<路徑>...]]"
 
-#: builtin/submodule--helper.c:1645
+#: builtin/submodule--helper.c:1646
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "如果您確定想要對所有子模組執行取消初始化,請使用 '--all'"
 
-#: builtin/submodule--helper.c:1714
+#: builtin/submodule--helper.c:1690
 msgid ""
 "An alternate computed from a superproject's alternate is invalid.\n"
 "To allow Git to clone without an alternate in such a case, set\n"
@@ -22469,46 +22297,67 @@
 "以允許 Git 不用備用版本庫複製,亦可使用等效的 '--reference-if-able'\n"
 "而非 '--reference' 複製。"
 
-#: builtin/submodule--helper.c:1753 builtin/submodule--helper.c:1756
+#: builtin/submodule--helper.c:1729 builtin/submodule--helper.c:1732
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "子模組 '%s' 不能新增版本庫備選:%s"
 
-#: builtin/submodule--helper.c:1792
+#: builtin/submodule--helper.c:1768
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "不能識別 submodule.alternateErrorStrategy 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1799
+#: builtin/submodule--helper.c:1775
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
-msgstr "不能識別 submodule.alternateLocaion 的取值 '%s'"
+msgstr "不能識別 submodule.alternateLocation 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1823
+#: builtin/submodule--helper.c:1800
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "拒絕在其他子模組的 git 路徑建立/使用「%s」"
+
+#: builtin/submodule--helper.c:1841
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "無法複製 '%s' 到子模組路徑 '%s'"
+
+#: builtin/submodule--helper.c:1846
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "目錄不是空的:「%s」"
+
+#: builtin/submodule--helper.c:1858
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "無法得到 '%s' 的子模組目錄"
+
+#: builtin/submodule--helper.c:1890 builtin/submodule--helper.c:2894
 msgid "where the new submodule will be cloned to"
 msgstr "新的子模組將要複製的路徑"
 
-#: builtin/submodule--helper.c:1826
+#: builtin/submodule--helper.c:1893 builtin/submodule--helper.c:2897
 msgid "name of the new submodule"
 msgstr "新子模組的名稱"
 
-#: builtin/submodule--helper.c:1829
+#: builtin/submodule--helper.c:1896 builtin/submodule--helper.c:2900
 msgid "url where to clone the submodule from"
 msgstr "複製子模組的 url 位址"
 
-#: builtin/submodule--helper.c:1837
+#: builtin/submodule--helper.c:1904 builtin/submodule--helper.c:2907
 msgid "depth for shallow clones"
 msgstr "淺複製的深度"
 
-#: builtin/submodule--helper.c:1840 builtin/submodule--helper.c:2349
+#: builtin/submodule--helper.c:1907 builtin/submodule--helper.c:2365
+#: builtin/submodule--helper.c:2909
 msgid "force cloning progress"
 msgstr "強制顯示複製進度"
 
-#: builtin/submodule--helper.c:1842 builtin/submodule--helper.c:2351
+#: builtin/submodule--helper.c:1909 builtin/submodule--helper.c:2367
 msgid "disallow cloning into non-empty directory"
 msgstr "不允許複製至非空白目錄"
 
-#: builtin/submodule--helper.c:1849
+#: builtin/submodule--helper.c:1916
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] [--single-branch] --url "
@@ -22518,186 +22367,223 @@
 ">] [--name <名字>] [--depth <深度>] [--single-branch] --url <url> --path <路"
 "徑>"
 
-#: builtin/submodule--helper.c:1874
-#, c-format
-msgid "refusing to create/use '%s' in another submodule's git dir"
-msgstr "拒絕在其他子模組的 git 路徑建立/使用「%s」"
-
-#: builtin/submodule--helper.c:1885
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "無法複製 '%s' 到子模組路徑 '%s'"
-
-#: builtin/submodule--helper.c:1889
-#, c-format
-msgid "directory not empty: '%s'"
-msgstr "目錄不是空的:「%s」"
-
-#: builtin/submodule--helper.c:1901
-#, c-format
-msgid "could not get submodule directory for '%s'"
-msgstr "無法得到 '%s' 的子模組目錄"
-
-#: builtin/submodule--helper.c:1937
+#: builtin/submodule--helper.c:1953
 #, c-format
 msgid "Invalid update mode '%s' for submodule path '%s'"
 msgstr "子模組 '%2$s' 的更新模式 '%1$s' 無效"
 
-#: builtin/submodule--helper.c:1941
+#: builtin/submodule--helper.c:1957
 #, c-format
 msgid "Invalid update mode '%s' configured for submodule path '%s'"
 msgstr "為子模組 '%2$s' 設定的更新模式 '%1$s' 無效"
 
-#: builtin/submodule--helper.c:2042
+#: builtin/submodule--helper.c:2058
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "子模組 '%s' 尚未初始化"
 
-#: builtin/submodule--helper.c:2046
+#: builtin/submodule--helper.c:2062
 msgid "Maybe you want to use 'update --init'?"
 msgstr "也許您想要執行 'update --init'?"
 
-#: builtin/submodule--helper.c:2076
+#: builtin/submodule--helper.c:2092
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "略過未合併的子模組 %s"
 
-#: builtin/submodule--helper.c:2105
+#: builtin/submodule--helper.c:2121
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "略過子模組 '%s'"
 
-#: builtin/submodule--helper.c:2255
+#: builtin/submodule--helper.c:2271
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
-msgstr "複製 '%s' 失敗。按計劃重試"
+msgstr "複製 '%s' 失敗。已排程重試作業"
 
-#: builtin/submodule--helper.c:2266
+#: builtin/submodule--helper.c:2282
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
-msgstr "第二次嘗試複製 '%s' 失敗,離開"
+msgstr "第二次嘗試複製 '%s' 失敗,中止作業"
 
-#: builtin/submodule--helper.c:2328 builtin/submodule--helper.c:2574
+#: builtin/submodule--helper.c:2344 builtin/submodule--helper.c:2590
 msgid "path into the working tree"
 msgstr "到工作區的路徑"
 
-#: builtin/submodule--helper.c:2331
+#: builtin/submodule--helper.c:2347
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "工作區中的路徑,遞迴嵌套子模組"
 
-#: builtin/submodule--helper.c:2335
+#: builtin/submodule--helper.c:2351
 msgid "rebase, merge, checkout or none"
 msgstr "rebase、merge、checkout 或 none"
 
-#: builtin/submodule--helper.c:2341
+#: builtin/submodule--helper.c:2357
 msgid "create a shallow clone truncated to the specified number of revisions"
 msgstr "建立一個縮減至指定版本數的淺複製"
 
-#: builtin/submodule--helper.c:2344
+#: builtin/submodule--helper.c:2360
 msgid "parallel jobs"
-msgstr "並發任務"
+msgstr "並行任務"
 
-#: builtin/submodule--helper.c:2346
+#: builtin/submodule--helper.c:2362
 msgid "whether the initial clone should follow the shallow recommendation"
-msgstr "初始複製是否應該遵守推薦的淺複製選項"
+msgstr "初始複製是否應該遵循建議的淺複製選項"
 
-#: builtin/submodule--helper.c:2347
+#: builtin/submodule--helper.c:2363
 msgid "don't print cloning progress"
 msgstr "不要輸出複製進度"
 
-#: builtin/submodule--helper.c:2358
+#: builtin/submodule--helper.c:2374
 msgid "git submodule--helper update-clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update-clone [--prefix=<路徑>] [<路徑>...]"
 
-#: builtin/submodule--helper.c:2371
+#: builtin/submodule--helper.c:2387
 msgid "bad value for update parameter"
 msgstr "update 參數取值錯誤"
 
-#: builtin/submodule--helper.c:2419
+#: builtin/submodule--helper.c:2435
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
 "the superproject is not on any branch"
 msgstr "子模組(%s)的分支設定為繼承上級專案的分支,但是上級專案不在任何分支上"
 
-#: builtin/submodule--helper.c:2542
+#: builtin/submodule--helper.c:2558
 #, c-format
 msgid "could not get a repository handle for submodule '%s'"
 msgstr "無法獲得子模組 '%s' 的版本庫句柄"
 
-#: builtin/submodule--helper.c:2575
+#: builtin/submodule--helper.c:2591
 msgid "recurse into submodules"
 msgstr "在子模組中遞迴"
 
-#: builtin/submodule--helper.c:2581
+#: builtin/submodule--helper.c:2597
 msgid "git submodule--helper absorb-git-dirs [<options>] [<path>...]"
 msgstr "git submodule--helper absorb-git-dirs [<選項>] [<路徑>...]"
 
-#: builtin/submodule--helper.c:2637
+#: builtin/submodule--helper.c:2653
 msgid "check if it is safe to write to the .gitmodules file"
 msgstr "檢查寫入 .gitmodules 檔案是否安全"
 
-#: builtin/submodule--helper.c:2640
+#: builtin/submodule--helper.c:2656
 msgid "unset the config in the .gitmodules file"
 msgstr "取消 .gitmodules 檔案中的設定"
 
-#: builtin/submodule--helper.c:2645
+#: builtin/submodule--helper.c:2661
 msgid "git submodule--helper config <name> [<value>]"
 msgstr "git submodule--helper config <名稱> [<值>]"
 
-#: builtin/submodule--helper.c:2646
+#: builtin/submodule--helper.c:2662
 msgid "git submodule--helper config --unset <name>"
 msgstr "git submodule--helper config --unset <名稱>"
 
-#: builtin/submodule--helper.c:2647
+#: builtin/submodule--helper.c:2663
 msgid "git submodule--helper config --check-writeable"
 msgstr "git submodule--helper config --check-writeable"
 
-#: builtin/submodule--helper.c:2666 git-submodule.sh:150
+#: builtin/submodule--helper.c:2682 git-submodule.sh:150
 #, sh-format
 msgid "please make sure that the .gitmodules file is in the working tree"
 msgstr "請確認 .gitmodules 檔案在工作區裡"
 
-#: builtin/submodule--helper.c:2682
+#: builtin/submodule--helper.c:2698
 msgid "suppress output for setting url of a submodule"
 msgstr "隱藏子模組設定 URL 的輸出"
 
-#: builtin/submodule--helper.c:2686
+#: builtin/submodule--helper.c:2702
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <路徑> <新 URL>"
 
-#: builtin/submodule--helper.c:2719
+#: builtin/submodule--helper.c:2735
 msgid "set the default tracking branch to master"
 msgstr "將預設的追蹤分支設為 master"
 
-#: builtin/submodule--helper.c:2721
+#: builtin/submodule--helper.c:2737
 msgid "set the default tracking branch"
 msgstr "設定預設追蹤分支"
 
-#: builtin/submodule--helper.c:2725
+#: builtin/submodule--helper.c:2741
 msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 msgstr "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
 
-#: builtin/submodule--helper.c:2726
+#: builtin/submodule--helper.c:2742
 msgid ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 msgstr ""
 "git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
 
-#: builtin/submodule--helper.c:2733
+#: builtin/submodule--helper.c:2749
 msgid "--branch or --default required"
 msgstr "需要 --branch 或 --default"
 
-#: builtin/submodule--helper.c:2736
+#: builtin/submodule--helper.c:2752
 msgid "--branch and --default are mutually exclusive"
 msgstr "--branch 與 --default 互斥"
 
-#: builtin/submodule--helper.c:2793 git.c:449 git.c:724
+#: builtin/submodule--helper.c:2815
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "正在將位於 '%s' 的現有版本庫加入至索引\n"
+
+#: builtin/submodule--helper.c:2818
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "「%s」已存在,且不是有效的 git 版本庫"
+
+#: builtin/submodule--helper.c:2828
+#, fuzzy, c-format
+#| msgid "A git directory for '$sm_name' is found locally with remote(s):"
+msgid "A git directory for '%s' is found locally with remote(s):"
+msgstr "在本機找到「%s」Git 目錄,與其對應的遠端版本庫:"
+
+#: builtin/submodule--helper.c:2833
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+"  %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or if you are unsure what this means, choose another name with the '--name' "
+"option.\n"
+msgstr ""
+"如果您想要直接使用這個本機 git 目錄,而非重新複製自\n"
+"  %s\n"
+"請使用 '--force' 選項。如果本機 git 目錄不是正確的版本庫\n"
+"或者說您不確定,請使用 '--name' 選項輸入其他名稱。\n"
+
+#: builtin/submodule--helper.c:2842
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "正在重新啟用「%s」子模組的本機 Git 目錄\n"
+
+#: builtin/submodule--helper.c:2875
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "無法簽出「%s」子模組"
+
+#: builtin/submodule--helper.c:2888
+msgid "branch of repository to checkout on cloning"
+msgstr "複製時要簽出的版本庫分支"
+
+#: builtin/submodule--helper.c:2910
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "允許加入忽略的子模組路徑"
+
+#: builtin/submodule--helper.c:2917
+msgid ""
+"git submodule--helper add-clone [<options>...] --url <url> --path <path> --"
+"name <name>"
+msgstr ""
+"git submodule--helper add-clone [<選項>...] --url <URL> --path <路徑> --name "
+"<名稱>"
+
+#: builtin/submodule--helper.c:2985 git.c:449 git.c:724
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支援 --super-prefix"
 
-#: builtin/submodule--helper.c:2799
+#: builtin/submodule--helper.c:2991
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' 不是一個有效的 submodule--helper 子指令"
@@ -23310,7 +23196,7 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路徑>"
 
-#: builtin/worktree.c:61 builtin/worktree.c:935
+#: builtin/worktree.c:61 builtin/worktree.c:944
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "刪除 '%s' 失敗"
@@ -23320,25 +23206,25 @@
 msgid "Removing %s/%s: %s"
 msgstr "移除 %s/%s: %s"
 
-#: builtin/worktree.c:149
+#: builtin/worktree.c:147
 msgid "report pruned working trees"
 msgstr "報告清除的工作區"
 
-#: builtin/worktree.c:151
+#: builtin/worktree.c:149
 msgid "expire working trees older than <time>"
 msgstr "將早於 <時間> 的工作區過期"
 
-#: builtin/worktree.c:221
+#: builtin/worktree.c:219
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已經存在"
 
-#: builtin/worktree.c:230
+#: builtin/worktree.c:228
 #, c-format
 msgid "unusable worktree destination '%s'"
 msgstr "無法使用的工作目錄目的地「%s」"
 
-#: builtin/worktree.c:235
+#: builtin/worktree.c:233
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
@@ -23347,7 +23233,7 @@
 "'%s' 是個遺失但被鎖定的工作區;\n"
 "使用 '%s -f -f' 覆蓋,或 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:237
+#: builtin/worktree.c:235
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
@@ -23356,34 +23242,38 @@
 "'%s' 是個遺失但已註冊的工作區;\n"
 "使用 '%s -f' 覆蓋,或 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:288
+#: builtin/worktree.c:286
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能建立目錄 '%s'"
 
-#: builtin/worktree.c:422 builtin/worktree.c:428
+#: builtin/worktree.c:308
+msgid "initializing"
+msgstr "正在初始化"
+
+#: builtin/worktree.c:420 builtin/worktree.c:426
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "準備工作區(新分支 '%s')"
 
-#: builtin/worktree.c:424
+#: builtin/worktree.c:422
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "準備工作區(重設分支 '%s',之前為 %s)"
 
-#: builtin/worktree.c:433
+#: builtin/worktree.c:431
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
-msgstr "準備工作區(檢出 '%s')"
+msgstr "準備工作區(簽出 '%s')"
 
-#: builtin/worktree.c:439
+#: builtin/worktree.c:437
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "準備工作區(分離開頭指標 %s)"
 
 #: builtin/worktree.c:482
 msgid "checkout <branch> even if already checked out in other worktree"
-msgstr "檢出 <分支>,即使已經被檢出到其它工作區"
+msgstr "簽出 <分支>,即使已經被簽出到其它工作區"
 
 #: builtin/worktree.c:485
 msgid "create a new branch"
@@ -23401,82 +23291,90 @@
 msgid "keep the new working tree locked"
 msgstr "鎖定新工作區"
 
-#: builtin/worktree.c:493
-msgid "set up tracking mode (see git-branch(1))"
-msgstr "設定追蹤模式(參見 git-branch(1))"
-
-#: builtin/worktree.c:496
-msgid "try to match the new branch name with a remote-tracking branch"
-msgstr "嘗試為新分支名符合一個遠端追蹤分支"
-
-#: builtin/worktree.c:504
-msgid "-b, -B, and --detach are mutually exclusive"
-msgstr "-b、-B 和 --detach 是互斥的"
-
-#: builtin/worktree.c:565
-msgid "--[no-]track can only be used if a new branch is created"
-msgstr "只能在建立新分支時使用 --[no-]track 選項"
-
-#: builtin/worktree.c:682
-msgid "show extended annotations and reasons, if available"
-msgstr "如果有則顯示延伸的註釋和原因"
-
-#: builtin/worktree.c:684
-msgid "add 'prunable' annotation to worktrees older than <time>"
-msgstr "對舊於 <時間> 的工作區加上 ‘prunable’ 標示"
-
-#: builtin/worktree.c:693
-msgid "--verbose and --porcelain are mutually exclusive"
-msgstr "--verbose 和 --porcelain 互斥"
-
-#: builtin/worktree.c:720
+#: builtin/worktree.c:492 builtin/worktree.c:729
 msgid "reason for locking"
 msgstr "鎖定原因"
 
-#: builtin/worktree.c:732 builtin/worktree.c:765 builtin/worktree.c:839
-#: builtin/worktree.c:963
+#: builtin/worktree.c:495
+msgid "set up tracking mode (see git-branch(1))"
+msgstr "設定追蹤模式(參見 git-branch(1))"
+
+#: builtin/worktree.c:498
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr "嘗試為新分支名符合一個遠端追蹤分支"
+
+#: builtin/worktree.c:506
+msgid "-b, -B, and --detach are mutually exclusive"
+msgstr "-b、-B 和 --detach 是互斥的"
+
+#: builtin/worktree.c:508
+msgid "--reason requires --lock"
+msgstr "--reason 需要 --lock"
+
+#: builtin/worktree.c:512
+msgid "added with --lock"
+msgstr "已使用 --lock 加入"
+
+#: builtin/worktree.c:574
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr "只能在建立新分支時使用 --[no-]track 選項"
+
+#: builtin/worktree.c:691
+msgid "show extended annotations and reasons, if available"
+msgstr "如果有則顯示延伸的註釋和原因"
+
+#: builtin/worktree.c:693
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "對舊於 <時間> 的工作區加上 ‘prunable’ 標示"
+
+#: builtin/worktree.c:702
+msgid "--verbose and --porcelain are mutually exclusive"
+msgstr "--verbose 和 --porcelain 互斥"
+
+#: builtin/worktree.c:741 builtin/worktree.c:774 builtin/worktree.c:848
+#: builtin/worktree.c:972
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一個工作區"
 
-#: builtin/worktree.c:734 builtin/worktree.c:767
+#: builtin/worktree.c:743 builtin/worktree.c:776
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作區無法被加鎖或解鎖"
 
-#: builtin/worktree.c:739
+#: builtin/worktree.c:748
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被鎖定,原因:%s"
 
-#: builtin/worktree.c:741
+#: builtin/worktree.c:750
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被鎖定"
 
-#: builtin/worktree.c:769
+#: builtin/worktree.c:778
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被鎖定"
 
-#: builtin/worktree.c:810
+#: builtin/worktree.c:819
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移動或刪除包含子模組的工作區"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:827
 msgid "force move even if worktree is dirty or locked"
 msgstr "強制移動,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:841 builtin/worktree.c:965
+#: builtin/worktree.c:850 builtin/worktree.c:974
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一個主工作區"
 
-#: builtin/worktree.c:846
+#: builtin/worktree.c:855
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "無法從 '%s' 算出目標名稱"
 
-#: builtin/worktree.c:859
+#: builtin/worktree.c:868
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -23485,7 +23383,7 @@
 "無法移動一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:861
+#: builtin/worktree.c:870
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -23493,36 +23391,36 @@
 "無法移動一個鎖定的工作區,\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:864
+#: builtin/worktree.c:873
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "驗證失敗,無法移動工作區:%s"
 
-#: builtin/worktree.c:869
+#: builtin/worktree.c:878
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移動 '%s' 到 '%s' 失敗"
 
-#: builtin/worktree.c:915
+#: builtin/worktree.c:924
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中執行 'git status' 失敗"
 
-#: builtin/worktree.c:919
+#: builtin/worktree.c:928
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未追蹤的檔案,使用 --force 刪除"
 
-#: builtin/worktree.c:924
+#: builtin/worktree.c:933
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中執行 'git status' 失敗,離開碼 %d"
 
-#: builtin/worktree.c:947
+#: builtin/worktree.c:956
 msgid "force removal even if worktree is dirty or locked"
 msgstr "強制刪除,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:970
+#: builtin/worktree.c:979
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -23531,7 +23429,7 @@
 "無法刪除一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:972
+#: builtin/worktree.c:981
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -23539,17 +23437,17 @@
 "無法刪除一個鎖定的工作區,\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:975
+#: builtin/worktree.c:984
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "驗證失敗,無法刪除工作區:%s"
 
-#: builtin/worktree.c:999
+#: builtin/worktree.c:1008
 #, c-format
 msgid "repair: %s: %s"
 msgstr "修復:%s:%s"
 
-#: builtin/worktree.c:1002
+#: builtin/worktree.c:1011
 #, c-format
 msgid "error: %s: %s"
 msgstr "錯誤:%s:%s"
@@ -23762,7 +23660,6 @@
 msgstr "無法在背景啟動 (spawn) 守護程式"
 
 #: t/helper/test-simple-ipc.c:356
-#| msgid "setsid failed"
 msgid "waitpid failed"
 msgstr "waitpid 失敗"
 
@@ -23776,7 +23673,7 @@
 
 #: t/helper/test-simple-ipc.c:410
 msgid "waitpid is confused"
-msgstr ""
+msgstr "waitpid 被混淆"
 
 #: t/helper/test-simple-ipc.c:541
 msgid "daemon has not shutdown yet"
@@ -23883,14 +23780,14 @@
 #: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
-msgstr "無法設定 SSL 後端為 '%s':cURL: cURL 沒有使用 SSL 後端組建"
+msgstr "無法將 SSL 後端設定為 '%s':組建 cURL 時未加入 SSL 後端"
 
 #: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "無法將 SSL 後端設定為 '%s':已經設定"
 
-#: http.c:2035
+#: http.c:2034
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23940,95 +23837,95 @@
 msgid "redirecting to %s"
 msgstr "重定向到 %s"
 
-#: remote-curl.c:642
+#: remote-curl.c:644
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "當沒有設定溫和處理檔案結束符(EOF)時,不應該有檔案結束符"
 
-#: remote-curl.c:654
-msgid "remote server sent stateless separator"
-msgstr "遠端伺服器傳送了無狀態的分隔符號"
+#: remote-curl.c:656
+msgid "remote server sent unexpected response end packet"
+msgstr "遠端伺服器傳送了非預期的回應結束封包"
 
-#: remote-curl.c:724
+#: remote-curl.c:726
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "無法還原 rpc post 資料 - 嘗試增加 http.postBuffer"
 
-#: remote-curl.c:754
+#: remote-curl.c:756
 #, c-format
 msgid "remote-curl: bad line length character: %.4s"
 msgstr "remote-curl: 錯誤的行長度字串:%.4s"
 
-#: remote-curl.c:756
+#: remote-curl.c:758
 msgid "remote-curl: unexpected response end packet"
 msgstr "remote-curl: 非預期的回應結束封包"
 
-#: remote-curl.c:832
+#: remote-curl.c:834
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC 失敗。%s"
 
-#: remote-curl.c:872
+#: remote-curl.c:874
 msgid "cannot handle pushes this big"
 msgstr "不能處理這麼大的推送"
 
-#: remote-curl.c:987
+#: remote-curl.c:989
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "不能壓縮請求,zlib 壓縮錯誤 %d"
 
-#: remote-curl.c:991
+#: remote-curl.c:993
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "不能壓縮請求,zlib 結束錯誤 %d"
 
-#: remote-curl.c:1041
+#: remote-curl.c:1043
 #, c-format
 msgid "%d bytes of length header were received"
 msgstr "收到了 %d 位元組長度的標頭"
 
-#: remote-curl.c:1043
+#: remote-curl.c:1045
 #, c-format
 msgid "%d bytes of body are still expected"
 msgstr "預期仍要有 %d 位元組的本文 (body)"
 
-#: remote-curl.c:1132
+#: remote-curl.c:1134
 msgid "dumb http transport does not support shallow capabilities"
-msgstr "啞 http 傳輸不支援 shalllow 能力"
+msgstr "啞 http 傳輸不支援 shallow 能力"
 
-#: remote-curl.c:1147
+#: remote-curl.c:1149
 msgid "fetch failed."
 msgstr "取得失敗。"
 
-#: remote-curl.c:1193
+#: remote-curl.c:1195
 msgid "cannot fetch by sha1 over smart http"
 msgstr "無法透過智慧 HTTP 取得 sha1"
 
-#: remote-curl.c:1237 remote-curl.c:1243
+#: remote-curl.c:1239 remote-curl.c:1245
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "協定錯誤:期望 sha/ref,卻得到 '%s'"
 
-#: remote-curl.c:1255 remote-curl.c:1373
+#: remote-curl.c:1257 remote-curl.c:1375
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http 傳輸協定不支援 %s"
 
-#: remote-curl.c:1291
+#: remote-curl.c:1293
 msgid "git-http-push failed"
 msgstr "git-http-push 失敗"
 
-#: remote-curl.c:1479
+#: remote-curl.c:1481
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl:用法:git remote-curl <遠端> [<url>]"
 
-#: remote-curl.c:1511
+#: remote-curl.c:1513
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl:錯誤讀取來自 git 的指令流"
 
-#: remote-curl.c:1518
+#: remote-curl.c:1520
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl:嘗試沒有本機版本庫下取得"
 
-#: remote-curl.c:1559
+#: remote-curl.c:1561
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl:未知的來自 git 的指令 '%s'"
@@ -24184,7 +24081,7 @@
 
 #: command-list.h:72
 msgid "Clone a repository into a new directory"
-msgstr "複製版本庫到一個新目錄"
+msgstr "複製版本庫至新目錄"
 
 #: command-list.h:73
 msgid "Display data in columns"
@@ -24224,7 +24121,7 @@
 
 #: command-list.h:82
 msgid "Export a single commit to a CVS checkout"
-msgstr "將一個提交匯出到 CVS 檢出中"
+msgstr "將一個提交匯出到 CVS 簽出中"
 
 #: command-list.h:83
 msgid "Salvage your data out of another SCM people love to hate"
@@ -24589,7 +24486,7 @@
 
 #: command-list.h:173
 msgid "Initialize and modify the sparse-checkout"
-msgstr "初始化並修改稀疏檢出"
+msgstr "初始化並修改稀疏簽出"
 
 #: command-list.h:174
 msgid "Stash the changes in a dirty working directory away"
@@ -24866,83 +24763,43 @@
 #: git-submodule.sh:218
 #, sh-format
 msgid "'$sm_path' does not have a commit checked out"
-msgstr "'$sm_path' 沒有檢出的提交"
+msgstr "'$sm_path' 沒有簽出的提交"
 
-#: git-submodule.sh:249
-#, sh-format
-msgid "Adding existing repo at '$sm_path' to the index"
-msgstr "新增位於 '$sm_path' 的現存版本庫到索引"
-
-#: git-submodule.sh:251
-#, sh-format
-msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' 已存在且不是一個有效的 git 版本庫"
-
-#: git-submodule.sh:259
-#, sh-format
-msgid "A git directory for '$sm_name' is found locally with remote(s):"
-msgstr "本機發現 '$sm_name' 的一個 git 目錄,與其對應的遠端版本庫:"
-
-#: git-submodule.sh:261
-#, sh-format
-msgid ""
-"If you want to reuse this local git directory instead of cloning again from\n"
-"  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct "
-"repo\n"
-"or you are unsure what this means choose another name with the '--name' "
-"option."
-msgstr ""
-"如果您想要重用這個本機 git 目錄而非重新複製自\n"
-"  $realrepo\n"
-"使用 '--force' 選項。如果本機 git 目錄不是正確的版本庫\n"
-"或者您不確定這裡的含義,使用 '--name' 選項選擇另外的名稱。"
-
-#: git-submodule.sh:267
-#, sh-format
-msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "啟動本機 git 目錄到子模組 '$sm_name'。"
-
-#: git-submodule.sh:279
-#, sh-format
-msgid "Unable to checkout submodule '$sm_path'"
-msgstr "不能檢出子模組 '$sm_path'"
-
-#: git-submodule.sh:284
+#: git-submodule.sh:248
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "無法新增子模組 '$sm_path'"
 
-#: git-submodule.sh:293
+#: git-submodule.sh:257
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "無法註冊子模組 '$sm_path'"
 
-#: git-submodule.sh:568
+#: git-submodule.sh:532
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "無法在子模組路徑 '$displaypath' 中找到目前版本"
 
-#: git-submodule.sh:578
+#: git-submodule.sh:542
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "無法在子模組路徑 '$sm_path' 中取得"
 
-#: git-submodule.sh:583
+#: git-submodule.sh:547
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr "無法在子模組路徑 '$sm_path' 中找到目前版本 ${remote_name}/${branch}"
 
-#: git-submodule.sh:601
+#: git-submodule.sh:565
 #, sh-format
 msgid ""
 "Unable to fetch in submodule path '$displaypath'; trying to directly fetch "
 "$sha1:"
 msgstr "無法在子模組路徑 '$displaypath' 中取得,嘗試直接取得 $sha1:"
 
-#: git-submodule.sh:607
+#: git-submodule.sh:571
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -24950,47 +24807,47 @@
 msgstr ""
 "取得了子模組路徑 '$displaypath',但是它沒有包含 $sha1。直接取得該提交失敗。"
 
-#: git-submodule.sh:614
+#: git-submodule.sh:578
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
-msgstr "無法在子模組路徑 '$displaypath' 中檢出 '$sha1'"
+msgstr "無法在子模組路徑 '$displaypath' 中簽出 '$sha1'"
 
-#: git-submodule.sh:615
+#: git-submodule.sh:579
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
-msgstr "子模組路徑 '$displaypath':檢出 '$sha1'"
+msgstr "子模組路徑 '$displaypath':簽出 '$sha1'"
 
-#: git-submodule.sh:619
+#: git-submodule.sh:583
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "無法在子模組路徑 '$displaypath' 中重定基底 '$sha1'"
 
-#: git-submodule.sh:620
+#: git-submodule.sh:584
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "子模組路徑 '$displaypath':重定基底至 '$sha1'"
 
-#: git-submodule.sh:625
+#: git-submodule.sh:589
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "無法合併 '$sha1' 到子模組路徑 '$displaypath' 中"
 
-#: git-submodule.sh:626
+#: git-submodule.sh:590
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "子模組路徑 '$displaypath':已合併入 '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:595
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "在子模組 '$displaypath' 中執行 '$command $sha1' 失敗"
 
-#: git-submodule.sh:632
+#: git-submodule.sh:596
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "子模組 '$displaypath':'$command $sha1'"
 
-#: git-submodule.sh:663
+#: git-submodule.sh:627
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "無法遞迴進子模組路徑 '$displaypath'"
@@ -25283,7 +25140,7 @@
 #: git-rebase--preserve-merges.sh:890
 #, sh-format
 msgid "Could not checkout $switch_to"
-msgstr "不能檢出 $switch_to"
+msgstr "不能簽出 $switch_to"
 
 #: git-rebase--preserve-merges.sh:897
 msgid "No HEAD?"
@@ -25685,39 +25542,39 @@
 msgid "invalid argument %s, expecting --"
 msgstr "無效的參數 %s,期望是 --"
 
-#: git-send-email.perl:138
+#: git-send-email.perl:129
 msgid "local zone differs from GMT by a non-minute interval\n"
 msgstr "本機時間和 GMT 有不到一分鐘間隔\n"
 
-#: git-send-email.perl:145 git-send-email.perl:151
+#: git-send-email.perl:136 git-send-email.perl:142
 msgid "local time offset greater than or equal to 24 hours\n"
 msgstr "本機時間位移量大於等於 24 小時\n"
 
-#: git-send-email.perl:222
+#: git-send-email.perl:214
 #, perl-format
 msgid "fatal: command '%s' died with exit code %d"
 msgstr "致命錯誤:命令「%s」中止,結束碼:%d"
 
-#: git-send-email.perl:235
+#: git-send-email.perl:227
 msgid "the editor exited uncleanly, aborting everything"
 msgstr "編輯器非正常離開,終止所有動作"
 
-#: git-send-email.perl:321
+#: git-send-email.perl:316
 #, perl-format
 msgid ""
 "'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "'%s' 包含您正在編寫的一個中間版本的信件。\n"
 
-#: git-send-email.perl:326
+#: git-send-email.perl:321
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
 msgstr "'%s.final' 包含編輯的信件。\n"
 
-#: git-send-email.perl:419
+#: git-send-email.perl:450
 msgid "--dump-aliases incompatible with other options\n"
 msgstr "--dump-aliases 和其它選項不相容\n"
 
-#: git-send-email.perl:493
+#: git-send-email.perl:525
 msgid ""
 "fatal: found configuration options for 'sendmail'\n"
 "git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -25727,47 +25584,47 @@
 "git-send-email 已經以 sendemail.* 選項設定 - 注意裡面的 'e'。\n"
 "請將 sendemail.forbidSendmailVariables 設為 false 停用此檢查。\n"
 
-#: git-send-email.perl:498 git-send-email.perl:700
+#: git-send-email.perl:530 git-send-email.perl:746
 msgid "Cannot run git format-patch from outside a repository\n"
 msgstr "不能在版本庫之外執行 git format-patch\n"
 
-#: git-send-email.perl:501
+#: git-send-email.perl:533
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
 msgstr "`batch-size` 和 `relogin` 必須同時定義(透過指令列或者設定選項)\n"
 
-#: git-send-email.perl:514
+#: git-send-email.perl:546
 #, perl-format
 msgid "Unknown --suppress-cc field: '%s'\n"
 msgstr "未知的 --suppress-cc 欄位:'%s'\n"
 
-#: git-send-email.perl:545
+#: git-send-email.perl:577
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
 msgstr "未知的 --confirm 設定:'%s'\n"
 
-#: git-send-email.perl:573
+#: git-send-email.perl:617
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
 msgstr "警告:不支援帶引號的 sendmail 別名:%s\n"
 
-#: git-send-email.perl:575
+#: git-send-email.perl:619
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
 msgstr "警告:不支援 `:include:`:%s\n"
 
-#: git-send-email.perl:577
+#: git-send-email.perl:621
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
 msgstr "警告:不支援 `/file` 或 `|pipe` 重定向:%s\n"
 
-#: git-send-email.perl:582
+#: git-send-email.perl:626
 #, perl-format
 msgid "warning: sendmail line is not recognized: %s\n"
 msgstr "警告:不能識別的 sendmail 行:%s\n"
 
-#: git-send-email.perl:666
+#: git-send-email.perl:711
 #, perl-format
 msgid ""
 "File '%s' exists but it could also be the range of commits\n"
@@ -25782,12 +25639,12 @@
 "    * 如果含義為一個檔案,使用 \"./%s\",或者\n"
 "    * 如果含義為一個範圍,使用 --format-patch 選項。\n"
 
-#: git-send-email.perl:687
+#: git-send-email.perl:732
 #, perl-format
 msgid "Failed to opendir %s: %s"
 msgstr "無法開啟目錄 %s: %s"
 
-#: git-send-email.perl:720
+#: git-send-email.perl:767
 msgid ""
 "\n"
 "No patch files specified!\n"
@@ -25797,17 +25654,17 @@
 "未指定修補檔案!\n"
 "\n"
 
-#: git-send-email.perl:733
+#: git-send-email.perl:780
 #, perl-format
 msgid "No subject line in %s?"
 msgstr "在 %s 中沒有標題行?"
 
-#: git-send-email.perl:743
+#: git-send-email.perl:791
 #, perl-format
 msgid "Failed to open for writing %s: %s"
 msgstr "為寫入開啟 %s 失敗: %s"
 
-#: git-send-email.perl:754
+#: git-send-email.perl:802
 msgid ""
 "Lines beginning in \"GIT:\" will be removed.\n"
 "Consider including an overall diffstat or table of contents\n"
@@ -25820,37 +25677,37 @@
 "\n"
 "如果您不想傳送摘要,清除內容。\n"
 
-#: git-send-email.perl:778
+#: git-send-email.perl:826
 #, perl-format
 msgid "Failed to open %s: %s"
 msgstr "無法開啟 %s: %s"
 
-#: git-send-email.perl:795
+#: git-send-email.perl:843
 #, perl-format
 msgid "Failed to open %s.final: %s"
 msgstr "無法開啟 %s.final: %s"
 
-#: git-send-email.perl:838
+#: git-send-email.perl:886
 msgid "Summary email is empty, skipping it\n"
 msgstr "摘要信件為空,略過\n"
 
 #. TRANSLATORS: please keep [y/N] as is.
-#: git-send-email.perl:873
+#: git-send-email.perl:935
 #, perl-format
 msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "您是否要使用 <%s> [y/N]? "
 
-#: git-send-email.perl:928
+#: git-send-email.perl:990
 msgid ""
 "The following files are 8bit, but do not declare a Content-Transfer-"
 "Encoding.\n"
 msgstr "如下檔案含 8bit 內容,但沒有聲明一個 Content-Transfer-Encoding。\n"
 
-#: git-send-email.perl:933
+#: git-send-email.perl:995
 msgid "Which 8bit encoding should I declare [UTF-8]? "
 msgstr "要宣告 8bit 為什麼樣的編碼格式 [UTF-8]? "
 
-#: git-send-email.perl:941
+#: git-send-email.perl:1003
 #, perl-format
 msgid ""
 "Refusing to send because the patch\n"
@@ -25862,20 +25719,20 @@
 "\t%s\n"
 "包含範本標題 '*** SUBJECT HERE ***'。如果確定想要傳送,使用參數 --force。\n"
 
-#: git-send-email.perl:960
+#: git-send-email.perl:1022
 msgid "To whom should the emails be sent (if anyone)?"
 msgstr "信件將要傳送給誰?"
 
-#: git-send-email.perl:978
+#: git-send-email.perl:1040
 #, perl-format
 msgid "fatal: alias '%s' expands to itself\n"
 msgstr "致命錯誤:別名 '%s' 擴展為它自己\n"
 
-#: git-send-email.perl:990
+#: git-send-email.perl:1052
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
 msgstr "(如果有)Message-ID 是否要被用作第一封信件的 In-Reply-To ? "
 
-#: git-send-email.perl:1048 git-send-email.perl:1056
+#: git-send-email.perl:1114 git-send-email.perl:1122
 #, perl-format
 msgid "error: unable to extract a valid address from: %s\n"
 msgstr "錯誤:不能從 %s 中擷取一個有效的信件位址\n"
@@ -25883,16 +25740,16 @@
 #. TRANSLATORS: Make sure to include [q] [d] [e] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1060
+#: git-send-email.perl:1126
 msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
 msgstr "如何處理這個位址?([q]uit|[d]rop|[e]dit):"
 
-#: git-send-email.perl:1377
+#: git-send-email.perl:1446
 #, perl-format
 msgid "CA path \"%s\" does not exist"
 msgstr "CA 路徑 \"%s\" 不存在"
 
-#: git-send-email.perl:1460
+#: git-send-email.perl:1529
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -25917,112 +25774,112 @@
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1475
+#: git-send-email.perl:1544
 msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr "傳送這封信件?([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 
-#: git-send-email.perl:1478
+#: git-send-email.perl:1547
 msgid "Send this email reply required"
 msgstr "傳送要求的信件回復"
 
-#: git-send-email.perl:1506
+#: git-send-email.perl:1581
 msgid "The required SMTP server is not properly defined."
 msgstr "要求的 SMTP 伺服器未被正確定義。"
 
-#: git-send-email.perl:1553
+#: git-send-email.perl:1628
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "伺服器不支援 STARTTLS!%s"
 
-#: git-send-email.perl:1558 git-send-email.perl:1562
+#: git-send-email.perl:1633 git-send-email.perl:1637
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS 失敗!%s"
 
-#: git-send-email.perl:1571
+#: git-send-email.perl:1646
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr "無法正確地初始化 SMTP。檢查設定並使用 --smtp-debug。"
 
-#: git-send-email.perl:1589
+#: git-send-email.perl:1664
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "無法傳送 %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "測試執行傳送 %s\n"
 
-#: git-send-email.perl:1592
+#: git-send-email.perl:1667
 #, perl-format
 msgid "Sent %s\n"
 msgstr "正傳送 %s\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "Dry-OK. Log says:\n"
 msgstr "測試執行成功。日誌說:\n"
 
-#: git-send-email.perl:1594
+#: git-send-email.perl:1669
 msgid "OK. Log says:\n"
 msgstr "OK。日誌說:\n"
 
-#: git-send-email.perl:1606
+#: git-send-email.perl:1688
 msgid "Result: "
 msgstr "結果:"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1691
 msgid "Result: OK\n"
 msgstr "結果:OK\n"
 
-#: git-send-email.perl:1627
+#: git-send-email.perl:1709
 #, perl-format
 msgid "can't open file %s"
 msgstr "無法開啟檔案 %s"
 
-#: git-send-email.perl:1674 git-send-email.perl:1694
+#: git-send-email.perl:1756 git-send-email.perl:1776
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) 新增 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1680
+#: git-send-email.perl:1762
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) 新增 to:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1737
+#: git-send-email.perl:1819
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) 新增 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1772
+#: git-send-email.perl:1854
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) 新增 cc: %s 自行 '%s'\n"
 
-#: git-send-email.perl:1883
+#: git-send-email.perl:1965
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) 不能執行 '%s'"
 
-#: git-send-email.perl:1890
+#: git-send-email.perl:1972
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) 新增 %s: %s 自:'%s'\n"
 
-#: git-send-email.perl:1894
+#: git-send-email.perl:1976
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) 無法關閉管道至 '%s'"
 
-#: git-send-email.perl:1924
+#: git-send-email.perl:2006
 msgid "cannot send message as 7bit"
 msgstr "不能以 7bit 形式傳送訊息"
 
-#: git-send-email.perl:1932
+#: git-send-email.perl:2014
 msgid "invalid transfer encoding"
 msgstr "無效的傳送編碼"
 
-#: git-send-email.perl:1966
+#: git-send-email.perl:2051
 #, perl-format
 msgid ""
 "fatal: %s: rejected by sendemail-validate hook\n"
@@ -26033,12 +25890,12 @@
 "%s\n"
 "警告:修補檔未能傳送\n"
 
-#: git-send-email.perl:1976 git-send-email.perl:2029 git-send-email.perl:2039
+#: git-send-email.perl:2061 git-send-email.perl:2114 git-send-email.perl:2124
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "不能開啟 %s:%s\n"
 
-#: git-send-email.perl:1979
+#: git-send-email.perl:2064
 #, perl-format
 msgid ""
 "fatal: %s:%d is longer than 998 characters\n"
@@ -26047,17 +25904,32 @@
 "致命錯誤:%s:%d 的字元數超過 998\n"
 "警告:修補檔未能傳送\n"
 
-#: git-send-email.perl:1997
+#: git-send-email.perl:2082
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "略過 %s 含備份後綴 '%s'。\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:2001
+#: git-send-email.perl:2086
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "您真的要傳送 %s?[y|N]:"
 
+#~ msgid "unable to write stateless separator packet"
+#~ msgstr "無法寫入無狀態的分隔符號封包"
+
+#~ msgid "git merge --abort"
+#~ msgstr "git merge --abort"
+
+#~ msgid "git merge --continue"
+#~ msgstr "git merge --continue"
+
+#~ msgid "git stash clear"
+#~ msgstr "git stash clear"
+
+#~ msgid "remote server sent stateless separator"
+#~ msgstr "遠端伺服器傳送了無狀態的分隔符號"
+
 #~ msgid "--cached and --3way cannot be used together."
 #~ msgstr "--cached 和 --3way 不能同時使用。"
 
@@ -26067,7 +25939,6 @@
 #~ msgid "one"
 #~ msgstr "一方"
 
-#, c-format
 #~ msgid "Already up to date!"
 #~ msgstr "已經是最新的!"
 
@@ -26087,7 +25958,6 @@
 #~ "對 rebase.useBuiltin 的支援已被刪除!\n"
 #~ "詳見 'git help config' 中的條目。"
 
-#, perl-format
 #~ msgid "%s: patch contains a line longer than 998 characters"
 #~ msgstr "%s:修補檔包含一個超過 998 字元的行"
 
@@ -26100,11 +25970,9 @@
 #~ msgid "repository is shallow; skipping commit-graph"
 #~ msgstr "版本庫是淺複製;忽略提交圖形"
 
-#, c-format
 #~ msgid "commit-graph improper chunk offset %08x%08x"
 #~ msgstr "提交圖形不正確的區塊位移 %08x%08x"
 
-#, c-format
 #~ msgid "commit-graph chunk id %08x appears multiple times"
 #~ msgstr "提交圖形區塊 id %08x 出現了多次"
 
@@ -26155,11 +26023,9 @@
 #~ msgid "Force progress reporting"
 #~ msgstr "強制進度顯示"
 
-#, c-format
 #~ msgid "Error deleting remote-tracking branch '%s'"
 #~ msgstr "無法刪除遠端追蹤分支 '%s'"
 
-#, c-format
 #~ msgid "Error deleting branch '%s'"
 #~ msgstr "無法刪除分支 '%s'"
 
@@ -26178,6 +26044,5 @@
 #~ msgid "too many params"
 #~ msgstr "太多參數"
 
-#, sh-format
 #~ msgid "Bad rev input: $arg"
 #~ msgstr "壞的輸入版本:$arg"
diff --git a/pretty.c b/pretty.c
index b1ecd03..73b5ead 100644
--- a/pretty.c
+++ b/pretty.c
@@ -671,7 +671,11 @@
 	 * If the re-encoding failed, out might be NULL here; in that
 	 * case we just return the commit message verbatim.
 	 */
-	return out ? out : msg;
+	if (!out) {
+		warning("unable to reencode commit to '%s'", output_encoding);
+		return msg;
+	}
+	return out;
 }
 
 static int mailmap_name(const char **email, size_t *email_len,
@@ -1735,6 +1739,10 @@
 	case 'S':
 		w->source = 1;
 		break;
+	case 'd':
+	case 'D':
+		w->decorate = 1;
+		break;
 	}
 	return 0;
 }
diff --git a/pretty.h b/pretty.h
index f034609..2f16acd 100644
--- a/pretty.h
+++ b/pretty.h
@@ -65,12 +65,16 @@
 	return (fmt == CMIT_FMT_EMAIL || fmt == CMIT_FMT_MBOXRD);
 }
 
+/*
+ * Examine the user-specified format given by "fmt" (or if NULL, the global one
+ * previously saved by get_commit_format()), and set flags based on which items
+ * the format will need when it is expanded.
+ */
 struct userformat_want {
 	unsigned notes:1;
 	unsigned source:1;
+	unsigned decorate:1;
 };
-
-/* Set the flag "w->notes" if there is placeholder %N in "fmt". */
 void userformat_find_requirements(const char *fmt, struct userformat_want *w);
 
 /*
diff --git a/promisor-remote.c b/promisor-remote.c
index da3f2ca..db2ebdc 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -5,14 +5,13 @@
 #include "transport.h"
 #include "strvec.h"
 
-static char *repository_format_partial_clone;
+struct promisor_remote_config {
+	struct promisor_remote *promisors;
+	struct promisor_remote **promisors_tail;
+};
 
-void set_repository_format_partial_clone(char *partial_clone)
-{
-	repository_format_partial_clone = xstrdup_or_null(partial_clone);
-}
-
-static int fetch_objects(const char *remote_name,
+static int fetch_objects(struct repository *repo,
+			 const char *remote_name,
 			 const struct object_id *oids,
 			 int oid_nr)
 {
@@ -22,6 +21,8 @@
 
 	child.git_cmd = 1;
 	child.in = -1;
+	if (repo != the_repository)
+		prepare_other_repo_env(&child.env_array, repo->gitdir);
 	strvec_pushl(&child.args, "-c", "fetch.negotiationAlgorithm=noop",
 		     "fetch", remote_name, "--no-tags",
 		     "--no-write-fetch-head", "--recurse-submodules=no",
@@ -30,6 +31,8 @@
 		die(_("promisor-remote: unable to fork off fetch subprocess"));
 	child_in = xfdopen(child.in, "w");
 
+	trace2_data_intmax("promisor", repo, "fetch_count", oid_nr);
+
 	for (i = 0; i < oid_nr; i++) {
 		if (fputs(oid_to_hex(&oids[i]), child_in) < 0)
 			die_errno(_("promisor-remote: could not write to fetch subprocess"));
@@ -42,10 +45,8 @@
 	return finish_command(&child) ? -1 : 0;
 }
 
-static struct promisor_remote *promisors;
-static struct promisor_remote **promisors_tail = &promisors;
-
-static struct promisor_remote *promisor_remote_new(const char *remote_name)
+static struct promisor_remote *promisor_remote_new(struct promisor_remote_config *config,
+						   const char *remote_name)
 {
 	struct promisor_remote *r;
 
@@ -57,18 +58,19 @@
 
 	FLEX_ALLOC_STR(r, name, remote_name);
 
-	*promisors_tail = r;
-	promisors_tail = &r->next;
+	*config->promisors_tail = r;
+	config->promisors_tail = &r->next;
 
 	return r;
 }
 
-static struct promisor_remote *promisor_remote_lookup(const char *remote_name,
+static struct promisor_remote *promisor_remote_lookup(struct promisor_remote_config *config,
+						      const char *remote_name,
 						      struct promisor_remote **previous)
 {
 	struct promisor_remote *r, *p;
 
-	for (p = NULL, r = promisors; r; p = r, r = r->next)
+	for (p = NULL, r = config->promisors; r; p = r, r = r->next)
 		if (!strcmp(r->name, remote_name)) {
 			if (previous)
 				*previous = p;
@@ -78,7 +80,8 @@
 	return NULL;
 }
 
-static void promisor_remote_move_to_tail(struct promisor_remote *r,
+static void promisor_remote_move_to_tail(struct promisor_remote_config *config,
+					 struct promisor_remote *r,
 					 struct promisor_remote *previous)
 {
 	if (r->next == NULL)
@@ -87,14 +90,15 @@
 	if (previous)
 		previous->next = r->next;
 	else
-		promisors = r->next ? r->next : r;
+		config->promisors = r->next ? r->next : r;
 	r->next = NULL;
-	*promisors_tail = r;
-	promisors_tail = &r->next;
+	*config->promisors_tail = r;
+	config->promisors_tail = &r->next;
 }
 
 static int promisor_remote_config(const char *var, const char *value, void *data)
 {
+	struct promisor_remote_config *config = data;
 	const char *name;
 	size_t namelen;
 	const char *subkey;
@@ -110,8 +114,8 @@
 
 		remote_name = xmemdupz(name, namelen);
 
-		if (!promisor_remote_lookup(remote_name, NULL))
-			promisor_remote_new(remote_name);
+		if (!promisor_remote_lookup(config, remote_name, NULL))
+			promisor_remote_new(config, remote_name);
 
 		free(remote_name);
 		return 0;
@@ -120,9 +124,9 @@
 		struct promisor_remote *r;
 		char *remote_name = xmemdupz(name, namelen);
 
-		r = promisor_remote_lookup(remote_name, NULL);
+		r = promisor_remote_lookup(config, remote_name, NULL);
 		if (!r)
-			r = promisor_remote_new(remote_name);
+			r = promisor_remote_new(config, remote_name);
 
 		free(remote_name);
 
@@ -135,59 +139,63 @@
 	return 0;
 }
 
-static int initialized;
-
-static void promisor_remote_init(void)
+static void promisor_remote_init(struct repository *r)
 {
-	if (initialized)
+	struct promisor_remote_config *config;
+
+	if (r->promisor_remote_config)
 		return;
-	initialized = 1;
+	config = r->promisor_remote_config =
+		xcalloc(sizeof(*r->promisor_remote_config), 1);
+	config->promisors_tail = &config->promisors;
 
-	git_config(promisor_remote_config, NULL);
+	repo_config(r, promisor_remote_config, config);
 
-	if (repository_format_partial_clone) {
+	if (r->repository_format_partial_clone) {
 		struct promisor_remote *o, *previous;
 
-		o = promisor_remote_lookup(repository_format_partial_clone,
+		o = promisor_remote_lookup(config,
+					   r->repository_format_partial_clone,
 					   &previous);
 		if (o)
-			promisor_remote_move_to_tail(o, previous);
+			promisor_remote_move_to_tail(config, o, previous);
 		else
-			promisor_remote_new(repository_format_partial_clone);
+			promisor_remote_new(config, r->repository_format_partial_clone);
 	}
 }
 
-static void promisor_remote_clear(void)
+void promisor_remote_clear(struct promisor_remote_config *config)
 {
-	while (promisors) {
-		struct promisor_remote *r = promisors;
-		promisors = promisors->next;
+	while (config->promisors) {
+		struct promisor_remote *r = config->promisors;
+		config->promisors = config->promisors->next;
 		free(r);
 	}
 
-	promisors_tail = &promisors;
+	config->promisors_tail = &config->promisors;
 }
 
-void promisor_remote_reinit(void)
+void repo_promisor_remote_reinit(struct repository *r)
 {
-	initialized = 0;
-	promisor_remote_clear();
-	promisor_remote_init();
+	promisor_remote_clear(r->promisor_remote_config);
+	FREE_AND_NULL(r->promisor_remote_config);
+	promisor_remote_init(r);
 }
 
-struct promisor_remote *promisor_remote_find(const char *remote_name)
+struct promisor_remote *repo_promisor_remote_find(struct repository *r,
+						  const char *remote_name)
 {
-	promisor_remote_init();
+	promisor_remote_init(r);
 
 	if (!remote_name)
-		return promisors;
+		return r->promisor_remote_config->promisors;
 
-	return promisor_remote_lookup(remote_name, NULL);
+	return promisor_remote_lookup(r->promisor_remote_config, remote_name, NULL);
 }
 
-int has_promisor_remote(void)
+int repo_has_promisor_remote(struct repository *r)
 {
-	return !!promisor_remote_find(NULL);
+	return !!repo_promisor_remote_find(r, NULL);
 }
 
 static int remove_fetched_oids(struct repository *repo,
@@ -235,10 +243,10 @@
 	if (oid_nr == 0)
 		return 0;
 
-	promisor_remote_init();
+	promisor_remote_init(repo);
 
-	for (r = promisors; r; r = r->next) {
-		if (fetch_objects(r->name, remaining_oids, remaining_nr) < 0) {
+	for (r = repo->promisor_remote_config->promisors; r; r = r->next) {
+		if (fetch_objects(repo, r->name, remaining_oids, remaining_nr) < 0) {
 			if (remaining_nr == 1)
 				continue;
 			remaining_nr = remove_fetched_oids(repo, &remaining_oids,
diff --git a/promisor-remote.h b/promisor-remote.h
index c7a1406..edc45ab 100644
--- a/promisor-remote.h
+++ b/promisor-remote.h
@@ -17,9 +17,25 @@
 	const char name[FLEX_ARRAY];
 };
 
-void promisor_remote_reinit(void);
-struct promisor_remote *promisor_remote_find(const char *remote_name);
-int has_promisor_remote(void);
+void repo_promisor_remote_reinit(struct repository *r);
+static inline void promisor_remote_reinit(void)
+{
+	repo_promisor_remote_reinit(the_repository);
+}
+
+void promisor_remote_clear(struct promisor_remote_config *config);
+
+struct promisor_remote *repo_promisor_remote_find(struct repository *r, const char *remote_name);
+static inline struct promisor_remote *promisor_remote_find(const char *remote_name)
+{
+	return repo_promisor_remote_find(the_repository, remote_name);
+}
+
+int repo_has_promisor_remote(struct repository *r);
+static inline int has_promisor_remote(void)
+{
+	return repo_has_promisor_remote(the_repository);
+}
 
 /*
  * Fetches all requested objects from all promisor remotes, trying them one at
@@ -32,10 +48,4 @@
 			       const struct object_id *oids,
 			       int oid_nr);
 
-/*
- * This should be used only once from setup.c to set the value we got
- * from the extensions.partialclone config option.
- */
-void set_repository_format_partial_clone(char *partial_clone);
-
 #endif /* PROMISOR_REMOTE_H */
diff --git a/protocol-caps.c b/protocol-caps.c
index 13a9e63..901b679 100644
--- a/protocol-caps.c
+++ b/protocol-caps.c
@@ -69,9 +69,10 @@
 			}
 		}
 
-		packet_writer_write(writer, "%s",
-				    strbuf_detach(&send_buffer, NULL));
+		packet_writer_write(writer, "%s", send_buffer.buf);
+		strbuf_reset(&send_buffer);
 	}
+	strbuf_release(&send_buffer);
 }
 
 int cap_object_info(struct repository *r, struct strvec *keys,
diff --git a/protocol-caps.h b/protocol-caps.h
index 6351648..0a9f49d 100644
--- a/protocol-caps.h
+++ b/protocol-caps.h
@@ -7,4 +7,4 @@
 int cap_object_info(struct repository *r, struct strvec *keys,
 		    struct packet_reader *request);
 
-#endif /* PROTOCOL_CAPS_H */
\ No newline at end of file
+#endif /* PROTOCOL_CAPS_H */
diff --git a/protocol.c b/protocol.c
index 052d7ed..c53f7df 100644
--- a/protocol.c
+++ b/protocol.c
@@ -73,6 +73,8 @@
 		string_list_clear(&list, 0);
 	}
 
+	trace2_data_intmax("transfer", NULL, "negotiated-version", version);
+
 	return version;
 }
 
diff --git a/quote.c b/quote.c
index 8a3a5e3..26719d2 100644
--- a/quote.c
+++ b/quote.c
@@ -471,6 +471,23 @@
 	strbuf_addch(sb, sq);
 }
 
+void perl_quote_buf_with_len(struct strbuf *sb, const char *src, size_t len)
+{
+	const char sq = '\'';
+	const char bq = '\\';
+	const char *c = src;
+	const char *end = src + len;
+
+	strbuf_addch(sb, sq);
+	while (c != end) {
+		if (*c == sq || *c == bq)
+			strbuf_addch(sb, bq);
+		strbuf_addch(sb, *c);
+		c++;
+	}
+	strbuf_addch(sb, sq);
+}
+
 void python_quote_buf(struct strbuf *sb, const char *src)
 {
 	const char sq = '\'';
diff --git a/quote.h b/quote.h
index 768cc63..87ff458 100644
--- a/quote.h
+++ b/quote.h
@@ -31,6 +31,7 @@
 
 void sq_quote_buf(struct strbuf *, const char *src);
 void sq_quote_argv(struct strbuf *, const char **argv);
+__attribute__((format (printf, 2, 3)))
 void sq_quotef(struct strbuf *, const char *fmt, ...);
 
 /*
@@ -94,6 +95,7 @@
 
 /* quoting as a string literal for other languages */
 void perl_quote_buf(struct strbuf *sb, const char *src);
+void perl_quote_buf_with_len(struct strbuf *sb, const char *src, size_t len);
 void python_quote_buf(struct strbuf *sb, const char *src);
 void tcl_quote_buf(struct strbuf *sb, const char *src);
 void basic_regex_quote_buf(struct strbuf *sb, const char *src);
diff --git a/range-diff.c b/range-diff.c
index 1a4471f..e731525 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -26,17 +26,6 @@
 	struct object_id oid;
 };
 
-static size_t find_end_of_line(char *buffer, unsigned long size)
-{
-	char *eol = memchr(buffer, '\n', size);
-
-	if (!eol)
-		return size;
-
-	*eol = '\0';
-	return eol + 1 - buffer;
-}
-
 /*
  * Reads the patches into a string list, with the `util` field being populated
  * as struct object_id (will need to be free()d).
@@ -49,7 +38,7 @@
 	struct patch_util *util = NULL;
 	int in_header = 1;
 	char *line, *current_filename = NULL;
-	int offset, len;
+	ssize_t len;
 	size_t size;
 
 	strvec_pushl(&cp.args, "log", "--no-color", "-p", "--no-merges",
@@ -86,11 +75,18 @@
 
 	line = contents.buf;
 	size = contents.len;
-	for (offset = 0; size > 0; offset += len, size -= len, line += len) {
+	for (; size > 0; size -= len, line += len) {
 		const char *p;
+		char *eol;
 
-		len = find_end_of_line(line, size);
-		line[len - 1] = '\0';
+		eol = memchr(line, '\n', size);
+		if (eol) {
+			*eol = '\0';
+			len = eol + 1 - line;
+		} else {
+			len = size;
+		}
+
 		if (skip_prefix(line, "commit ", &p)) {
 			if (util) {
 				string_list_append(list, buf.buf)->util = util;
@@ -132,7 +128,8 @@
 			strbuf_addch(&buf, '\n');
 			if (!util->diff_offset)
 				util->diff_offset = buf.len;
-			line[len - 1] = '\n';
+			if (eol)
+				*eol = '\n';
 			orig_len = len;
 			len = parse_git_diff_header(&root, &linenr, 0, line,
 						    len, size, &patch);
@@ -274,9 +271,10 @@
 	hashmap_clear(&map);
 }
 
-static void diffsize_consume(void *data, char *line, unsigned long len)
+static int diffsize_consume(void *data, char *line, unsigned long len)
 {
 	(*(int *)data)++;
+	return 0;
 }
 
 static void diffsize_hunk(void *data, long ob, long on, long nb, long nn,
diff --git a/reachable.c b/reachable.c
index c598472..84e3d0d 100644
--- a/reachable.c
+++ b/reachable.c
@@ -159,24 +159,6 @@
 				      FOR_EACH_OBJECT_LOCAL_ONLY);
 }
 
-static void *lookup_object_by_type(struct repository *r,
-				   const struct object_id *oid,
-				   enum object_type type)
-{
-	switch (type) {
-	case OBJ_COMMIT:
-		return lookup_commit(r, oid);
-	case OBJ_TREE:
-		return lookup_tree(r, oid);
-	case OBJ_TAG:
-		return lookup_tag(r, oid);
-	case OBJ_BLOB:
-		return lookup_blob(r, oid);
-	default:
-		die("BUG: unknown object type %d", type);
-	}
-}
-
 static int mark_object_seen(const struct object_id *oid,
 			     enum object_type type,
 			     int exclude,
diff --git a/read-cache.c b/read-cache.c
index 77961a3..9048ef9 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -27,6 +27,7 @@
 #include "progress.h"
 #include "sparse-index.h"
 #include "csum-file.h"
+#include "promisor-remote.h"
 
 /* Mask for the name length in ce_flags in the on-disk index */
 
@@ -1585,8 +1586,7 @@
 	 */
 	preload_index(istate, pathspec, 0);
 	trace2_region_enter("index", "refresh", NULL);
-	/* TODO: audit for interaction with sparse-index. */
-	ensure_full_index(istate);
+
 	for (i = 0; i < istate->cache_nr; i++) {
 		struct cache_entry *ce, *new_entry;
 		int cache_errno = 0;
@@ -1601,6 +1601,13 @@
 		if (ignore_skip_worktree && ce_skip_worktree(ce))
 			continue;
 
+		/*
+		 * If this entry is a sparse directory, then there isn't
+		 * any stat() information to update. Ignore the entry.
+		 */
+		if (S_ISSPARSEDIR(ce->ce_mode))
+			continue;
+
 		if (pathspec && !ce_path_match(istate, ce, pathspec, seen))
 			filtered = 1;
 
@@ -1628,8 +1635,7 @@
 		t2_sum_scan += t2_did_scan;
 		if (new_entry == ce)
 			continue;
-		if (progress)
-			display_progress(progress, i);
+		display_progress(progress, i);
 		if (!new_entry) {
 			const char *fmt;
 
@@ -1664,10 +1670,8 @@
 	trace2_data_intmax("index", NULL, "refresh/sum_lstat", t2_sum_lstat);
 	trace2_data_intmax("index", NULL, "refresh/sum_scan", t2_sum_scan);
 	trace2_region_leave("index", "refresh", NULL);
-	if (progress) {
-		display_progress(progress, istate->cache_nr);
-		stop_progress(&progress);
-	}
+	display_progress(progress, istate->cache_nr);
+	stop_progress(&progress);
 	trace_performance_leave("refresh index");
 	return has_errors;
 }
@@ -2236,7 +2240,8 @@
 
 	mmap = xmmap_gently(NULL, mmap_size, PROT_READ, MAP_PRIVATE, fd, 0);
 	if (mmap == MAP_FAILED)
-		die_errno(_("%s: unable to map index file"), path);
+		die_errno(_("%s: unable to map index file%s"), path,
+			mmap_os_err());
 	close(fd);
 
 	hdr = (const struct cache_header *)mmap;
@@ -2501,6 +2506,7 @@
 		opt.flags.exit_with_status = 1;
 		if (!sb)
 			opt.flags.quick = 1;
+		diff_setup_done(&opt);
 		do_diff_cache(&cmp, &opt);
 		diffcore_std(&opt);
 		for (i = 0; sb && i < diff_queued_diff.nr; i++) {
@@ -3659,3 +3665,25 @@
 		strbuf_add(sb, &buffer, sizeof(uint32_t));
 	}
 }
+
+void prefetch_cache_entries(const struct index_state *istate,
+			    must_prefetch_predicate must_prefetch)
+{
+	int i;
+	struct oid_array to_fetch = OID_ARRAY_INIT;
+
+	for (i = 0; i < istate->cache_nr; i++) {
+		struct cache_entry *ce = istate->cache[i];
+
+		if (S_ISGITLINK(ce->ce_mode) || !must_prefetch(ce))
+			continue;
+		if (!oid_object_info_extended(the_repository, &ce->oid,
+					      NULL,
+					      OBJECT_INFO_FOR_PREFETCH))
+			continue;
+		oid_array_append(&to_fetch, &ce->oid);
+	}
+	promisor_remote_get_direct(the_repository,
+				   to_fetch.oid, to_fetch.nr);
+	oid_array_clear(&to_fetch);
+}
diff --git a/ref-filter.c b/ref-filter.c
index 4db0e40..93ce2a6 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -144,6 +144,7 @@
 	ATOM_BODY,
 	ATOM_TRAILERS,
 	ATOM_CONTENTS,
+	ATOM_RAW,
 	ATOM_UPSTREAM,
 	ATOM_PUSH,
 	ATOM_SYMREF,
@@ -156,6 +157,7 @@
 	ATOM_IF,
 	ATOM_THEN,
 	ATOM_ELSE,
+	ATOM_REST,
 };
 
 /*
@@ -190,6 +192,9 @@
 			unsigned int nlines;
 		} contents;
 		struct {
+			enum { RAW_BARE, RAW_LENGTH } option;
+		} raw_data;
+		struct {
 			cmp_status cmp_status;
 			const char *str;
 		} if_then_else;
@@ -213,6 +218,7 @@
  * Expand string, append it to strbuf *sb, then return error code ret.
  * Allow to save few lines of code.
  */
+__attribute__((format (printf, 3, 4)))
 static int strbuf_addf_ret(struct strbuf *sb, int ret, const char *fmt, ...)
 {
 	va_list ap;
@@ -222,7 +228,7 @@
 	return ret;
 }
 
-static int color_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int color_atom_parser(struct ref_format *format, struct used_atom *atom,
 			     const char *color_value, struct strbuf *err)
 {
 	if (!color_value)
@@ -260,7 +266,7 @@
 	return 0;
 }
 
-static int remote_ref_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int remote_ref_atom_parser(struct ref_format *format, struct used_atom *atom,
 				  const char *arg, struct strbuf *err)
 {
 	struct string_list params = STRING_LIST_INIT_DUP;
@@ -307,7 +313,7 @@
 	return 0;
 }
 
-static int objecttype_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int objecttype_atom_parser(struct ref_format *format, struct used_atom *atom,
 				  const char *arg, struct strbuf *err)
 {
 	if (arg)
@@ -319,7 +325,7 @@
 	return 0;
 }
 
-static int objectsize_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int objectsize_atom_parser(struct ref_format *format, struct used_atom *atom,
 				  const char *arg, struct strbuf *err)
 {
 	if (!arg) {
@@ -339,7 +345,7 @@
 	return 0;
 }
 
-static int deltabase_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int deltabase_atom_parser(struct ref_format *format, struct used_atom *atom,
 				 const char *arg, struct strbuf *err)
 {
 	if (arg)
@@ -351,7 +357,7 @@
 	return 0;
 }
 
-static int body_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int body_atom_parser(struct ref_format *format, struct used_atom *atom,
 			    const char *arg, struct strbuf *err)
 {
 	if (arg)
@@ -360,7 +366,7 @@
 	return 0;
 }
 
-static int subject_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int subject_atom_parser(struct ref_format *format, struct used_atom *atom,
 			       const char *arg, struct strbuf *err)
 {
 	if (!arg)
@@ -372,7 +378,7 @@
 	return 0;
 }
 
-static int trailers_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int trailers_atom_parser(struct ref_format *format, struct used_atom *atom,
 				const char *arg, struct strbuf *err)
 {
 	atom->u.contents.trailer_opts.no_divider = 1;
@@ -398,7 +404,7 @@
 	return 0;
 }
 
-static int contents_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int contents_atom_parser(struct ref_format *format, struct used_atom *atom,
 				const char *arg, struct strbuf *err)
 {
 	if (!arg)
@@ -426,7 +432,19 @@
 	return 0;
 }
 
-static int oid_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int raw_atom_parser(struct ref_format *format, struct used_atom *atom,
+				const char *arg, struct strbuf *err)
+{
+	if (!arg)
+		atom->u.raw_data.option = RAW_BARE;
+	else if (!strcmp(arg, "size"))
+		atom->u.raw_data.option = RAW_LENGTH;
+	else
+		return strbuf_addf_ret(err, -1, _("unrecognized %%(raw) argument: %s"), arg);
+	return 0;
+}
+
+static int oid_atom_parser(struct ref_format *format, struct used_atom *atom,
 			   const char *arg, struct strbuf *err)
 {
 	if (!arg)
@@ -445,7 +463,7 @@
 	return 0;
 }
 
-static int person_email_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int person_email_atom_parser(struct ref_format *format, struct used_atom *atom,
 				    const char *arg, struct strbuf *err)
 {
 	if (!arg)
@@ -459,7 +477,7 @@
 	return 0;
 }
 
-static int refname_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int refname_atom_parser(struct ref_format *format, struct used_atom *atom,
 			       const char *arg, struct strbuf *err)
 {
 	return refname_atom_parser_internal(&atom->u.refname, arg, atom->name, err);
@@ -476,7 +494,7 @@
 	return -1;
 }
 
-static int align_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int align_atom_parser(struct ref_format *format, struct used_atom *atom,
 			     const char *arg, struct strbuf *err)
 {
 	struct align *align = &atom->u.align;
@@ -528,7 +546,7 @@
 	return 0;
 }
 
-static int if_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int if_atom_parser(struct ref_format *format, struct used_atom *atom,
 			  const char *arg, struct strbuf *err)
 {
 	if (!arg) {
@@ -543,7 +561,16 @@
 	return 0;
 }
 
-static int head_atom_parser(const struct ref_format *format, struct used_atom *atom,
+static int rest_atom_parser(struct ref_format *format, struct used_atom *atom,
+			    const char *arg, struct strbuf *err)
+{
+	if (arg)
+		return strbuf_addf_ret(err, -1, _("%%(rest) does not take arguments"));
+	format->use_rest = 1;
+	return 0;
+}
+
+static int head_atom_parser(struct ref_format *format, struct used_atom *atom,
 			    const char *arg, struct strbuf *unused_err)
 {
 	atom->u.head = resolve_refdup("HEAD", RESOLVE_REF_READING, NULL, NULL);
@@ -554,7 +581,7 @@
 	const char *name;
 	info_source source;
 	cmp_type cmp_type;
-	int (*parser)(const struct ref_format *format, struct used_atom *atom,
+	int (*parser)(struct ref_format *format, struct used_atom *atom,
 		      const char *arg, struct strbuf *err);
 } valid_atom[] = {
 	[ATOM_REFNAME] = { "refname", SOURCE_NONE, FIELD_STR, refname_atom_parser },
@@ -586,6 +613,7 @@
 	[ATOM_BODY] = { "body", SOURCE_OBJ, FIELD_STR, body_atom_parser },
 	[ATOM_TRAILERS] = { "trailers", SOURCE_OBJ, FIELD_STR, trailers_atom_parser },
 	[ATOM_CONTENTS] = { "contents", SOURCE_OBJ, FIELD_STR, contents_atom_parser },
+	[ATOM_RAW] = { "raw", SOURCE_OBJ, FIELD_STR, raw_atom_parser },
 	[ATOM_UPSTREAM] = { "upstream", SOURCE_NONE, FIELD_STR, remote_ref_atom_parser },
 	[ATOM_PUSH] = { "push", SOURCE_NONE, FIELD_STR, remote_ref_atom_parser },
 	[ATOM_SYMREF] = { "symref", SOURCE_NONE, FIELD_STR, refname_atom_parser },
@@ -598,6 +626,7 @@
 	[ATOM_IF] = { "if", SOURCE_NONE, FIELD_STR, if_atom_parser },
 	[ATOM_THEN] = { "then", SOURCE_NONE },
 	[ATOM_ELSE] = { "else", SOURCE_NONE },
+	[ATOM_REST] = { "rest", SOURCE_NONE, FIELD_STR, rest_atom_parser },
 	/*
 	 * Please update $__git_ref_fieldlist in git-completion.bash
 	 * when you add new atoms
@@ -620,16 +649,23 @@
 
 struct atom_value {
 	const char *s;
+	ssize_t s_size;
 	int (*handler)(struct atom_value *atomv, struct ref_formatting_state *state,
 		       struct strbuf *err);
 	uintmax_t value; /* used for sorting when not FIELD_STR */
 	struct used_atom *atom;
 };
 
+#define ATOM_SIZE_UNSPECIFIED (-1)
+
+#define ATOM_VALUE_INIT { \
+	.s_size = ATOM_SIZE_UNSPECIFIED \
+}
+
 /*
  * Used to parse format string and sort specifiers
  */
-static int parse_ref_filter_atom(const struct ref_format *format,
+static int parse_ref_filter_atom(struct ref_format *format,
 				 const char *atom, const char *ep,
 				 struct strbuf *err)
 {
@@ -644,13 +680,6 @@
 		return strbuf_addf_ret(err, -1, _("malformed field name: %.*s"),
 				       (int)(ep-atom), atom);
 
-	/* Do we have the atom already used elsewhere? */
-	for (i = 0; i < used_atom_cnt; i++) {
-		int len = strlen(used_atom[i].name);
-		if (len == ep - atom && !memcmp(used_atom[i].name, atom, len))
-			return i;
-	}
-
 	/*
 	 * If the atom name has a colon, strip it and everything after
 	 * it off - it specifies the format for this entry, and
@@ -660,6 +689,13 @@
 	arg = memchr(sp, ':', ep - sp);
 	atom_len = (arg ? arg : ep) - sp;
 
+	/* Do we have the atom already used elsewhere? */
+	for (i = 0; i < used_atom_cnt; i++) {
+		int len = strlen(used_atom[i].name);
+		if (len == ep - atom && !memcmp(used_atom[i].name, atom, len))
+			return i;
+	}
+
 	/* Is the atom a valid one? */
 	for (i = 0; i < ARRAY_SIZE(valid_atom); i++) {
 		int len = strlen(valid_atom[i].name);
@@ -709,17 +745,23 @@
 	return at;
 }
 
-static void quote_formatting(struct strbuf *s, const char *str, int quote_style)
+static void quote_formatting(struct strbuf *s, const char *str, ssize_t len, int quote_style)
 {
 	switch (quote_style) {
 	case QUOTE_NONE:
-		strbuf_addstr(s, str);
+		if (len < 0)
+			strbuf_addstr(s, str);
+		else
+			strbuf_add(s, str, len);
 		break;
 	case QUOTE_SHELL:
 		sq_quote_buf(s, str);
 		break;
 	case QUOTE_PERL:
-		perl_quote_buf(s, str);
+		if (len < 0)
+			perl_quote_buf(s, str);
+		else
+			perl_quote_buf_with_len(s, str, len);
 		break;
 	case QUOTE_PYTHON:
 		python_quote_buf(s, str);
@@ -740,9 +782,11 @@
 	 * encountered.
 	 */
 	if (!state->stack->prev)
-		quote_formatting(&state->stack->output, v->s, state->quote_style);
-	else
+		quote_formatting(&state->stack->output, v->s, v->s_size, state->quote_style);
+	else if (v->s_size < 0)
 		strbuf_addstr(&state->stack->output, v->s);
+	else
+		strbuf_add(&state->stack->output, v->s, v->s_size);
 	return 0;
 }
 
@@ -842,21 +886,23 @@
 	return 0;
 }
 
-static int is_empty(const char *s)
+static int is_empty(struct strbuf *buf)
 {
-	while (*s != '\0') {
-		if (!isspace(*s))
-			return 0;
-		s++;
-	}
-	return 1;
-}
+	const char *cur = buf->buf;
+	const char *end = buf->buf + buf->len;
+
+	while (cur != end && (isspace(*cur)))
+		cur++;
+
+	return cur == end;
+ }
 
 static int then_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state,
 			     struct strbuf *err)
 {
 	struct ref_formatting_stack *cur = state->stack;
 	struct if_then_else *if_then_else = NULL;
+	size_t str_len = 0;
 
 	if (cur->at_end == if_then_else_handler)
 		if_then_else = (struct if_then_else *)cur->at_end_data;
@@ -867,18 +913,22 @@
 	if (if_then_else->else_atom_seen)
 		return strbuf_addf_ret(err, -1, _("format: %%(then) atom used after %%(else)"));
 	if_then_else->then_atom_seen = 1;
+	if (if_then_else->str)
+		str_len = strlen(if_then_else->str);
 	/*
 	 * If the 'equals' or 'notequals' attribute is used then
 	 * perform the required comparison. If not, only non-empty
 	 * strings satisfy the 'if' condition.
 	 */
 	if (if_then_else->cmp_status == COMPARE_EQUAL) {
-		if (!strcmp(if_then_else->str, cur->output.buf))
+		if (str_len == cur->output.len &&
+		    !memcmp(if_then_else->str, cur->output.buf, cur->output.len))
 			if_then_else->condition_satisfied = 1;
 	} else if (if_then_else->cmp_status == COMPARE_UNEQUAL) {
-		if (strcmp(if_then_else->str, cur->output.buf))
+		if (str_len != cur->output.len ||
+		    memcmp(if_then_else->str, cur->output.buf, cur->output.len))
 			if_then_else->condition_satisfied = 1;
-	} else if (cur->output.len && !is_empty(cur->output.buf))
+	} else if (cur->output.len && !is_empty(&cur->output))
 		if_then_else->condition_satisfied = 1;
 	strbuf_reset(&cur->output);
 	return 0;
@@ -924,7 +974,7 @@
 	 * only on the topmost supporting atom.
 	 */
 	if (!current->prev->prev) {
-		quote_formatting(&s, current->output.buf, state->quote_style);
+		quote_formatting(&s, current->output.buf, current->output.len, state->quote_style);
 		strbuf_swap(&current->output, &s);
 	}
 	strbuf_release(&s);
@@ -954,6 +1004,11 @@
 	return NULL;
 }
 
+static int reject_atom(enum atom_type atom_type)
+{
+	return atom_type == ATOM_REST;
+}
+
 /*
  * Make sure the format string is well formed, and parse out
  * the used atoms.
@@ -974,6 +1029,16 @@
 		at = parse_ref_filter_atom(format, sp + 2, ep, &err);
 		if (at < 0)
 			die("%s", err.buf);
+		if (reject_atom(used_atom[at].atom_type))
+			die(_("this command reject atom %%(%.*s)"), (int)(ep - sp - 2), sp + 2);
+
+		if ((format->quote_style == QUOTE_PYTHON ||
+		     format->quote_style == QUOTE_SHELL ||
+		     format->quote_style == QUOTE_TCL) &&
+		     used_atom[at].atom_type == ATOM_RAW &&
+		     used_atom[at].u.raw_data.option == RAW_BARE)
+			die(_("--format=%.*s cannot be used with"
+			      "--python, --shell, --tcl"), (int)(ep - sp - 2), sp + 2);
 		cp = ep + 1;
 
 		if (skip_prefix(used_atom[at].name, "color:", &color))
@@ -1356,25 +1421,42 @@
 }
 
 /* See grab_values */
-static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
+static void grab_sub_body_contents(struct atom_value *val, int deref, struct expand_data *data)
 {
 	int i;
 	const char *subpos = NULL, *bodypos = NULL, *sigpos = NULL;
 	size_t sublen = 0, bodylen = 0, nonsiglen = 0, siglen = 0;
+	void *buf = data->content;
 
 	for (i = 0; i < used_atom_cnt; i++) {
 		struct used_atom *atom = &used_atom[i];
 		const char *name = atom->name;
 		struct atom_value *v = &val[i];
+		enum atom_type atom_type = atom->atom_type;
 
 		if (!!deref != (*name == '*'))
 			continue;
 		if (deref)
 			name++;
-		if (strcmp(name, "body") &&
-		    !starts_with(name, "subject") &&
-		    !starts_with(name, "trailers") &&
-		    !starts_with(name, "contents"))
+
+		if (atom_type == ATOM_RAW) {
+			unsigned long buf_size = data->size;
+
+			if (atom->u.raw_data.option == RAW_BARE) {
+				v->s = xmemdupz(buf, buf_size);
+				v->s_size = buf_size;
+			} else if (atom->u.raw_data.option == RAW_LENGTH) {
+				v->s = xstrfmt("%"PRIuMAX, (uintmax_t)buf_size);
+			}
+			continue;
+		}
+
+		if ((data->type != OBJ_TAG &&
+		     data->type != OBJ_COMMIT) ||
+		    (strcmp(name, "body") &&
+		     !starts_with(name, "subject") &&
+		     !starts_with(name, "trailers") &&
+		     !starts_with(name, "contents")))
 			continue;
 		if (!subpos)
 			find_subpos(buf,
@@ -1438,25 +1520,29 @@
  * pointed at by the ref itself; otherwise it is the object the
  * ref (which is a tag) refers to.
  */
-static void grab_values(struct atom_value *val, int deref, struct object *obj, void *buf)
+static void grab_values(struct atom_value *val, int deref, struct object *obj, struct expand_data *data)
 {
+	void *buf = data->content;
+
 	switch (obj->type) {
 	case OBJ_TAG:
 		grab_tag_values(val, deref, obj);
-		grab_sub_body_contents(val, deref, buf);
+		grab_sub_body_contents(val, deref, data);
 		grab_person("tagger", val, deref, buf);
 		break;
 	case OBJ_COMMIT:
 		grab_commit_values(val, deref, obj);
-		grab_sub_body_contents(val, deref, buf);
+		grab_sub_body_contents(val, deref, data);
 		grab_person("author", val, deref, buf);
 		grab_person("committer", val, deref, buf);
 		break;
 	case OBJ_TREE:
 		/* grab_tree_values(val, deref, obj, buf, sz); */
+		grab_sub_body_contents(val, deref, data);
 		break;
 	case OBJ_BLOB:
 		/* grab_blob_values(val, deref, obj, buf, sz); */
+		grab_sub_body_contents(val, deref, data);
 		break;
 	default:
 		die("Eh?  Object of type %d?", obj->type);
@@ -1678,7 +1764,7 @@
 			return strbuf_addf_ret(err, -1, _("parse_object_buffer failed on %s for %s"),
 					       oid_to_hex(&oi->oid), ref->refname);
 		}
-		grab_values(ref->value, deref, *obj, oi->content);
+		grab_values(ref->value, deref, *obj, oi);
 	}
 
 	grab_common_values(ref->value, deref, oi);
@@ -1760,6 +1846,7 @@
 		const char *refname;
 		struct branch *branch = NULL;
 
+		v->s_size = ATOM_SIZE_UNSPECIFIED;
 		v->handler = append_atom;
 		v->atom = atom;
 
@@ -1863,6 +1950,12 @@
 			v->handler = else_atom_handler;
 			v->s = xstrdup("");
 			continue;
+		} else if (atom_type == ATOM_REST) {
+			if (ref->rest)
+				v->s = xstrdup(ref->rest);
+			else
+				v->s = xstrdup("");
+			continue;
 		} else
 			continue;
 
@@ -2080,6 +2173,7 @@
 
 	FLEX_ALLOC_STR(ref, refname, refname);
 	oidcpy(&ref->objectname, oid);
+	ref->rest = NULL;
 
 	return ref;
 }
@@ -2225,8 +2319,12 @@
 	FREE_AND_NULL(array->items);
 	array->nr = array->alloc = 0;
 
-	for (i = 0; i < used_atom_cnt; i++)
-		free((char *)used_atom[i].name);
+	for (i = 0; i < used_atom_cnt; i++) {
+		struct used_atom *atom = &used_atom[i];
+		if (atom->atom_type == ATOM_HEAD)
+			free(atom->u.head);
+		free((char *)atom->name);
+	}
 	FREE_AND_NULL(used_atom);
 	used_atom_cnt = 0;
 
@@ -2363,6 +2461,19 @@
 	return 0;
 }
 
+static int memcasecmp(const void *vs1, const void *vs2, size_t n)
+{
+	const char *s1 = vs1, *s2 = vs2;
+	const char *end = s1 + n;
+
+	for (; s1 < end; s1++, s2++) {
+		int diff = tolower(*s1) - tolower(*s2);
+		if (diff)
+			return diff;
+	}
+	return 0;
+}
+
 static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, struct ref_array_item *b)
 {
 	struct atom_value *va, *vb;
@@ -2383,10 +2494,29 @@
 	} else if (s->sort_flags & REF_SORTING_VERSION) {
 		cmp = versioncmp(va->s, vb->s);
 	} else if (cmp_type == FIELD_STR) {
-		int (*cmp_fn)(const char *, const char *);
-		cmp_fn = s->sort_flags & REF_SORTING_ICASE
-			? strcasecmp : strcmp;
-		cmp = cmp_fn(va->s, vb->s);
+		if (va->s_size < 0 && vb->s_size < 0) {
+			int (*cmp_fn)(const char *, const char *);
+			cmp_fn = s->sort_flags & REF_SORTING_ICASE
+				? strcasecmp : strcmp;
+			cmp = cmp_fn(va->s, vb->s);
+		} else {
+			size_t a_size = va->s_size < 0 ?
+					strlen(va->s) : va->s_size;
+			size_t b_size = vb->s_size < 0 ?
+					strlen(vb->s) : vb->s_size;
+			int (*cmp_fn)(const void *, const void *, size_t);
+			cmp_fn = s->sort_flags & REF_SORTING_ICASE
+				? memcasecmp : memcmp;
+
+			cmp = cmp_fn(va->s, vb->s, b_size > a_size ?
+				     a_size : b_size);
+			if (!cmp) {
+				if (a_size > b_size)
+					cmp = 1;
+				else if (a_size < b_size)
+					cmp = -1;
+			}
+		}
 	} else {
 		if (va->value < vb->value)
 			cmp = -1;
@@ -2456,9 +2586,9 @@
 }
 
 int format_ref_array_item(struct ref_array_item *info,
-			   const struct ref_format *format,
-			   struct strbuf *final_buf,
-			   struct strbuf *error_buf)
+			  struct ref_format *format,
+			  struct strbuf *final_buf,
+			  struct strbuf *error_buf)
 {
 	const char *cp, *sp, *ep;
 	struct ref_formatting_state state = REF_FORMATTING_STATE_INIT;
@@ -2485,7 +2615,7 @@
 		append_literal(cp, sp, &state);
 	}
 	if (format->need_color_reset_at_eol) {
-		struct atom_value resetv;
+		struct atom_value resetv = ATOM_VALUE_INIT;
 		resetv.s = GIT_COLOR_RESET;
 		if (append_atom(&resetv, &state, error_buf)) {
 			pop_stack_element(&state.stack);
@@ -2502,7 +2632,7 @@
 }
 
 void pretty_print_ref(const char *name, const struct object_id *oid,
-		      const struct ref_format *format)
+		      struct ref_format *format)
 {
 	struct ref_array_item *ref_item;
 	struct strbuf output = STRBUF_INIT;
diff --git a/ref-filter.h b/ref-filter.h
index baf72a7..c15dee8 100644
--- a/ref-filter.h
+++ b/ref-filter.h
@@ -38,6 +38,7 @@
 
 struct ref_array_item {
 	struct object_id objectname;
+	const char *rest;
 	int flag;
 	unsigned int kind;
 	const char *symref;
@@ -76,14 +77,16 @@
 	 * verify_ref_format() afterwards to finalize.
 	 */
 	const char *format;
+	const char *rest;
 	int quote_style;
+	int use_rest;
 	int use_color;
 
 	/* Internal state to ref-filter */
 	int need_color_reset_at_eol;
 };
 
-#define REF_FORMAT_INIT { NULL, 0, -1 }
+#define REF_FORMAT_INIT { .use_color = -1 }
 
 /*  Macros for checking --merged and --no-merged options */
 #define _OPT_MERGED_NO_MERGED(option, filter, h) \
@@ -116,7 +119,7 @@
 void ref_sorting_set_sort_flags_all(struct ref_sorting *sorting, unsigned int mask, int on);
 /*  Based on the given format and quote_style, fill the strbuf */
 int format_ref_array_item(struct ref_array_item *info,
-			  const struct ref_format *format,
+			  struct ref_format *format,
 			  struct strbuf *final_buf,
 			  struct strbuf *error_buf);
 /*  Parse a single sort specifier and add it to the list */
@@ -137,7 +140,7 @@
  * name must be a fully qualified refname.
  */
 void pretty_print_ref(const char *name, const struct object_id *oid,
-		      const struct ref_format *format);
+		      struct ref_format *format);
 
 /*
  * Push a single ref onto the array; this can be used to construct your own
diff --git a/refs.c b/refs.c
index 8c94902..8b9f7c3 100644
--- a/refs.c
+++ b/refs.c
@@ -2010,7 +2010,7 @@
 	     oideq(current_ref_iter->oid, base)))
 		return ref_iterator_peel(current_ref_iter, peeled);
 
-	return peel_object(base, peeled);
+	return peel_object(base, peeled) ? -1 : 0;
 }
 
 int refs_create_symref(struct ref_store *refs,
diff --git a/refs/debug.c b/refs/debug.c
index 7db4abc..1a7a9e1 100644
--- a/refs/debug.c
+++ b/refs/debug.c
@@ -232,7 +232,8 @@
 	struct debug_ref_iterator *diter = xcalloc(1, sizeof(*diter));
 	base_ref_iterator_init(&diter->base, &debug_ref_iterator_vtable, 1);
 	diter->iter = res;
-	trace_printf_key(&trace_refs, "ref_iterator_begin: %s (0x%x)\n", prefix, flags);
+	trace_printf_key(&trace_refs, "ref_iterator_begin: \"%s\" (0x%x)\n",
+			 prefix, flags);
 	return &diter->base;
 }
 
diff --git a/refs/packed-backend.c b/refs/packed-backend.c
index dfecdbc..f8aa97d 100644
--- a/refs/packed-backend.c
+++ b/refs/packed-backend.c
@@ -889,7 +889,7 @@
 	} else if ((iter->base.flags & (REF_ISBROKEN | REF_ISSYMREF))) {
 		return -1;
 	} else {
-		return !!peel_object(&iter->oid, peeled);
+		return peel_object(&iter->oid, peeled) ? -1 : 0;
 	}
 }
 
@@ -1425,7 +1425,7 @@
 	 */
 
 	CALLOC_ARRAY(data, 1);
-	string_list_init(&data->updates, 0);
+	string_list_init_nodup(&data->updates);
 
 	transaction->backend_data = data;
 
diff --git a/refs/ref-cache.c b/refs/ref-cache.c
index 46f1e54..49d732f 100644
--- a/refs/ref-cache.c
+++ b/refs/ref-cache.c
@@ -491,7 +491,7 @@
 static int cache_ref_iterator_peel(struct ref_iterator *ref_iterator,
 				   struct object_id *peeled)
 {
-	return peel_object(ref_iterator->oid, peeled);
+	return peel_object(ref_iterator->oid, peeled) ? -1 : 0;
 }
 
 static int cache_ref_iterator_abort(struct ref_iterator *ref_iterator)
diff --git a/refs/refs-internal.h b/refs/refs-internal.h
index 467f4b3..3155708 100644
--- a/refs/refs-internal.h
+++ b/refs/refs-internal.h
@@ -453,6 +453,9 @@
  */
 typedef int ref_iterator_advance_fn(struct ref_iterator *ref_iterator);
 
+/*
+ * Peels the current ref, returning 0 for success or -1 for failure.
+ */
 typedef int ref_iterator_peel_fn(struct ref_iterator *ref_iterator,
 				 struct object_id *peeled);
 
diff --git a/remote-curl.c b/remote-curl.c
index 9d432c2..598cff7 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -185,8 +185,6 @@
 						 strbuf_detach(&unquoted, NULL));
 		}
 		return 0;
-
-#if LIBCURL_VERSION_NUM >= 0x070a08
 	} else if (!strcmp(name, "family")) {
 		if (!strcmp(value, "ipv4"))
 			git_curl_ipresolve = CURL_IPRESOLVE_V4;
@@ -197,7 +195,6 @@
 		else
 			return -1;
 		return 0;
-#endif /* LIBCURL_VERSION_NUM >= 0x070a08 */
 	} else if (!strcmp(name, "from-promisor")) {
 		options.from_promisor = 1;
 		return 0;
@@ -653,7 +650,7 @@
 			memcpy(buf - 4, "0000", 4);
 			break;
 		case PACKET_READ_RESPONSE_END:
-			die(_("remote server sent stateless separator"));
+			die(_("remote server sent unexpected response end packet"));
 		}
 	}
 
@@ -709,7 +706,6 @@
 	return avail;
 }
 
-#ifndef NO_CURL_IOCTL
 static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp)
 {
 	struct rpc_state *rpc = clientp;
@@ -730,7 +726,6 @@
 		return CURLIOE_UNKNOWNCMD;
 	}
 }
-#endif
 
 struct check_pktline_state {
 	char len_buf[4];
@@ -858,7 +853,7 @@
 	curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, 4);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer);
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &buf);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &buf);
 
 	err = run_slot(slot, results);
 
@@ -949,10 +944,8 @@
 		rpc->initial_buffer = 1;
 		curl_easy_setopt(slot->curl, CURLOPT_READFUNCTION, rpc_out);
 		curl_easy_setopt(slot->curl, CURLOPT_INFILE, rpc);
-#ifndef NO_CURL_IOCTL
 		curl_easy_setopt(slot->curl, CURLOPT_IOCTLFUNCTION, rpc_ioctl);
 		curl_easy_setopt(slot->curl, CURLOPT_IOCTLDATA, rpc);
-#endif
 		if (options.verbosity > 1) {
 			fprintf(stderr, "POST %s (chunked)\n", rpc->service_name);
 			fflush(stderr);
@@ -1023,7 +1016,7 @@
 	rpc_in_data.slot = slot;
 	rpc_in_data.check_pktline = stateless_connect;
 	memset(&rpc_in_data.pktline_state, 0, sizeof(rpc_in_data.pktline_state));
-	curl_easy_setopt(slot->curl, CURLOPT_FILE, &rpc_in_data);
+	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &rpc_in_data);
 	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
 
 
diff --git a/remote.c b/remote.c
index 6d1e8d0..31e141b 100644
--- a/remote.c
+++ b/remote.c
@@ -135,7 +135,7 @@
 
 static struct remote *make_remote(const char *name, int len)
 {
-	struct remote *ret, *replaced;
+	struct remote *ret;
 	struct remotes_hash_key lookup;
 	struct hashmap_entry lookup_entry, *e;
 
@@ -162,8 +162,8 @@
 	remotes[remotes_nr++] = ret;
 
 	hashmap_entry_init(&ret->ent, lookup_entry.hash);
-	replaced = hashmap_put_entry(&remotes_hash, ret, ent);
-	assert(replaced == NULL);  /* no previous entry overwritten */
+	if (hashmap_put_entry(&remotes_hash, ret, ent))
+		BUG("hashmap_put overwrote entry after hashmap_get returned NULL");
 	return ret;
 }
 
@@ -1111,7 +1111,7 @@
 		"Neither worked, so we gave up. You must fully qualify the ref."),
 	      dst_value, matched_src_name);
 
-	if (!advice_push_unqualified_ref_name)
+	if (!advice_enabled(ADVICE_PUSH_UNQUALIFIED_REF_NAME))
 		return;
 
 	if (get_oid(matched_src_name, &oid))
@@ -1592,7 +1592,7 @@
 			else
 				/*
 				 * If the ref isn't stale, and is reachable
-				 * from from one of the reflog entries of
+				 * from one of the reflog entries of
 				 * the local branch, force the update.
 				 */
 				force_ref_update = 1;
@@ -2118,7 +2118,7 @@
 		strbuf_addf(sb,
 			_("Your branch is based on '%s', but the upstream is gone.\n"),
 			base);
-		if (advice_status_hints)
+		if (advice_enabled(ADVICE_STATUS_HINTS))
 			strbuf_addstr(sb,
 				_("  (use \"git branch --unset-upstream\" to fixup)\n"));
 	} else if (!sti) {
@@ -2129,7 +2129,7 @@
 		strbuf_addf(sb,
 			    _("Your branch and '%s' refer to different commits.\n"),
 			    base);
-		if (advice_status_hints)
+		if (advice_enabled(ADVICE_STATUS_HINTS))
 			strbuf_addf(sb, _("  (use \"%s\" for details)\n"),
 				    "git status --ahead-behind");
 	} else if (!theirs) {
@@ -2138,7 +2138,7 @@
 			   "Your branch is ahead of '%s' by %d commits.\n",
 			   ours),
 			base, ours);
-		if (advice_status_hints)
+		if (advice_enabled(ADVICE_STATUS_HINTS))
 			strbuf_addstr(sb,
 				_("  (use \"git push\" to publish your local commits)\n"));
 	} else if (!ours) {
@@ -2149,7 +2149,7 @@
 			       "and can be fast-forwarded.\n",
 			   theirs),
 			base, theirs);
-		if (advice_status_hints)
+		if (advice_enabled(ADVICE_STATUS_HINTS))
 			strbuf_addstr(sb,
 				_("  (use \"git pull\" to update your local branch)\n"));
 	} else {
@@ -2162,7 +2162,7 @@
 			       "respectively.\n",
 			   ours + theirs),
 			base, ours, theirs);
-		if (advice_status_hints)
+		if (advice_enabled(ADVICE_STATUS_HINTS))
 			strbuf_addstr(sb,
 				_("  (use \"git pull\" to merge the remote branch into yours)\n"));
 	}
diff --git a/repository.c b/repository.c
index 448cd55..b2bf44c 100644
--- a/repository.c
+++ b/repository.c
@@ -11,6 +11,7 @@
 #include "lockfile.h"
 #include "submodule-config.h"
 #include "sparse-index.h"
+#include "promisor-remote.h"
 
 /* The main repository */
 static struct repository the_repo;
@@ -172,6 +173,10 @@
 
 	repo_set_hash_algo(repo, format.hash_algo);
 
+	/* take ownership of format.partial_clone */
+	repo->repository_format_partial_clone = format.partial_clone;
+	format.partial_clone = NULL;
+
 	if (worktree)
 		repo_set_worktree(repo, worktree);
 
@@ -258,6 +263,11 @@
 		if (repo->index != &the_index)
 			FREE_AND_NULL(repo->index);
 	}
+
+	if (repo->promisor_remote_config) {
+		promisor_remote_clear(repo->promisor_remote_config);
+		FREE_AND_NULL(repo->promisor_remote_config);
+	}
 }
 
 int repo_read_index(struct repository *repo)
diff --git a/repository.h b/repository.h
index a45f752..3740c93 100644
--- a/repository.h
+++ b/repository.h
@@ -10,6 +10,7 @@
 struct pathspec;
 struct raw_object_store;
 struct submodule_cache;
+struct promisor_remote_config;
 
 enum untracked_cache_setting {
 	UNTRACKED_CACHE_UNSET = -1,
@@ -139,6 +140,10 @@
 	/* True if commit-graph has been disabled within this process. */
 	int commit_graph_disabled;
 
+	/* Configurations related to promisor remotes. */
+	char *repository_format_partial_clone;
+	struct promisor_remote_config *promisor_remote_config;
+
 	/* Configurations */
 
 	/* Indicate if a repository has a different 'commondir' from 'gitdir' */
diff --git a/reset.c b/reset.c
index 4bea758..79310ae 100644
--- a/reset.c
+++ b/reset.c
@@ -21,7 +21,7 @@
 	struct object_id head_oid;
 	struct tree_desc desc[2] = { { NULL }, { NULL } };
 	struct lock_file lock = LOCK_INIT;
-	struct unpack_trees_options unpack_tree_opts;
+	struct unpack_trees_options unpack_tree_opts = { 0 };
 	struct tree *tree;
 	const char *reflog_action;
 	struct strbuf msg = STRBUF_INIT;
@@ -49,7 +49,6 @@
 	if (refs_only)
 		goto reset_head_refs;
 
-	memset(&unpack_tree_opts, 0, sizeof(unpack_tree_opts));
 	setup_unpack_trees_porcelain(&unpack_tree_opts, action);
 	unpack_tree_opts.head_idx = 1;
 	unpack_tree_opts.src_index = r->index;
@@ -134,6 +133,7 @@
 leave_reset_head:
 	strbuf_release(&msg);
 	rollback_lock_file(&lock);
+	clear_unpack_trees_porcelain(&unpack_tree_opts);
 	while (nr)
 		free((void *)desc[--nr].buffer);
 	return ret;
diff --git a/revision.c b/revision.c
index 8140561..0dabb5a 100644
--- a/revision.c
+++ b/revision.c
@@ -316,9 +316,10 @@
 		revs->no_walk = 0;
 	if (revs->reflog_info && obj->type == OBJ_COMMIT) {
 		struct strbuf buf = STRBUF_INIT;
-		int len = interpret_branch_name(name, 0, &buf, &options);
+		size_t namelen = strlen(name);
+		int len = interpret_branch_name(name, namelen, &buf, &options);
 
-		if (0 < len && name[len] && buf.len)
+		if (0 < len && len < namelen && buf.len)
 			strbuf_addstr(&buf, name + len);
 		add_reflog_for_walk(revs->reflog_info,
 				    (struct commit *)obj,
@@ -359,20 +360,18 @@
 				    unsigned int flags)
 {
 	struct object *object;
+	struct commit *commit;
 
 	/*
-	 * If the repository has commit graphs, repo_parse_commit() avoids
-	 * reading the object buffer, so use it whenever possible.
+	 * If the repository has commit graphs, we try to opportunistically
+	 * look up the object ID in those graphs. Like this, we can avoid
+	 * parsing commit data from disk.
 	 */
-	if (oid_object_info(revs->repo, oid, NULL) == OBJ_COMMIT) {
-		struct commit *c = lookup_commit(revs->repo, oid);
-		if (!repo_parse_commit(revs->repo, c))
-			object = (struct object *) c;
-		else
-			object = NULL;
-	} else {
+	commit = lookup_commit_in_graph(revs->repo, oid);
+	if (commit)
+		object = &commit->object;
+	else
 		object = parse_object(revs->repo, oid);
-	}
 
 	if (!object) {
 		if (revs->ignore_missing)
@@ -1533,7 +1532,7 @@
 
 	object = get_reference(cb->all_revs, path, oid, cb->all_flags);
 	add_rev_cmdline(cb->all_revs, object, path, REV_CMD_REF, cb->all_flags);
-	add_pending_oid(cb->all_revs, path, oid, cb->all_flags);
+	add_pending_object(cb->all_revs, object, path);
 	return 0;
 }
 
@@ -2255,6 +2254,10 @@
 	} else if (!strcmp(arg, "--author-date-order")) {
 		revs->sort_order = REV_SORT_BY_AUTHOR_DATE;
 		revs->topo_order = 1;
+	} else if (!strcmp(arg, "--unsorted-input")) {
+		if (revs->no_walk)
+			die(_("--unsorted-input is incompatible with --no-walk"));
+		revs->unsorted_input = 1;
 	} else if (!strcmp(arg, "--early-output")) {
 		revs->early_output = 100;
 		revs->topo_order = 1;
@@ -2650,16 +2653,22 @@
 	} else if (!strcmp(arg, "--not")) {
 		*flags ^= UNINTERESTING | BOTTOM;
 	} else if (!strcmp(arg, "--no-walk")) {
-		revs->no_walk = REVISION_WALK_NO_WALK_SORTED;
+		if (!revs->no_walk && revs->unsorted_input)
+			die(_("--no-walk is incompatible with --unsorted-input"));
+		revs->no_walk = 1;
 	} else if (skip_prefix(arg, "--no-walk=", &optarg)) {
+		if (!revs->no_walk && revs->unsorted_input)
+			die(_("--no-walk is incompatible with --unsorted-input"));
+
 		/*
 		 * Detached form ("--no-walk X" as opposed to "--no-walk=X")
 		 * not allowed, since the argument is optional.
 		 */
+		revs->no_walk = 1;
 		if (!strcmp(optarg, "sorted"))
-			revs->no_walk = REVISION_WALK_NO_WALK_SORTED;
+			revs->unsorted_input = 0;
 		else if (!strcmp(optarg, "unsorted"))
-			revs->no_walk = REVISION_WALK_NO_WALK_UNSORTED;
+			revs->unsorted_input = 1;
 		else
 			return error("invalid argument to --no-walk");
 	} else if (!strcmp(arg, "--do-walk")) {
@@ -3583,7 +3592,7 @@
 
 	if (!revs->reflog_info)
 		prepare_to_use_bloom_filter(revs);
-	if (revs->no_walk != REVISION_WALK_NO_WALK_UNSORTED)
+	if (!revs->unsorted_input)
 		commit_list_sort_by_date(&revs->commits);
 	if (revs->no_walk)
 		return 0;
diff --git a/revision.h b/revision.h
index 17698cb..0c65a76 100644
--- a/revision.h
+++ b/revision.h
@@ -79,10 +79,6 @@
 	} *rev;
 };
 
-#define REVISION_WALK_WALK 0
-#define REVISION_WALK_NO_WALK_SORTED 1
-#define REVISION_WALK_NO_WALK_UNSORTED 2
-
 struct oidset;
 struct topo_walk_info;
 
@@ -129,7 +125,8 @@
 	/* Traversal flags */
 	unsigned int	dense:1,
 			prune:1,
-			no_walk:2,
+			no_walk:1,
+			unsorted_input:1,
 			remove_empty_trees:1,
 			simplify_history:1,
 			show_pulls:1,
@@ -215,7 +212,8 @@
 			missing_newline:1,
 			date_mode_explicit:1,
 			preserve_subject:1,
-			encode_email_headers:1;
+			encode_email_headers:1,
+			include_header:1;
 	unsigned int	disable_stdin:1;
 	/* --show-linear-break */
 	unsigned int	track_linear:1,
@@ -262,6 +260,7 @@
 	int min_parents;
 	int max_parents;
 	int (*include_check)(struct commit *, void *);
+	int (*include_check_obj)(struct object *obj, void *);
 	void *include_check_data;
 
 	/* diff info for patches and for paths limiting */
diff --git a/run-command.c b/run-command.c
index be6bc12..3e4e082 100644
--- a/run-command.c
+++ b/run-command.c
@@ -11,9 +11,8 @@
 
 void child_process_init(struct child_process *child)
 {
-	memset(child, 0, sizeof(*child));
-	strvec_init(&child->args);
-	strvec_init(&child->env_array);
+	struct child_process blank = CHILD_PROCESS_INIT;
+	memcpy(child, &blank, sizeof(*child));
 }
 
 void child_process_clear(struct child_process *child)
@@ -762,9 +761,7 @@
 		notify_pipe[0] = notify_pipe[1] = -1;
 
 	if (cmd->no_stdin || cmd->no_stdout || cmd->no_stderr) {
-		null_fd = open("/dev/null", O_RDWR | O_CLOEXEC);
-		if (null_fd < 0)
-			die_errno(_("open /dev/null failed"));
+		null_fd = xopen("/dev/null", O_RDWR | O_CLOEXEC);
 		set_cloexec(null_fd);
 	}
 
@@ -1337,7 +1334,7 @@
 			err = errno;
 #endif
 
-		if (err == EACCES && advice_ignored_hook) {
+		if (err == EACCES && advice_enabled(ADVICE_IGNORED_HOOK)) {
 			static struct string_list advise_given = STRING_LIST_INIT_DUP;
 
 			if (!string_list_lookup(&advise_given, name)) {
@@ -1892,3 +1889,15 @@
 
 	return run_command(&maint);
 }
+
+void prepare_other_repo_env(struct strvec *env_array, const char *new_git_dir)
+{
+	const char * const *var;
+
+	for (var = local_repo_env; *var; var++) {
+		if (strcmp(*var, CONFIG_DATA_ENVIRONMENT) &&
+		    strcmp(*var, CONFIG_COUNT_ENVIRONMENT))
+			strvec_push(env_array, *var);
+	}
+	strvec_pushf(env_array, "%s=%s", GIT_DIR_ENVIRONMENT, new_git_dir);
+}
diff --git a/run-command.h b/run-command.h
index d08414a..af12967 100644
--- a/run-command.h
+++ b/run-command.h
@@ -141,7 +141,10 @@
 	void *clean_on_exit_handler_cbdata;
 };
 
-#define CHILD_PROCESS_INIT { NULL, STRVEC_INIT, STRVEC_INIT }
+#define CHILD_PROCESS_INIT { \
+	.args = STRVEC_INIT, \
+	.env_array = STRVEC_INIT, \
+}
 
 /**
  * The functions: child_process_init, start_command, finish_command,
@@ -483,4 +486,14 @@
 			       task_finished_fn, void *pp_cb,
 			       const char *tr2_category, const char *tr2_label);
 
+/**
+ * Convenience function which prepares env_array for a command to be run in a
+ * new repo. This adds all GIT_* environment variables to env_array with the
+ * exception of GIT_CONFIG_PARAMETERS and GIT_CONFIG_COUNT (which cause the
+ * corresponding environment variables to be unset in the subprocess) and adds
+ * an environment variable pointing to new_git_dir. See local_repo_env in
+ * cache.h for more information.
+ */
+void prepare_other_repo_env(struct strvec *env_array, const char *new_git_dir);
+
 #endif
diff --git a/send-pack.c b/send-pack.c
index 9cb9f71..b3a495b 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -425,8 +425,10 @@
 	child.no_stdin = 1;
 	child.out = -1;
 	strvec_pushl(&child.args, "fetch", "--negotiate-only", NULL);
-	for (ref = remote_refs; ref; ref = ref->next)
-		strvec_pushf(&child.args, "--negotiation-tip=%s", oid_to_hex(&ref->new_oid));
+	for (ref = remote_refs; ref; ref = ref->next) {
+		if (!is_null_oid(&ref->new_oid))
+			strvec_pushf(&child.args, "--negotiation-tip=%s", oid_to_hex(&ref->new_oid));
+	}
 	strvec_push(&child.args, url);
 
 	if (start_command(&child))
@@ -486,6 +488,12 @@
 	const char *push_cert_nonce = NULL;
 	struct packet_reader reader;
 
+	if (!remote_refs) {
+		fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
+			"Perhaps you should specify a branch.\n");
+		return 0;
+	}
+
 	git_config_get_bool("push.negotiate", &push_negotiate);
 	if (push_negotiate)
 		get_commons_through_negotiation(args->url, remote_refs, &commons);
@@ -534,11 +542,6 @@
 		}
 	}
 
-	if (!remote_refs) {
-		fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
-			"Perhaps you should specify a branch.\n");
-		return 0;
-	}
 	if (args->atomic && !atomic_supported)
 		die(_("the receiving end does not support --atomic push"));
 
diff --git a/sequencer.c b/sequencer.c
index 0bec01c..6831663 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -403,7 +403,7 @@
 	char *msg = getenv("GIT_CHERRY_PICK_HELP");
 
 	if (msg) {
-		fprintf(stderr, "%s\n", msg);
+		advise("%s\n", msg);
 		/*
 		 * A conflict has occurred but the porcelain
 		 * (typically rebase --interactive) wants to take care
@@ -418,10 +418,22 @@
 		if (opts->no_commit)
 			advise(_("after resolving the conflicts, mark the corrected paths\n"
 				 "with 'git add <paths>' or 'git rm <paths>'"));
+		else if (opts->action == REPLAY_PICK)
+			advise(_("After resolving the conflicts, mark them with\n"
+				 "\"git add/rm <pathspec>\", then run\n"
+				 "\"git cherry-pick --continue\".\n"
+				 "You can instead skip this commit with \"git cherry-pick --skip\".\n"
+				 "To abort and get back to the state before \"git cherry-pick\",\n"
+				 "run \"git cherry-pick --abort\"."));
+		else if (opts->action == REPLAY_REVERT)
+			advise(_("After resolving the conflicts, mark them with\n"
+				 "\"git add/rm <pathspec>\", then run\n"
+				 "\"git revert --continue\".\n"
+				 "You can instead skip this commit with \"git revert --skip\".\n"
+				 "To abort and get back to the state before \"git revert\",\n"
+				 "run \"git revert --abort\"."));
 		else
-			advise(_("after resolving the conflicts, mark the corrected paths\n"
-				 "with 'git add <paths>' or 'git rm <paths>'\n"
-				 "and commit the result with 'git commit'"));
+			BUG("unexpected pick action in print_advice()");
 	}
 }
 
@@ -486,7 +498,7 @@
 	error(_("your local changes would be overwritten by %s."),
 		_(action_name(opts)));
 
-	if (advice_commit_before_merge)
+	if (advice_enabled(ADVICE_COMMIT_BEFORE_MERGE))
 		advise(_("commit your changes or stash them to proceed."));
 	return -1;
 }
@@ -636,7 +648,7 @@
 	for (i = 0; i < opts->xopts_nr; i++)
 		parse_merge_opt(&o, opts->xopts[i]);
 
-	if (opts->strategy && !strcmp(opts->strategy, "ort")) {
+	if (!opts->strategy || !strcmp(opts->strategy, "ort")) {
 		memset(&result, 0, sizeof(result));
 		merge_incore_nonrecursive(&o, base_tree, head_tree, next_tree,
 					    &result);
@@ -983,7 +995,8 @@
 
 	cmd.git_cmd = 1;
 
-	if (is_rebase_i(opts) && read_env_script(&cmd.env_array)) {
+	if (is_rebase_i(opts) && !(!defmsg && (flags & AMEND_MSG)) &&
+	    read_env_script(&cmd.env_array)) {
 		const char *gpg_opt = gpg_sign_opt_quoted(opts);
 
 		return error(_(staged_changes_advice),
@@ -1241,7 +1254,7 @@
 
 static const char *implicit_ident_advice(void)
 {
-	char *user_config = expand_user_path("~/.gitconfig", 0);
+	char *user_config = interpolate_path("~/.gitconfig", 0);
 	char *xdg_config = xdg_config_home("config");
 	int config_exists = file_exists(user_config) || file_exists(xdg_config);
 
@@ -1293,7 +1306,7 @@
 	if (!committer_ident_sufficiently_given()) {
 		strbuf_addstr(&format, "\n Committer: ");
 		strbuf_addbuf_percentquote(&format, &committer_ident);
-		if (advice_implicit_identity) {
+		if (advice_enabled(ADVICE_IMPLICIT_IDENTITY)) {
 			strbuf_addch(&format, '\n');
 			strbuf_addstr(&format, implicit_ident_advice());
 		}
@@ -2065,7 +2078,7 @@
 		/*
 		 * We do not intend to commit immediately.  We just want to
 		 * merge the differences in, so let's compute the tree
-		 * that represents the "current" state for merge-recursive
+		 * that represents the "current" state for the merge machinery
 		 * to work on.
 		 */
 		if (write_index_as_tree(&head, r->index, r->index_file, 0, NULL))
@@ -3041,7 +3054,7 @@
 	}
 	if (in_progress_error) {
 		error("%s", in_progress_error);
-		if (advice_sequencer_in_use)
+		if (advice_enabled(ADVICE_SEQUENCER_IN_USE))
 			advise(in_progress_advice,
 				advise_skip ? "--skip | " : "");
 		return -1;
@@ -3245,7 +3258,7 @@
 give_advice:
 	error(_("there is nothing to skip"));
 
-	if (advice_resolve_conflict) {
+	if (advice_enabled(ADVICE_RESOLVE_CONFLICT)) {
 		advise(_("have you committed already?\n"
 			 "try \"git %s --continue\""),
 			 action == REPLAY_REVERT ? "revert" : "cherry-pick");
@@ -3521,6 +3534,7 @@
 	return status;
 }
 
+__attribute__((format (printf, 2, 3)))
 static int safe_append(const char *filename, const char *fmt, ...)
 {
 	va_list ap;
@@ -3598,8 +3612,27 @@
 	return ret;
 }
 
+__attribute__((format (printf, 3, 4)))
 static const char *reflog_message(struct replay_opts *opts,
-	const char *sub_action, const char *fmt, ...);
+	const char *sub_action, const char *fmt, ...)
+{
+	va_list ap;
+	static struct strbuf buf = STRBUF_INIT;
+	char *reflog_action = getenv(GIT_REFLOG_ACTION);
+
+	va_start(ap, fmt);
+	strbuf_reset(&buf);
+	strbuf_addstr(&buf, reflog_action ? reflog_action : action_name(opts));
+	if (sub_action)
+		strbuf_addf(&buf, " (%s)", sub_action);
+	if (fmt) {
+		strbuf_addstr(&buf, ": ");
+		strbuf_vaddf(&buf, fmt, ap);
+	}
+	va_end(ap);
+
+	return buf.buf;
+}
 
 static int do_reset(struct repository *r,
 		    const char *name, int len,
@@ -3719,10 +3752,9 @@
 static int do_merge(struct repository *r,
 		    struct commit *commit,
 		    const char *arg, int arg_len,
-		    int flags, struct replay_opts *opts)
+		    int flags, int *check_todo, struct replay_opts *opts)
 {
-	int run_commit_flags = (flags & TODO_EDIT_MERGE_MSG) ?
-		EDIT_MSG | VERIFY_MSG : 0;
+	int run_commit_flags = 0;
 	struct strbuf ref_name = STRBUF_INIT;
 	struct commit *head_commit, *merge_commit, *i;
 	struct commit_list *bases, *j, *reversed = NULL;
@@ -3796,6 +3828,45 @@
 		goto leave_merge;
 	}
 
+	/*
+	 * If HEAD is not identical to the first parent of the original merge
+	 * commit, we cannot fast-forward.
+	 */
+	can_fast_forward = opts->allow_ff && commit && commit->parents &&
+		oideq(&commit->parents->item->object.oid,
+		      &head_commit->object.oid);
+
+	/*
+	 * If any merge head is different from the original one, we cannot
+	 * fast-forward.
+	 */
+	if (can_fast_forward) {
+		struct commit_list *p = commit->parents->next;
+
+		for (j = to_merge; j && p; j = j->next, p = p->next)
+			if (!oideq(&j->item->object.oid,
+				   &p->item->object.oid)) {
+				can_fast_forward = 0;
+				break;
+			}
+		/*
+		 * If the number of merge heads differs from the original merge
+		 * commit, we cannot fast-forward.
+		 */
+		if (j || p)
+			can_fast_forward = 0;
+	}
+
+	if (can_fast_forward) {
+		rollback_lock_file(&lock);
+		ret = fast_forward_to(r, &commit->object.oid,
+				      &head_commit->object.oid, 0, opts);
+		if (flags & TODO_EDIT_MERGE_MSG)
+			goto fast_forward_edit;
+
+		goto leave_merge;
+	}
+
 	if (commit) {
 		const char *encoding = get_commit_output_encoding();
 		const char *message = logmsg_reencode(commit, NULL, encoding);
@@ -3845,46 +3916,6 @@
 		}
 	}
 
-	/*
-	 * If HEAD is not identical to the first parent of the original merge
-	 * commit, we cannot fast-forward.
-	 */
-	can_fast_forward = opts->allow_ff && commit && commit->parents &&
-		oideq(&commit->parents->item->object.oid,
-		      &head_commit->object.oid);
-
-	/*
-	 * If any merge head is different from the original one, we cannot
-	 * fast-forward.
-	 */
-	if (can_fast_forward) {
-		struct commit_list *p = commit->parents->next;
-
-		for (j = to_merge; j && p; j = j->next, p = p->next)
-			if (!oideq(&j->item->object.oid,
-				   &p->item->object.oid)) {
-				can_fast_forward = 0;
-				break;
-			}
-		/*
-		 * If the number of merge heads differs from the original merge
-		 * commit, we cannot fast-forward.
-		 */
-		if (j || p)
-			can_fast_forward = 0;
-	}
-
-	if (can_fast_forward) {
-		rollback_lock_file(&lock);
-		ret = fast_forward_to(r, &commit->object.oid,
-				      &head_commit->object.oid, 0, opts);
-		if (flags & TODO_EDIT_MERGE_MSG) {
-			run_commit_flags |= AMEND_MSG;
-			goto fast_forward_edit;
-		}
-		goto leave_merge;
-	}
-
 	if (strategy || to_merge->next) {
 		/* Octopus merge */
 		struct child_process cmd = CHILD_PROCESS_INIT;
@@ -3915,7 +3946,10 @@
 				strvec_pushf(&cmd.args,
 					     "-X%s", opts->xopts[k]);
 		}
-		strvec_push(&cmd.args, "--no-edit");
+		if (!(flags & TODO_EDIT_MERGE_MSG))
+			strvec_push(&cmd.args, "--no-edit");
+		else
+			strvec_push(&cmd.args, "--edit");
 		strvec_push(&cmd.args, "--no-ff");
 		strvec_push(&cmd.args, "--no-log");
 		strvec_push(&cmd.args, "--no-stat");
@@ -3968,7 +4002,7 @@
 	o.branch2 = ref_name.buf;
 	o.buffer_output = 2;
 
-	if (opts->strategy && !strcmp(opts->strategy, "ort")) {
+	if (!opts->strategy || !strcmp(opts->strategy, "ort")) {
 		/*
 		 * TODO: Should use merge_incore_recursive() and
 		 * merge_switch_to_result(), skipping the call to
@@ -4015,10 +4049,17 @@
 		 * value (a negative one would indicate that the `merge`
 		 * command needs to be rescheduled).
 		 */
-	fast_forward_edit:
 		ret = !!run_git_commit(git_path_merge_msg(r), opts,
 				       run_commit_flags);
 
+	if (!ret && flags & TODO_EDIT_MERGE_MSG) {
+	fast_forward_edit:
+		*check_todo = 1;
+		run_commit_flags |= AMEND_MSG | EDIT_MSG | VERIFY_MSG;
+		ret = !!run_git_commit(NULL, opts, run_commit_flags);
+	}
+
+
 leave_merge:
 	strbuf_release(&ref_name);
 	rollback_lock_file(&lock);
@@ -4178,27 +4219,6 @@
 	return apply_save_autostash_oid(stash_oid, 1);
 }
 
-static const char *reflog_message(struct replay_opts *opts,
-	const char *sub_action, const char *fmt, ...)
-{
-	va_list ap;
-	static struct strbuf buf = STRBUF_INIT;
-	char *reflog_action = getenv(GIT_REFLOG_ACTION);
-
-	va_start(ap, fmt);
-	strbuf_reset(&buf);
-	strbuf_addstr(&buf, reflog_action ? reflog_action : action_name(opts));
-	if (sub_action)
-		strbuf_addf(&buf, " (%s)", sub_action);
-	if (fmt) {
-		strbuf_addstr(&buf, ": ");
-		strbuf_vaddf(&buf, fmt, ap);
-	}
-	va_end(ap);
-
-	return buf.buf;
-}
-
 static int run_git_checkout(struct repository *r, struct replay_opts *opts,
 			    const char *commit, const char *action)
 {
@@ -4406,9 +4426,8 @@
 			if ((res = do_reset(r, arg, item->arg_len, opts)))
 				reschedule = 1;
 		} else if (item->command == TODO_MERGE) {
-			if ((res = do_merge(r, item->commit,
-					    arg, item->arg_len,
-					    item->flags, opts)) < 0)
+			if ((res = do_merge(r, item->commit, arg, item->arg_len,
+					    item->flags, &check_todo, opts)) < 0)
 				reschedule = 1;
 			else if (item->commit)
 				record_in_rewritten(&item->commit->object.oid,
@@ -4717,6 +4736,9 @@
 		    refs_delete_ref(get_main_ref_store(r), "",
 				    "CHERRY_PICK_HEAD", NULL, 0))
 			return error(_("could not remove CHERRY_PICK_HEAD"));
+		if (unlink(git_path_merge_msg(r)) && errno != ENOENT)
+			return error_errno(_("could not remove '%s'"),
+					   git_path_merge_msg(r));
 		if (!final_fixup)
 			return 0;
 	}
@@ -5100,6 +5122,7 @@
 	int keep_empty = flags & TODO_LIST_KEEP_EMPTY;
 	int rebase_cousins = flags & TODO_LIST_REBASE_COUSINS;
 	int root_with_onto = flags & TODO_LIST_ROOT_WITH_ONTO;
+	int skipped_commit = 0;
 	struct strbuf buf = STRBUF_INIT, oneline = STRBUF_INIT;
 	struct strbuf label = STRBUF_INIT;
 	struct commit_list *commits = NULL, **tail = &commits, *iter;
@@ -5150,8 +5173,13 @@
 		oidset_insert(&interesting, &commit->object.oid);
 
 		is_empty = is_original_commit_empty(commit);
-		if (!is_empty && (commit->object.flags & PATCHSAME))
+		if (!is_empty && (commit->object.flags & PATCHSAME)) {
+			if (flags & TODO_LIST_WARN_SKIPPED_CHERRY_PICKS)
+				warning(_("skipped previously applied commit %s"),
+					short_commit_name(commit));
+			skipped_commit = 1;
 			continue;
+		}
 		if (is_empty && !keep_empty)
 			continue;
 
@@ -5215,6 +5243,9 @@
 		oidcpy(&entry->entry.oid, &commit->object.oid);
 		oidmap_put(&commit2todo, entry);
 	}
+	if (skipped_commit)
+		advise_if_enabled(ADVICE_SKIPPED_CHERRY_PICKS,
+				  _("use --reapply-cherry-picks to include skipped commits"));
 
 	/*
 	 * Second phase:
@@ -5335,6 +5366,7 @@
 	const char *insn = flags & TODO_LIST_ABBREVIATE_CMDS ? "p" : "pick";
 	int rebase_merges = flags & TODO_LIST_REBASE_MERGES;
 	int reapply_cherry_picks = flags & TODO_LIST_REAPPLY_CHERRY_PICKS;
+	int skipped_commit = 0;
 
 	repo_init_revisions(r, &revs, NULL);
 	revs.verbose_header = 1;
@@ -5370,8 +5402,13 @@
 	while ((commit = get_revision(&revs))) {
 		int is_empty = is_original_commit_empty(commit);
 
-		if (!is_empty && (commit->object.flags & PATCHSAME))
+		if (!is_empty && (commit->object.flags & PATCHSAME)) {
+			if (flags & TODO_LIST_WARN_SKIPPED_CHERRY_PICKS)
+				warning(_("skipped previously applied commit %s"),
+					short_commit_name(commit));
+			skipped_commit = 1;
 			continue;
+		}
 		if (is_empty && !keep_empty)
 			continue;
 		strbuf_addf(out, "%s %s ", insn,
@@ -5381,6 +5418,9 @@
 			strbuf_addf(out, " %c empty", comment_line_char);
 		strbuf_addch(out, '\n');
 	}
+	if (skipped_commit)
+		advise_if_enabled(ADVICE_SKIPPED_CHERRY_PICKS,
+				  _("use --reapply-cherry-picks to include skipped commits"));
 	return 0;
 }
 
diff --git a/sequencer.h b/sequencer.h
index d57d8ea..2088344 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -156,6 +156,7 @@
  */
 #define TODO_LIST_ROOT_WITH_ONTO (1U << 6)
 #define TODO_LIST_REAPPLY_CHERRY_PICKS (1U << 7)
+#define TODO_LIST_WARN_SKIPPED_CHERRY_PICKS (1U << 8)
 
 int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
 			  const char **argv, unsigned flags);
diff --git a/serve.c b/serve.c
index aa8209f..f11c0e0 100644
--- a/serve.c
+++ b/serve.c
@@ -258,7 +258,7 @@
 			state = PROCESS_REQUEST_DONE;
 			break;
 		case PACKET_READ_RESPONSE_END:
-			BUG("unexpected stateless separator packet");
+			BUG("unexpected response end packet");
 		}
 	}
 
diff --git a/server-info.c b/server-info.c
index de0aa44..7701d7c 100644
--- a/server-info.c
+++ b/server-info.c
@@ -27,6 +27,7 @@
 	return uic->old_fp == NULL;
 }
 
+__attribute__((format (printf, 2, 3)))
 static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
 {
 	va_list ap;
diff --git a/setup.c b/setup.c
index ead2f80..eb9367c 100644
--- a/setup.c
+++ b/setup.c
@@ -468,8 +468,6 @@
 			data->precious_objects = git_config_bool(var, value);
 			return EXTENSION_OK;
 		} else if (!strcmp(ext, "partialclone")) {
-			if (!value)
-				return config_error_nonbool(var);
 			data->partial_clone = xstrdup(value);
 			return EXTENSION_OK;
 		} else if (!strcmp(ext, "worktreeconfig")) {
@@ -566,7 +564,6 @@
 	}
 
 	repository_format_precious_objects = candidate->precious_objects;
-	set_repository_format_partial_clone(candidate->partial_clone);
 	repository_format_worktree_config = candidate->worktree_config;
 	string_list_clear(&candidate->unknown_extensions, 0);
 	string_list_clear(&candidate->v1_only_extensions, 0);
@@ -1197,6 +1194,11 @@
 		return -1;
 	}
 
+	/* take ownership of candidate.partial_clone */
+	the_repository->repository_format_partial_clone =
+		candidate.partial_clone;
+	candidate.partial_clone = NULL;
+
 	clear_repository_format(&candidate);
 	return 0;
 }
@@ -1304,8 +1306,13 @@
 				gitdir = DEFAULT_GIT_DIR_ENVIRONMENT;
 			setup_git_env(gitdir);
 		}
-		if (startup_info->have_repository)
+		if (startup_info->have_repository) {
 			repo_set_hash_algo(the_repository, repo_fmt.hash_algo);
+			/* take ownership of repo_fmt.partial_clone */
+			the_repository->repository_format_partial_clone =
+				repo_fmt.partial_clone;
+			repo_fmt.partial_clone = NULL;
+		}
 	}
 	/*
 	 * Since precompose_string_if_needed() needs to look at
@@ -1390,6 +1397,8 @@
 	check_repository_format_gently(get_git_dir(), fmt, NULL);
 	startup_info->have_repository = 1;
 	repo_set_hash_algo(the_repository, fmt->hash_algo);
+	the_repository->repository_format_partial_clone =
+		xstrdup_or_null(fmt->partial_clone);
 	clear_repository_format(&repo_fmt);
 }
 
diff --git a/sh-i18n--envsubst.c b/sh-i18n--envsubst.c
index e7430b9..6cd307a 100644
--- a/sh-i18n--envsubst.c
+++ b/sh-i18n--envsubst.c
@@ -104,12 +104,12 @@
   if (ferror (stderr) || fflush (stderr))
     {
       fclose (stderr);
-      exit (EXIT_FAILURE);
+      return (EXIT_FAILURE);
     }
   if (fclose (stderr) && errno != EBADF)
-    exit (EXIT_FAILURE);
+    return (EXIT_FAILURE);
 
-  exit (EXIT_SUCCESS);
+  return (EXIT_SUCCESS);
 }
 
 /* Parse the string and invoke the callback each time a $VARIABLE or
diff --git a/shell.c b/shell.c
index cef7ffd..811e13b 100644
--- a/shell.c
+++ b/shell.c
@@ -177,7 +177,7 @@
 		default:
 			continue;
 		}
-		exit(cmd->exec(cmd->name, arg));
+		return cmd->exec(cmd->name, arg);
 	}
 
 	cd_to_homedir();
diff --git a/sideband.c b/sideband.c
index 6f9e026..85bddfd 100644
--- a/sideband.c
+++ b/sideband.c
@@ -183,8 +183,31 @@
 		while ((brk = strpbrk(b, "\n\r"))) {
 			int linelen = brk - b;
 
+			/*
+			 * For message accross packet boundary, there would have
+			 * a nonempty "scratch" buffer from last call of this
+			 * function, and there may have a leading CR/LF in "buf".
+			 * For this case we should add a clear-to-eol suffix to
+			 * clean leftover letters we previously have written on
+			 * the same line.
+			 */
+			if (scratch->len && !linelen)
+				strbuf_addstr(scratch, suffix);
+
 			if (!scratch->len)
 				strbuf_addstr(scratch, DISPLAY_PREFIX);
+
+			/*
+			 * A use case that we should not add clear-to-eol suffix
+			 * to empty lines:
+			 *
+			 * For progress reporting we may receive a bunch of
+			 * percentage updates followed by '\r' to remain on the
+			 * same line, and at the end receive a single '\n' to
+			 * move to the next line. We should preserve the final
+			 * status report line by not appending clear-to-eol
+			 * suffix to this single line break.
+			 */
 			if (linelen > 0) {
 				maybe_colorize_sideband(scratch, b, linelen);
 				strbuf_addstr(scratch, suffix);
diff --git a/sparse-index.c b/sparse-index.c
index affc404..56eb65d 100644
--- a/sparse-index.c
+++ b/sparse-index.c
@@ -116,6 +116,17 @@
 	return res;
 }
 
+static int index_has_unmerged_entries(struct index_state *istate)
+{
+	int i;
+	for (i = 0; i < istate->cache_nr; i++) {
+		if (ce_stage(istate->cache[i]))
+			return 1;
+	}
+
+	return 0;
+}
+
 int convert_to_sparse(struct index_state *istate)
 {
 	int test_env;
@@ -152,6 +163,15 @@
 		return -1;
 	}
 
+	/*
+	 * NEEDSWORK: If we have unmerged entries, then stay full.
+	 * Unmerged entries prevent the cache-tree extension from working.
+	 */
+	if (index_has_unmerged_entries(istate))
+		return 0;
+
+	/* Clear and recompute the cache-tree */
+	cache_tree_free(&istate->cache_tree);
 	if (cache_tree_update(istate, 0)) {
 		warning(_("unable to update cache-tree, staying full"));
 		return -1;
@@ -168,6 +188,10 @@
 	cache_tree_free(&istate->cache_tree);
 	cache_tree_update(istate, 0);
 
+	istate->fsmonitor_has_run_once = 0;
+	FREE_AND_NULL(istate->fsmonitor_dirty);
+	FREE_AND_NULL(istate->fsmonitor_last_update);
+
 	istate->sparse_index = 1;
 	trace2_region_leave("index", "convert_to_sparse", istate->repo);
 	return 0;
@@ -195,7 +219,7 @@
 	strbuf_addstr(base, path);
 
 	ce = make_cache_entry(istate, mode, oid, base->buf, 0, 0);
-	ce->ce_flags |= CE_SKIP_WORKTREE;
+	ce->ce_flags |= CE_SKIP_WORKTREE | CE_EXTENDED;
 	set_index_entry(istate, istate->cache_nr++, ce);
 
 	strbuf_setlen(base, len);
@@ -259,11 +283,15 @@
 
 	/* Copy back into original index. */
 	memcpy(&istate->name_hash, &full->name_hash, sizeof(full->name_hash));
+	memcpy(&istate->dir_hash, &full->dir_hash, sizeof(full->dir_hash));
 	istate->sparse_index = 0;
 	free(istate->cache);
 	istate->cache = full->cache;
 	istate->cache_nr = full->cache_nr;
 	istate->cache_alloc = full->cache_alloc;
+	istate->fsmonitor_has_run_once = 0;
+	FREE_AND_NULL(istate->fsmonitor_dirty);
+	FREE_AND_NULL(istate->fsmonitor_last_update);
 
 	strbuf_release(&base);
 	free(full);
diff --git a/split-index.c b/split-index.c
index 4d6e52d..8e52e89 100644
--- a/split-index.c
+++ b/split-index.c
@@ -207,7 +207,8 @@
 	b->ce_flags &= ondisk_flags;
 	ret = memcmp(&a->ce_stat_data, &b->ce_stat_data,
 		     offsetof(struct cache_entry, name) -
-		     offsetof(struct cache_entry, ce_stat_data));
+		     offsetof(struct cache_entry, oid)) ||
+		!oideq(&a->oid, &b->oid);
 	a->ce_flags = ce_flags;
 	b->ce_flags = base_flags;
 
diff --git a/strbuf.c b/strbuf.c
index 4df30b4..c8a5789 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -52,8 +52,8 @@
 
 void strbuf_init(struct strbuf *sb, size_t hint)
 {
-	sb->alloc = sb->len = 0;
-	sb->buf = strbuf_slopbuf;
+	struct strbuf blank = STRBUF_INIT;
+	memcpy(sb, &blank, sizeof(*sb));
 	if (hint)
 		strbuf_grow(sb, hint);
 }
diff --git a/strbuf.h b/strbuf.h
index 223ee20..5b1113a 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -263,6 +263,7 @@
 void strbuf_vinsertf(struct strbuf *sb, size_t pos, const char *fmt,
 		     va_list ap);
 
+__attribute__((format (printf, 3, 4)))
 void strbuf_insertf(struct strbuf *sb, size_t pos, const char *fmt, ...);
 
 /**
@@ -337,8 +338,8 @@
  * placeholder is unknown, then the percent sign is copied, too.
  *
  * In order to facilitate caching and to make it possible to give
- * parameters to the callback, `strbuf_expand()` passes a context pointer,
- * which can be used by the programmer of the callback as she sees fit.
+ * parameters to the callback, `strbuf_expand()` passes a context
+ * pointer with any kind of data.
  */
 typedef size_t (*expand_fn_t) (struct strbuf *sb,
 			       const char *placeholder,
diff --git a/string-list.c b/string-list.c
index a917955..43576ad 100644
--- a/string-list.c
+++ b/string-list.c
@@ -1,10 +1,24 @@
 #include "cache.h"
 #include "string-list.h"
 
+void string_list_init_nodup(struct string_list *list)
+{
+	struct string_list blank = STRING_LIST_INIT_NODUP;
+	memcpy(list, &blank, sizeof(*list));
+}
+
+void string_list_init_dup(struct string_list *list)
+{
+	struct string_list blank = STRING_LIST_INIT_DUP;
+	memcpy(list, &blank, sizeof(*list));
+}
+
 void string_list_init(struct string_list *list, int strdup_strings)
 {
-	memset(list, 0, sizeof(*list));
-	list->strdup_strings = strdup_strings;
+	if (strdup_strings)
+		string_list_init_dup(list);
+	else
+		string_list_init_nodup(list);
 }
 
 /* if there is no exact match, point to the index where the entry could be
diff --git a/string-list.h b/string-list.h
index 6c5d274..0d6b469 100644
--- a/string-list.h
+++ b/string-list.h
@@ -91,14 +91,21 @@
 	compare_strings_fn cmp; /* NULL uses strcmp() */
 };
 
-#define STRING_LIST_INIT_NODUP { NULL, 0, 0, 0, NULL }
-#define STRING_LIST_INIT_DUP   { NULL, 0, 0, 1, NULL }
+#define STRING_LIST_INIT_NODUP { 0 }
+#define STRING_LIST_INIT_DUP   { .strdup_strings = 1 }
 
 /* General functions which work with both sorted and unsorted lists. */
 
 /**
- * Initialize the members of the string_list, set `strdup_strings`
- * member according to the value of the second parameter.
+ * Initialize the members of a string_list pointer in the same way as
+ * the corresponding `STRING_LIST_INIT_NODUP` and
+ * `STRING_LIST_INIT_DUP` macros.
+ */
+void string_list_init_nodup(struct string_list *list);
+void string_list_init_dup(struct string_list *list);
+
+/**
+ * TODO remove: For compatibility with any in-flight older API users
  */
 void string_list_init(struct string_list *list, int strdup_strings);
 
diff --git a/strmap.c b/strmap.c
index 4fb9f61..ee48635 100644
--- a/strmap.c
+++ b/strmap.c
@@ -25,7 +25,8 @@
 
 void strmap_init(struct strmap *map)
 {
-	strmap_init_with_options(map, NULL, 1);
+	struct strmap blank = STRMAP_INIT;
+	memcpy(map, &blank, sizeof(*map));
 }
 
 void strmap_init_with_options(struct strmap *map,
diff --git a/strvec.c b/strvec.c
index 21dce0a..61a76ce 100644
--- a/strvec.c
+++ b/strvec.c
@@ -6,9 +6,8 @@
 
 void strvec_init(struct strvec *array)
 {
-	array->v = empty_strvec;
-	array->nr = 0;
-	array->alloc = 0;
+	struct strvec blank = STRVEC_INIT;
+	memcpy(array, &blank, sizeof(*array));
 }
 
 static void strvec_push_nodup(struct strvec *array, const char *value)
diff --git a/submodule.c b/submodule.c
index 0b1d9c1..8e611fe 100644
--- a/submodule.c
+++ b/submodule.c
@@ -484,27 +484,14 @@
 	strbuf_release(&sb);
 }
 
-static void prepare_submodule_repo_env_no_git_dir(struct strvec *out)
-{
-	const char * const *var;
-
-	for (var = local_repo_env; *var; var++) {
-		if (strcmp(*var, CONFIG_DATA_ENVIRONMENT))
-			strvec_push(out, *var);
-	}
-}
-
 void prepare_submodule_repo_env(struct strvec *out)
 {
-	prepare_submodule_repo_env_no_git_dir(out);
-	strvec_pushf(out, "%s=%s", GIT_DIR_ENVIRONMENT,
-		     DEFAULT_GIT_DIR_ENVIRONMENT);
+	prepare_other_repo_env(out, DEFAULT_GIT_DIR_ENVIRONMENT);
 }
 
 static void prepare_submodule_repo_env_in_gitdir(struct strvec *out)
 {
-	prepare_submodule_repo_env_no_git_dir(out);
-	strvec_pushf(out, "%s=.", GIT_DIR_ENVIRONMENT);
+	prepare_other_repo_env(out, ".");
 }
 
 /*
diff --git a/t/README b/t/README
index 1a2072b..9e70122 100644
--- a/t/README
+++ b/t/README
@@ -1126,6 +1126,12 @@
 
    Git wasn't compiled with NO_PTHREADS=YesPlease.
 
+ - REFFILES
+
+   Test is specific to packed/loose ref storage, and should be
+   disabled for other ref storage backends
+
+
 Tips for Writing Tests
 ----------------------
 
diff --git a/t/helper/test-advise.c b/t/helper/test-advise.c
index a7043df..cb88113 100644
--- a/t/helper/test-advise.c
+++ b/t/helper/test-advise.c
@@ -16,7 +16,7 @@
 	 * selected here and in t0018 where this command is being
 	 * executed.
 	 */
-	advise_if_enabled(ADVICE_NESTED_TAG, argv[1]);
+	advise_if_enabled(ADVICE_NESTED_TAG, "%s", argv[1]);
 
 	return 0;
 }
diff --git a/t/helper/test-getcwd.c b/t/helper/test-getcwd.c
new file mode 100644
index 0000000..d680038
--- /dev/null
+++ b/t/helper/test-getcwd.c
@@ -0,0 +1,26 @@
+#include "test-tool.h"
+#include "git-compat-util.h"
+#include "parse-options.h"
+
+static const char *getcwd_usage[] = {
+	"test-tool getcwd",
+	NULL
+};
+
+int cmd__getcwd(int argc, const char **argv)
+{
+	struct option options[] = {
+		OPT_END()
+	};
+	char *cwd;
+
+	argc = parse_options(argc, argv, "test-tools", options, getcwd_usage, 0);
+	if (argc > 0)
+		usage_with_options(getcwd_usage, options);
+
+	cwd = xgetcwd();
+	puts(cwd);
+	free(cwd);
+
+	return 0;
+}
diff --git a/t/helper/test-hash-speed.c b/t/helper/test-hash-speed.c
index 432233c..f40d9ad 100644
--- a/t/helper/test-hash-speed.c
+++ b/t/helper/test-hash-speed.c
@@ -57,5 +57,5 @@
 		free(p);
 	}
 
-	exit(0);
+	return 0;
 }
diff --git a/t/helper/test-hash.c b/t/helper/test-hash.c
index 0a31de6..261c545 100644
--- a/t/helper/test-hash.c
+++ b/t/helper/test-hash.c
@@ -54,5 +54,5 @@
 		fwrite(hash, 1, algop->rawsz, stdout);
 	else
 		puts(hash_to_hex_algop(hash, algop));
-	exit(0);
+	return 0;
 }
diff --git a/t/helper/test-match-trees.c b/t/helper/test-match-trees.c
index b9fd427..4079fde 100644
--- a/t/helper/test-match-trees.c
+++ b/t/helper/test-match-trees.c
@@ -23,5 +23,5 @@
 	shift_tree(the_repository, &one->object.oid, &two->object.oid, &shifted, -1);
 	printf("shifted: %s\n", oid_to_hex(&shifted));
 
-	exit(0);
+	return 0;
 }
diff --git a/t/helper/test-partial-clone.c b/t/helper/test-partial-clone.c
new file mode 100644
index 0000000..3f102cf
--- /dev/null
+++ b/t/helper/test-partial-clone.c
@@ -0,0 +1,43 @@
+#include "cache.h"
+#include "test-tool.h"
+#include "repository.h"
+#include "object-store.h"
+
+/*
+ * Prints the size of the object corresponding to the given hash in a specific
+ * gitdir. This is similar to "git -C gitdir cat-file -s", except that this
+ * exercises the code that accesses the object of an arbitrary repository that
+ * is not the_repository. ("git -C gitdir" makes it so that the_repository is
+ * the one in gitdir.)
+ */
+static void object_info(const char *gitdir, const char *oid_hex)
+{
+	struct repository r;
+	struct object_id oid;
+	unsigned long size;
+	struct object_info oi = {.sizep = &size};
+	const char *p;
+
+	if (repo_init(&r, gitdir, NULL))
+		die("could not init repo");
+	if (parse_oid_hex(oid_hex, &oid, &p))
+		die("could not parse oid");
+	if (oid_object_info_extended(&r, &oid, &oi, 0))
+		die("could not obtain object info");
+	printf("%d\n", (int) size);
+}
+
+int cmd__partial_clone(int argc, const char **argv)
+{
+	setup_git_directory();
+
+	if (argc < 4)
+		die("too few arguments");
+
+	if (!strcmp(argv[1], "object-info"))
+		object_info(argv[2], argv[3]);
+	else
+		die("invalid argument '%s'", argv[1]);
+
+	return 0;
+}
diff --git a/t/helper/test-pkt-line.c b/t/helper/test-pkt-line.c
index 5e638f0..c5e052e 100644
--- a/t/helper/test-pkt-line.c
+++ b/t/helper/test-pkt-line.c
@@ -26,6 +26,16 @@
 	}
 }
 
+static void pack_raw_stdin(void)
+{
+	struct strbuf sb = STRBUF_INIT;
+
+	if (strbuf_read(&sb, 0, 0) < 0)
+		die_errno("failed to read from stdin");
+	packet_write(1, sb.buf, sb.len);
+	strbuf_release(&sb);
+}
+
 static void unpack(void)
 {
 	struct packet_reader reader;
@@ -110,6 +120,8 @@
 
 	if (!strcmp(argv[1], "pack"))
 		pack(argc - 2, argv + 2);
+	else if (!strcmp(argv[1], "pack-raw-stdin"))
+		pack_raw_stdin();
 	else if (!strcmp(argv[1], "unpack"))
 		unpack();
 	else if (!strcmp(argv[1], "unpack-sideband"))
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index cda804e..2f65c7f 100644
--- a/t/helper/test-reach.c
+++ b/t/helper/test-reach.c
@@ -166,5 +166,5 @@
 		print_sorted_commit_ids(list);
 	}
 
-	exit(0);
+	return 0;
 }
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index bba5f84..b314b81 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -118,7 +118,7 @@
 
 static int cmd_resolve_ref(struct ref_store *refs, const char **argv)
 {
-	struct object_id oid;
+	struct object_id oid = *null_oid();
 	const char *refname = notnull(*argv++, "refname");
 	int resolve_flags = arg_flags(*argv++, "resolve-flags");
 	int flags;
diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c
index 9d37deb..3ce5585 100644
--- a/t/helper/test-tool.c
+++ b/t/helper/test-tool.c
@@ -33,6 +33,7 @@
 	{ "fast-rebase", cmd__fast_rebase },
 	{ "genrandom", cmd__genrandom },
 	{ "genzeros", cmd__genzeros },
+	{ "getcwd", cmd__getcwd },
 	{ "hashmap", cmd__hashmap },
 	{ "hash-speed", cmd__hash_speed },
 	{ "index-version", cmd__index_version },
@@ -47,6 +48,7 @@
 	{ "online-cpus", cmd__online_cpus },
 	{ "parse-options", cmd__parse_options },
 	{ "parse-pathspec-file", cmd__parse_pathspec_file },
+	{ "partial-clone", cmd__partial_clone },
 	{ "path-utils", cmd__path_utils },
 	{ "pcre2-config", cmd__pcre2_config },
 	{ "pkt-line", cmd__pkt_line },
diff --git a/t/helper/test-tool.h b/t/helper/test-tool.h
index f683a2f..9f0f522 100644
--- a/t/helper/test-tool.h
+++ b/t/helper/test-tool.h
@@ -23,6 +23,7 @@
 int cmd__fast_rebase(int argc, const char **argv);
 int cmd__genrandom(int argc, const char **argv);
 int cmd__genzeros(int argc, const char **argv);
+int cmd__getcwd(int argc, const char **argv);
 int cmd__hashmap(int argc, const char **argv);
 int cmd__hash_speed(int argc, const char **argv);
 int cmd__index_version(int argc, const char **argv);
@@ -36,6 +37,7 @@
 int cmd__online_cpus(int argc, const char **argv);
 int cmd__parse_options(int argc, const char **argv);
 int cmd__parse_pathspec_file(int argc, const char** argv);
+int cmd__partial_clone(int argc, const char **argv);
 int cmd__path_utils(int argc, const char **argv);
 int cmd__pcre2_config(int argc, const char **argv);
 int cmd__pkt_line(int argc, const char **argv);
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index 547eb3c..2fde235 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -121,12 +121,22 @@
 		 --listen-host 127.0.0.1 &
 }
 
-prepare_a_utf8_locale () {
-	a_utf8_locale=$(locale -a | sed -n '/\.[uU][tT][fF]-*8$/{
-	p
-	q
-}')
-	if test -n "$a_utf8_locale"
+prepare_utf8_locale () {
+	if test -z "$GIT_TEST_UTF8_LOCALE"
+	then
+		case "${LC_ALL:-$LANG}" in
+		*.[Uu][Tt][Ff]8 | *.[Uu][Tt][Ff]-8)
+			GIT_TEST_UTF8_LOCALE="${LC_ALL:-$LANG}"
+			;;
+		*)
+			GIT_TEST_UTF8_LOCALE=$(locale -a | sed -n '/\.[uU][tT][fF]-*8$/{
+				p
+				q
+			}')
+			;;
+		esac
+	fi
+	if test -n "$GIT_TEST_UTF8_LOCALE"
 	then
 		test_set_prereq UTF8
 	else
diff --git a/t/lib-rebase.sh b/t/lib-rebase.sh
index dc75b83..ec6b9b1 100644
--- a/t/lib-rebase.sh
+++ b/t/lib-rebase.sh
@@ -151,3 +151,59 @@
 	EOF
 	test_cmp expect actual
 }
+
+# Set up an editor for testing reword commands
+# Checks that there are no uncommitted changes when rewording and that the
+# todo-list is reread after each
+set_reword_editor () {
+	>reword-actual &&
+	>reword-oid &&
+
+	# Check rewording keeps the original authorship
+	GIT_AUTHOR_NAME="Reword Author"
+	GIT_AUTHOR_EMAIL="reword.author@example.com"
+	GIT_AUTHOR_DATE=@123456
+
+	write_script reword-sequence-editor.sh <<-\EOF &&
+	todo="$(cat "$1")" &&
+	echo "exec git log -1 --pretty=format:'%an <%ae> %at%n%B%n' \
+		>>reword-actual" >"$1" &&
+	printf "%s\n" "$todo" >>"$1"
+	EOF
+
+	write_script reword-editor.sh <<-EOF &&
+	# Save the oid of the first reworded commit so we can check rebase
+	# fast-forwards to it. Also check that we do not write .git/MERGE_MSG
+	# when fast-forwarding
+	if ! test -s reword-oid
+	then
+		git rev-parse HEAD >reword-oid &&
+		if test -f .git/MERGE_MSG
+		then
+			echo 1>&2 "error: .git/MERGE_MSG exists"
+			exit 1
+		fi
+	fi &&
+	# There should be no uncommited changes
+	git diff --exit-code HEAD &&
+	# The todo-list should be re-read after a reword
+	GIT_SEQUENCE_EDITOR="\"$PWD/reword-sequence-editor.sh\"" \
+		git rebase --edit-todo &&
+	echo edited >>"\$1"
+	EOF
+
+	test_set_editor "$PWD/reword-editor.sh"
+}
+
+# Check the results of a rebase after calling set_reword_editor
+# Pass the commits that were reworded in the order that they were picked
+# Expects the first pick to be a fast-forward
+check_reworded_commits () {
+	test_cmp_rev "$(cat reword-oid)" "$1^{commit}" &&
+	git log --format="%an <%ae> %at%n%B%nedited%n" --no-walk=unsorted "$@" \
+		>reword-expected &&
+	test_cmp reword-expected reword-actual &&
+	git log --format="%an <%ae> %at%n%B" -n $# --first-parent --reverse \
+		>reword-log &&
+	test_cmp reword-expected reword-log
+}
diff --git a/t/perf/aggregate.perl b/t/perf/aggregate.perl
index 14e4cda..82c0df4 100755
--- a/t/perf/aggregate.perl
+++ b/t/perf/aggregate.perl
@@ -58,6 +58,7 @@
   Options:
     --codespeed          * Format output for Codespeed
     --reponame    <str>  * Send given reponame to codespeed
+    --results-dir <str>  * Directory where test results are located
     --sort-by     <str>  * Sort output (only "regression" criteria is supported)
     --subsection  <str>  * Use results from given subsection
 
@@ -91,11 +92,13 @@
 
 my (@dirs, %dirnames, %dirabbrevs, %prefixes, @tests,
     $codespeed, $sortby, $subsection, $reponame);
+my $resultsdir = "test-results";
 
 Getopt::Long::Configure qw/ require_order /;
 
 my $rc = GetOptions("codespeed"     => \$codespeed,
 		    "reponame=s"    => \$reponame,
+		    "results-dir=s" => \$resultsdir,
 		    "sort-by=s"     => \$sortby,
 		    "subsection=s"  => \$subsection);
 usage() unless $rc;
@@ -137,8 +140,6 @@
 	@tests = glob "p????-*.sh";
 }
 
-my $resultsdir = "test-results";
-
 if (! $subsection and
     exists $ENV{GIT_PERF_SUBSECTION} and
     $ENV{GIT_PERF_SUBSECTION} ne "") {
diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh
index 94513c9..5976262 100755
--- a/t/perf/p2000-sparse-operations.sh
+++ b/t/perf/p2000-sparse-operations.sh
@@ -6,7 +6,7 @@
 
 test_perf_default_repo
 
-SPARSE_CONE=f2/f4/f1
+SPARSE_CONE=f2/f4
 
 test_expect_success 'setup repo and indexes' '
 	git reset --hard HEAD &&
@@ -27,7 +27,7 @@
 	OLD_COMMIT=$(git rev-parse HEAD) &&
 	OLD_TREE=$(git rev-parse HEAD^{tree}) &&
 
-	for i in $(test_seq 1 4)
+	for i in $(test_seq 1 3)
 	do
 		cat >in <<-EOF &&
 			100755 blob $BLOB	a
@@ -43,45 +43,57 @@
 	done &&
 
 	git sparse-checkout init --cone &&
-	git branch -f wide $OLD_COMMIT &&
-	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . full-index-v3 &&
+	git sparse-checkout set $SPARSE_CONE &&
+	git checkout -b wide $OLD_COMMIT &&
+
+	for l2 in f1 f2 f3 f4
+	do
+		echo more bogus >>$SPARSE_CONE/$l2/a &&
+		git commit -a -m "edit $SPARSE_CONE/$l2/a" || return 1
+	done &&
+
+	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . full-v3 &&
 	(
-		cd full-index-v3 &&
+		cd full-v3 &&
 		git sparse-checkout init --cone &&
 		git sparse-checkout set $SPARSE_CONE &&
 		git config index.version 3 &&
-		git update-index --index-version=3
+		git update-index --index-version=3 &&
+		git checkout HEAD~4
 	) &&
-	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . full-index-v4 &&
+	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . full-v4 &&
 	(
-		cd full-index-v4 &&
+		cd full-v4 &&
 		git sparse-checkout init --cone &&
 		git sparse-checkout set $SPARSE_CONE &&
 		git config index.version 4 &&
-		git update-index --index-version=4
+		git update-index --index-version=4 &&
+		git checkout HEAD~4
 	) &&
-	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . sparse-index-v3 &&
+	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . sparse-v3 &&
 	(
-		cd sparse-index-v3 &&
+		cd sparse-v3 &&
 		git sparse-checkout init --cone --sparse-index &&
 		git sparse-checkout set $SPARSE_CONE &&
 		git config index.version 3 &&
-		git update-index --index-version=3
+		git update-index --index-version=3 &&
+		git checkout HEAD~4
 	) &&
-	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . sparse-index-v4 &&
+	git -c core.sparseCheckoutCone=true clone --branch=wide --sparse . sparse-v4 &&
 	(
-		cd sparse-index-v4 &&
+		cd sparse-v4 &&
 		git sparse-checkout init --cone --sparse-index &&
 		git sparse-checkout set $SPARSE_CONE &&
 		git config index.version 4 &&
-		git update-index --index-version=4
+		git update-index --index-version=4 &&
+		git checkout HEAD~4
 	)
 '
 
 test_perf_on_all () {
 	command="$@"
-	for repo in full-index-v3 full-index-v4 \
-		    sparse-index-v3 sparse-index-v4
+	for repo in full-v3 full-v4 \
+		    sparse-v3 sparse-v4
 	do
 		test_perf "$command ($repo)" "
 			(
@@ -97,5 +109,6 @@
 test_perf_on_all git add -A
 test_perf_on_all git add .
 test_perf_on_all git commit -a -m A
+test_perf_on_all git checkout -f -
 
 test_done
diff --git a/t/perf/p4209-pickaxe.sh b/t/perf/p4209-pickaxe.sh
new file mode 100755
index 0000000..f585a44
--- /dev/null
+++ b/t/perf/p4209-pickaxe.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+test_description="Test pickaxe performance"
+
+. ./perf-lib.sh
+
+test_perf_default_repo
+
+# Not --max-count, as that's the number of matching commit, so it's
+# unbounded. We want to limit our revision walk here.
+from_rev_desc=
+from_rev=
+max_count=1000
+if test_have_prereq EXPENSIVE
+then
+	max_count=10000
+fi
+from_rev=" $(git rev-list HEAD | head -n $max_count | tail -n 1).."
+from_rev_desc=" <limit-rev>.."
+
+for icase in \
+	'' \
+	'-i '
+do
+	# -S (no regex)
+	for pattern in \
+		'int main' \
+		'æ'
+	do
+		for opts in \
+			'-S'
+		do
+			test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
+				git log --pretty=format:%H $icase$opts'$pattern'$from_rev
+			"
+		done
+	done
+
+	# -S (regex)
+	for pattern in  \
+		'(int|void|null)' \
+		'if *\([^ ]+ & ' \
+		'[àáâãäåæñøùúûüýþ]'
+	do
+		for opts in \
+			'--pickaxe-regex -S'
+		do
+			test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
+				git log --pretty=format:%H $icase$opts'$pattern'$from_rev
+			"
+		done
+	done
+
+	# -G
+	for pattern in  \
+		'(int|void|null)' \
+		'if *\([^ ]+ & ' \
+		'[àáâãäåæñøùúûüýþ]'
+	do
+		for opts in \
+			'-G'
+		do
+			test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
+				git log --pretty=format:%H $icase$opts'$pattern'$from_rev
+			"
+		done
+	done
+done
+
+test_done
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 601d9f6..f5ed092 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -45,7 +45,7 @@
 MODERN_GIT=$GIT_BUILD_DIR/bin-wrappers/git
 export MODERN_GIT
 
-perf_results_dir=$TEST_OUTPUT_DIRECTORY/test-results
+perf_results_dir=$TEST_RESULTS_DIR
 test -n "$GIT_PERF_SUBSECTION" && perf_results_dir="$perf_results_dir/$GIT_PERF_SUBSECTION"
 mkdir -p "$perf_results_dir"
 rm -f "$perf_results_dir"/$(basename "$0" .sh).subtests
@@ -253,7 +253,10 @@
 # and does it after running everything)
 test_at_end_hook_ () {
 	if test -z "$GIT_PERF_AGGREGATING_LATER"; then
-		( cd "$TEST_DIRECTORY"/perf && ./aggregate.perl $(basename "$0") )
+		(
+			cd "$TEST_DIRECTORY"/perf &&
+			./aggregate.perl --results-dir="$TEST_RESULTS_DIR" $(basename "$0")
+		)
 	fi
 }
 
diff --git a/t/perf/run b/t/perf/run
index c7b8610..d19dec2 100755
--- a/t/perf/run
+++ b/t/perf/run
@@ -188,10 +188,10 @@
 
 	if test -z "$GIT_PERF_SEND_TO_CODESPEED"
 	then
-		./aggregate.perl $codespeed_opt "$@"
+		./aggregate.perl --results-dir="$TEST_RESULTS_DIR" $codespeed_opt "$@"
 	else
-		json_res_file="test-results/$GIT_PERF_SUBSECTION/aggregate.json"
-		./aggregate.perl --codespeed "$@" | tee "$json_res_file"
+		json_res_file=""$TEST_RESULTS_DIR"/$GIT_PERF_SUBSECTION/aggregate.json"
+		./aggregate.perl --results-dir="$TEST_RESULTS_DIR" --codespeed "$@" | tee "$json_res_file"
 		send_data_url="$GIT_PERF_SEND_TO_CODESPEED/result/add/json/"
 		curl -v --request POST --data-urlencode "json=$(cat "$json_res_file")" "$send_data_url"
 	fi
@@ -203,10 +203,17 @@
 cd "$(dirname $0)"
 . ../../GIT-BUILD-OPTIONS
 
-mkdir -p test-results
-get_subsections "perf" >test-results/run_subsections.names
+if test -n "$TEST_OUTPUT_DIRECTORY"
+then
+	TEST_RESULTS_DIR="$TEST_OUTPUT_DIRECTORY/test-results"
+else
+	TEST_RESULTS_DIR=test-results
+fi
 
-if test $(wc -l <test-results/run_subsections.names) -eq 0
+mkdir -p "$TEST_RESULTS_DIR"
+get_subsections "perf" >"$TEST_RESULTS_DIR"/run_subsections.names
+
+if test $(wc -l <"$TEST_RESULTS_DIR"/run_subsections.names) -eq 0
 then
 	if test -n "$GIT_PERF_SUBSECTION"
 	then
@@ -222,10 +229,10 @@
 	)
 elif test -n "$GIT_PERF_SUBSECTION"
 then
-	egrep "^$GIT_PERF_SUBSECTION\$" test-results/run_subsections.names >/dev/null ||
+	egrep "^$GIT_PERF_SUBSECTION\$" "$TEST_RESULTS_DIR"/run_subsections.names >/dev/null ||
 		die "subsection '$GIT_PERF_SUBSECTION' not found in '$GIT_PERF_CONFIG_FILE'"
 
-	egrep "^$GIT_PERF_SUBSECTION\$" test-results/run_subsections.names | while read -r subsec
+	egrep "^$GIT_PERF_SUBSECTION\$" "$TEST_RESULTS_DIR"/run_subsections.names | while read -r subsec
 	do
 		(
 			GIT_PERF_SUBSECTION="$subsec"
@@ -243,5 +250,5 @@
 			echo "======== Run for subsection '$GIT_PERF_SUBSECTION' ========"
 			run_subsection "$@"
 		)
-	done <test-results/run_subsections.names
+	done <"$TEST_RESULTS_DIR"/run_subsections.names
 fi
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 2c6e34b..cb87768 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -69,6 +69,23 @@
 _run_sub_test_lib_test_common () {
 	neg="$1" name="$2" descr="$3" # stdin is the body of the test code
 	shift 3
+
+	# intercept pseudo-options at the front of the argument list that we
+	# will not pass to child script
+	skip=
+	while test $# -gt 0
+	do
+		case "$1" in
+		--skip=*)
+			skip=${1#--*=}
+			shift
+			;;
+		*)
+			break
+			;;
+		esac
+	done
+
 	mkdir "$name" &&
 	(
 		# Pretend we're not running under a test harness, whether we
@@ -89,8 +106,13 @@
 		EOF
 		cat >>"$name.sh" &&
 		export TEST_DIRECTORY &&
-		TEST_OUTPUT_DIRECTORY=$(pwd) &&
-		export TEST_OUTPUT_DIRECTORY &&
+		# The child test re-sources GIT-BUILD-OPTIONS and may thus
+		# override the test output directory. We thus pass it as an
+		# explicit override to the child.
+		TEST_OUTPUT_DIRECTORY_OVERRIDE=$(pwd) &&
+		export TEST_OUTPUT_DIRECTORY_OVERRIDE &&
+		GIT_SKIP_TESTS=$skip &&
+		export GIT_SKIP_TESTS &&
 		sane_unset GIT_TEST_FAIL_PREREQS &&
 		if test -z "$neg"
 		then
@@ -319,9 +341,9 @@
 
 test_expect_success 'GIT_SKIP_TESTS' '
 	(
-		GIT_SKIP_TESTS="git.2" && export GIT_SKIP_TESTS &&
 		run_sub_test_lib_test git-skip-tests-basic \
-			"GIT_SKIP_TESTS" <<-\EOF &&
+			"GIT_SKIP_TESTS" \
+			--skip="git.2" <<-\EOF &&
 		for i in 1 2 3
 		do
 			test_expect_success "passing test #$i" "true"
@@ -340,9 +362,9 @@
 
 test_expect_success 'GIT_SKIP_TESTS several tests' '
 	(
-		GIT_SKIP_TESTS="git.2 git.5" && export GIT_SKIP_TESTS &&
 		run_sub_test_lib_test git-skip-tests-several \
-			"GIT_SKIP_TESTS several tests" <<-\EOF &&
+			"GIT_SKIP_TESTS several tests" \
+			--skip="git.2 git.5" <<-\EOF &&
 		for i in 1 2 3 4 5 6
 		do
 			test_expect_success "passing test #$i" "true"
@@ -364,9 +386,9 @@
 
 test_expect_success 'GIT_SKIP_TESTS sh pattern' '
 	(
-		GIT_SKIP_TESTS="git.[2-5]" && export GIT_SKIP_TESTS &&
 		run_sub_test_lib_test git-skip-tests-sh-pattern \
-			"GIT_SKIP_TESTS sh pattern" <<-\EOF &&
+			"GIT_SKIP_TESTS sh pattern" \
+			--skip="git.[2-5]" <<-\EOF &&
 		for i in 1 2 3 4 5 6
 		do
 			test_expect_success "passing test #$i" "true"
@@ -388,9 +410,9 @@
 
 test_expect_success 'GIT_SKIP_TESTS entire suite' '
 	(
-		GIT_SKIP_TESTS="git" && export GIT_SKIP_TESTS &&
 		run_sub_test_lib_test git-skip-tests-entire-suite \
-			"GIT_SKIP_TESTS entire suite" <<-\EOF &&
+			"GIT_SKIP_TESTS entire suite" \
+			--skip="git" <<-\EOF &&
 		for i in 1 2 3
 		do
 			test_expect_success "passing test #$i" "true"
@@ -405,9 +427,9 @@
 
 test_expect_success 'GIT_SKIP_TESTS does not skip unmatched suite' '
 	(
-		GIT_SKIP_TESTS="notgit" && export GIT_SKIP_TESTS &&
 		run_sub_test_lib_test git-skip-tests-unmatched-suite \
-			"GIT_SKIP_TESTS does not skip unmatched suite" <<-\EOF &&
+			"GIT_SKIP_TESTS does not skip unmatched suite" \
+			--skip="notgit" <<-\EOF &&
 		for i in 1 2 3
 		do
 			test_expect_success "passing test #$i" "true"
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index acd662e..df544bb 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -356,7 +356,10 @@
 	chmod 100 $base ||
 	BUG "cannot prepare $base"
 
-	(cd $base/dir && /bin/pwd -P)
+	(
+		cd $base/dir &&
+		test-tool getcwd
+	)
 	status=$?
 
 	chmod 700 $base &&
diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
index b5749f3..33dfc9c 100755
--- a/t/t0021-conversion.sh
+++ b/t/t0021-conversion.sh
@@ -6,6 +6,7 @@
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-terminal.sh
 
 TEST_ROOT="$PWD"
 PATH=$TEST_ROOT:$PATH
@@ -1061,4 +1062,74 @@
 	)
 '
 
+test_expect_success PERL 'setup for progress tests' '
+	git init progress &&
+	(
+		cd progress &&
+		git config filter.delay.process "rot13-filter.pl delay-progress.log clean smudge delay" &&
+		git config filter.delay.required true &&
+
+		echo "*.a filter=delay" >.gitattributes &&
+		touch test-delay10.a &&
+		git add . &&
+		git commit -m files
+	)
+'
+
+test_delayed_checkout_progress () {
+	if test "$1" = "!"
+	then
+		local expect_progress=N &&
+		shift
+	else
+		local expect_progress=
+	fi &&
+
+	if test $# -lt 1
+	then
+		BUG "no command given to test_delayed_checkout_progress"
+	fi &&
+
+	(
+		cd progress &&
+		GIT_PROGRESS_DELAY=0 &&
+		export GIT_PROGRESS_DELAY &&
+		rm -f *.a delay-progress.log &&
+
+		"$@" 2>err &&
+		grep "IN: smudge test-delay10.a .* \\[DELAYED\\]" delay-progress.log &&
+		if test "$expect_progress" = N
+		then
+			! grep "Filtering content" err
+		else
+			grep "Filtering content" err
+		fi
+	)
+}
+
+for mode in pathspec branch
+do
+	case "$mode" in
+	pathspec) opt='.' ;;
+	branch) opt='-f HEAD' ;;
+	esac
+
+	test_expect_success PERL,TTY "delayed checkout shows progress by default on tty ($mode checkout)" '
+		test_delayed_checkout_progress test_terminal git checkout $opt
+	'
+
+	test_expect_success PERL "delayed checkout ommits progress on non-tty ($mode checkout)" '
+		test_delayed_checkout_progress ! git checkout $opt
+	'
+
+	test_expect_success PERL,TTY "delayed checkout ommits progress with --quiet ($mode checkout)" '
+		test_delayed_checkout_progress ! test_terminal git checkout --quiet $opt
+	'
+
+	test_expect_success PERL,TTY "delayed checkout honors --[no]-progress ($mode checkout)" '
+		test_delayed_checkout_progress ! test_terminal git checkout --no-progress $opt &&
+		test_delayed_checkout_progress test_terminal git checkout --quiet --progress $opt
+	'
+done
+
 test_done
diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh
index de49607..34d1061 100755
--- a/t/t0060-path-utils.sh
+++ b/t/t0060-path-utils.sh
@@ -525,4 +525,30 @@
 		"PRN./abc"
 '
 
+test_lazy_prereq RUNTIME_PREFIX '
+	test true = "$RUNTIME_PREFIX"
+'
+
+test_lazy_prereq CAN_EXEC_IN_PWD '
+	cp "$GIT_EXEC_PATH"/git$X ./ &&
+	./git rev-parse
+'
+
+test_expect_success RUNTIME_PREFIX,CAN_EXEC_IN_PWD 'RUNTIME_PREFIX works' '
+	mkdir -p pretend/bin pretend/libexec/git-core &&
+	echo "echo HERE" | write_script pretend/libexec/git-core/git-here &&
+	cp "$GIT_EXEC_PATH"/git$X pretend/bin/ &&
+	GIT_EXEC_PATH= ./pretend/bin/git here >actual &&
+	echo HERE >expect &&
+	test_cmp expect actual'
+
+test_expect_success RUNTIME_PREFIX,CAN_EXEC_IN_PWD '%(prefix)/ works' '
+	mkdir -p pretend/bin &&
+	cp "$GIT_EXEC_PATH"/git$X pretend/bin/ &&
+	git config yes.path "%(prefix)/yes" &&
+	GIT_EXEC_PATH= ./pretend/bin/git config --path yes.path >actual &&
+	echo "$(pwd)/pretend/yes" >expect &&
+	test_cmp expect actual
+'
+
 test_done
diff --git a/t/t0210/scrub_normal.perl b/t/t0210/scrub_normal.perl
index c65d1a8..7cc4de3 100644
--- a/t/t0210/scrub_normal.perl
+++ b/t/t0210/scrub_normal.perl
@@ -42,6 +42,12 @@
 	# so just omit it for testing purposes.
 	# print "cmd_path _EXE_\n";
     }
+    elsif ($line =~ m/^cmd_ancestry/) {
+	# 'cmd_ancestry' is not implemented everywhere, so for portability's
+	# sake, skip it when parsing normal.
+	#
+	# print "$line";
+    }
     else {
 	print "$line";
     }
diff --git a/t/t0211/scrub_perf.perl b/t/t0211/scrub_perf.perl
index 351af78..d164b750 100644
--- a/t/t0211/scrub_perf.perl
+++ b/t/t0211/scrub_perf.perl
@@ -44,6 +44,11 @@
 	# $tokens[$col_rest] = "_EXE_";
 	goto SKIP_LINE;
     }
+    elsif ($tokens[$col_event] =~ m/cmd_ancestry/) {
+	# 'cmd_ancestry' is platform-specific and not implemented everywhere,
+	# so skip it.
+	goto SKIP_LINE;
+    }
     elsif ($tokens[$col_event] =~ m/child_exit/) {
 	$tokens[$col_rest] =~ s/ pid:\d* / pid:_PID_ /;
     }
diff --git a/t/t0212/parse_events.perl b/t/t0212/parse_events.perl
index 6584bb5..b640856 100644
--- a/t/t0212/parse_events.perl
+++ b/t/t0212/parse_events.perl
@@ -132,7 +132,10 @@
 	# just omit it for testing purposes.
 	# $processes->{$sid}->{'path'} = "_EXE_";
     }
-    
+    elsif ($event eq 'cmd_ancestry') {
+	# 'cmd_ancestry' is platform-specific and not implemented everywhere, so
+	# just skip it for testing purposes.
+    }
     elsif ($event eq 'cmd_name') {
 	$processes->{$sid}->{'name'} = $line->{'name'};
 	$processes->{$sid}->{'hierarchy'} = $line->{'hierarchy'};
diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh
index 584a039..a211a66 100755
--- a/t/t0410-partial-clone.sh
+++ b/t/t0410-partial-clone.sh
@@ -604,6 +604,29 @@
 	git -C repo cherry-pick side1
 '
 
+test_expect_success 'lazy-fetch when accessing object not in the_repository' '
+	rm -rf full partial.git &&
+	test_create_repo full &&
+	test_commit -C full create-a-file file.txt &&
+
+	test_config -C full uploadpack.allowfilter 1 &&
+	test_config -C full uploadpack.allowanysha1inwant 1 &&
+	git clone --filter=blob:none --bare "file://$(pwd)/full" partial.git &&
+	FILE_HASH=$(git -C full rev-parse HEAD:file.txt) &&
+
+	# Sanity check that the file is missing
+	git -C partial.git rev-list --objects --missing=print HEAD >out &&
+	grep "[?]$FILE_HASH" out &&
+
+	git -C full cat-file -s "$FILE_HASH" >expect &&
+	test-tool partial-clone object-info partial.git "$FILE_HASH" >actual &&
+	test_cmp expect actual &&
+
+	# Sanity check that the file is now present
+	git -C partial.git rev-list --objects --missing=print HEAD >out &&
+	! grep "[?]$FILE_HASH" out
+'
+
 . "$TEST_DIRECTORY"/lib-httpd.sh
 start_httpd
 
diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh
index 5d2dc99..18b3779 100755
--- a/t/t1006-cat-file.sh
+++ b/t/t1006-cat-file.sh
@@ -586,4 +586,26 @@
 	test_cmp expect actual
 '
 
+test_expect_success 'set up object list for --batch-all-objects tests' '
+	git -C all-two cat-file --batch-all-objects --batch-check="%(objectname)" >objects
+'
+
+test_expect_success 'cat-file --batch="%(objectname)" with --batch-all-objects will work' '
+	git -C all-two cat-file --batch="%(objectname)" <objects >expect &&
+	git -C all-two cat-file --batch-all-objects --batch="%(objectname)" >actual &&
+	cmp expect actual
+'
+
+test_expect_success 'cat-file --batch="%(rest)" with --batch-all-objects will work' '
+	git -C all-two cat-file --batch="%(rest)" <objects >expect &&
+	git -C all-two cat-file --batch-all-objects --batch="%(rest)" >actual &&
+	cmp expect actual
+'
+
+test_expect_success 'cat-file --batch="batman" with --batch-all-objects will work' '
+	git -C all-two cat-file --batch="batman" <objects >expect &&
+	git -C all-two cat-file --batch-all-objects --batch="batman" >actual &&
+	cmp expect actual
+'
+
 test_done
diff --git a/t/t1022-read-tree-partial-clone.sh b/t/t1022-read-tree-partial-clone.sh
new file mode 100755
index 0000000..a763e27
--- /dev/null
+++ b/t/t1022-read-tree-partial-clone.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+test_description='git read-tree in partial clones'
+
+TEST_NO_CREATE_REPO=1
+
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
+. ./test-lib.sh
+
+test_expect_success 'read-tree in partial clone prefetches in one batch' '
+	test_when_finished "rm -rf server client trace" &&
+
+	git init server &&
+	echo foo >server/one &&
+	echo bar >server/two &&
+	git -C server add one two &&
+	git -C server commit -m "initial commit" &&
+	TREE=$(git -C server rev-parse HEAD^{tree}) &&
+
+	git -C server config uploadpack.allowfilter 1 &&
+	git -C server config uploadpack.allowanysha1inwant 1 &&
+	git clone --bare --filter=blob:none "file://$(pwd)/server" client &&
+	GIT_TRACE_PACKET="$(pwd)/trace" git -C client read-tree $TREE &&
+
+	# "done" marks the end of negotiation (once per fetch). Expect that
+	# only one fetch occurs.
+	grep "fetch> done" trace >donelines &&
+	test_line_count = 1 donelines
+'
+
+test_done
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index e9a815c..ddc86bb 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -17,7 +17,7 @@
 		echo "after folder1" >g &&
 		echo "after x" >z &&
 		mkdir folder1 folder2 deep x &&
-		mkdir deep/deeper1 deep/deeper2 &&
+		mkdir deep/deeper1 deep/deeper2 deep/before deep/later &&
 		mkdir deep/deeper1/deepest &&
 		echo "after deeper1" >deep/e &&
 		echo "after deepest" >deep/deeper1/e &&
@@ -25,10 +25,23 @@
 		cp a folder2 &&
 		cp a x &&
 		cp a deep &&
+		cp a deep/before &&
 		cp a deep/deeper1 &&
 		cp a deep/deeper2 &&
+		cp a deep/later &&
 		cp a deep/deeper1/deepest &&
 		cp -r deep/deeper1/deepest deep/deeper2 &&
+		mkdir deep/deeper1/0 &&
+		mkdir deep/deeper1/0/0 &&
+		touch deep/deeper1/0/1 &&
+		touch deep/deeper1/0/0/0 &&
+		>folder1- &&
+		>folder1.x &&
+		>folder10 &&
+		cp -r deep/deeper1/0 folder1 &&
+		cp -r deep/deeper1/0 folder2 &&
+		echo >>folder1/0/0/0 &&
+		echo >>folder2/0/1 &&
 		git add . &&
 		git commit -m "initial commit" &&
 		git checkout -b base &&
@@ -40,7 +53,7 @@
 		done &&
 
 		git checkout -b rename-base base &&
-		echo >folder1/larger-content <<-\EOF &&
+		cat >folder1/larger-content <<-\EOF &&
 		matching
 		lines
 		help
@@ -56,11 +69,17 @@
 		mv folder1/a folder2/b &&
 		mv folder1/larger-content folder2/edited-content &&
 		echo >>folder2/edited-content &&
+		echo >>folder2/0/1 &&
+		echo stuff >>deep/deeper1/a &&
 		git add . &&
 		git commit -m "rename folder1/... to folder2/..." &&
 
 		git checkout -b rename-out-to-in rename-base &&
 		mv folder1/a deep/deeper1/b &&
+		echo more stuff >>deep/deeper1/a &&
+		rm folder2/0/1 &&
+		mkdir folder2/0/1 &&
+		echo >>folder2/0/1/1 &&
 		mv folder1/larger-content deep/deeper1/edited-content &&
 		echo >>deep/deeper1/edited-content &&
 		git add . &&
@@ -68,11 +87,43 @@
 
 		git checkout -b rename-in-to-out rename-base &&
 		mv deep/deeper1/a folder1/b &&
+		echo >>folder2/0/1 &&
+		rm -rf folder1/0/0 &&
+		echo >>folder1/0/0 &&
 		mv deep/deeper1/larger-content folder1/edited-content &&
 		echo >>folder1/edited-content &&
 		git add . &&
 		git commit -m "rename deep/deeper1/... to folder1/..." &&
 
+		git checkout -b df-conflict-1 base &&
+		rm -rf folder1 &&
+		echo content >folder1 &&
+		git add . &&
+		git commit -m "dir to file" &&
+
+		git checkout -b df-conflict-2 base &&
+		rm -rf folder2 &&
+		echo content >folder2 &&
+		git add . &&
+		git commit -m "dir to file" &&
+
+		git checkout -b fd-conflict base &&
+		rm a &&
+		mkdir a &&
+		echo content >a/a &&
+		git add . &&
+		git commit -m "file to dir" &&
+
+		for side in left right
+		do
+			git checkout -b merge-$side base &&
+			echo $side >>deep/deeper2/a &&
+			echo $side >>folder1/a &&
+			echo $side >>folder2/a &&
+			git add . &&
+			git commit -m "$side" || return 1
+		done &&
+
 		git checkout -b deepest base &&
 		echo "updated deepest" >deep/deeper1/deepest/a &&
 		git commit -a -m "update deepest" &&
@@ -196,6 +247,14 @@
 	test_all_match git status --porcelain=v2 -uno
 '
 
+test_expect_success 'status reports sparse-checkout' '
+	init_repos &&
+	git -C sparse-checkout status >full &&
+	git -C sparse-index status >sparse &&
+	test_i18ngrep "You are in a sparse checkout with " full &&
+	test_i18ngrep "You are in a sparse checkout." sparse
+'
+
 test_expect_success 'add, commit, checkout' '
 	init_repos &&
 
@@ -232,6 +291,71 @@
 	test_all_match git checkout -
 '
 
+test_expect_success 'commit including unstaged changes' '
+	init_repos &&
+
+	write_script edit-file <<-\EOF &&
+	echo $1 >$2
+	EOF
+
+	run_on_all ../edit-file 1 a &&
+	run_on_all ../edit-file 1 deep/a &&
+
+	test_all_match git commit -m "-a" -a &&
+	test_all_match git status --porcelain=v2 &&
+
+	run_on_all ../edit-file 2 a &&
+	run_on_all ../edit-file 2 deep/a &&
+
+	test_all_match git commit -m "--include" --include deep/a &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git commit -m "--include" --include a &&
+	test_all_match git status --porcelain=v2 &&
+
+	run_on_all ../edit-file 3 a &&
+	run_on_all ../edit-file 3 deep/a &&
+
+	test_all_match git commit -m "--amend" -a --amend &&
+	test_all_match git status --porcelain=v2
+'
+
+test_expect_success 'status/add: outside sparse cone' '
+	init_repos &&
+
+	# folder1 is at HEAD, but outside the sparse cone
+	run_on_sparse mkdir folder1 &&
+	cp initial-repo/folder1/a sparse-checkout/folder1/a &&
+	cp initial-repo/folder1/a sparse-index/folder1/a &&
+
+	test_sparse_match git status &&
+
+	write_script edit-contents <<-\EOF &&
+	echo text >>$1
+	EOF
+	run_on_sparse ../edit-contents folder1/a &&
+	run_on_all ../edit-contents folder1/new &&
+
+	test_sparse_match git status --porcelain=v2 &&
+
+	# Adding the path outside of the sparse-checkout cone should fail.
+	test_sparse_match test_must_fail git add folder1/a &&
+	test_sparse_match test_must_fail git add --refresh folder1/a &&
+
+	# NEEDSWORK: Adding a newly-tracked file outside the cone succeeds
+	test_sparse_match git add folder1/new &&
+
+	test_all_match git add . &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git commit -m folder1/new &&
+	test_all_match git rev-parse HEAD^{tree} &&
+
+	run_on_all ../edit-contents folder1/newer &&
+	test_all_match git add folder1/ &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git commit -m folder1/newer &&
+	test_all_match git rev-parse HEAD^{tree}
+'
+
 test_expect_success 'checkout and reset --hard' '
 	init_repos &&
 
@@ -262,13 +386,40 @@
 	test_all_match git diff --staged
 '
 
-test_expect_success 'diff with renames' '
+# NEEDSWORK: sparse-checkout behaves differently from full-checkout when
+# running this test with 'df-conflict-2' after 'df-conflict-1'.
+test_expect_success 'diff with renames and conflicts' '
 	init_repos &&
 
-	for branch in rename-out-to-out rename-out-to-in rename-in-to-out
+	for branch in rename-out-to-out \
+		      rename-out-to-in \
+		      rename-in-to-out \
+		      df-conflict-1 \
+		      fd-conflict
 	do
 		test_all_match git checkout rename-base &&
-		test_all_match git checkout $branch -- .&&
+		test_all_match git checkout $branch -- . &&
+		test_all_match git status --porcelain=v2 &&
+		test_all_match git diff --staged --no-renames &&
+		test_all_match git diff --staged --find-renames || return 1
+	done
+'
+
+test_expect_success 'diff with directory/file conflicts' '
+	init_repos &&
+
+	for branch in rename-out-to-out \
+		      rename-out-to-in \
+		      rename-in-to-out \
+		      df-conflict-1 \
+		      df-conflict-2 \
+		      fd-conflict
+	do
+		git -C full-checkout reset --hard &&
+		test_sparse_match git reset --hard &&
+		test_all_match git checkout $branch &&
+		test_all_match git checkout rename-base -- . &&
+		test_all_match git status --porcelain=v2 &&
 		test_all_match git diff --staged --no-renames &&
 		test_all_match git diff --staged --find-renames || return 1
 	done
@@ -308,8 +459,8 @@
 	test_all_match git blame deep/deeper2/deepest/a
 '
 
-# TODO: reset currently does not behave as expected when in a
-# sparse-checkout.
+# NEEDSWORK: a sparse-checkout behaves differently from a full checkout
+# in this scenario, but it shouldn't.
 test_expect_failure 'checkout and reset (mixed)' '
 	init_repos &&
 
@@ -319,8 +470,8 @@
 	test_all_match git reset update-folder2
 '
 
-# Ensure that sparse-index behaves identically to
-# sparse-checkout with a full index.
+# NEEDSWORK: a sparse-checkout behaves differently from a full checkout
+# in this scenario, but it shouldn't.
 test_expect_success 'checkout and reset (mixed) [sparse]' '
 	init_repos &&
 
@@ -340,6 +491,39 @@
 	test_all_match git rev-parse HEAD^{tree}
 '
 
+# NEEDSWORK: This test is documenting current behavior, but that
+# behavior can be confusing to users so there is desire to change it.
+# Right now, users might be using this flow to work through conflicts,
+# so any solution should present advice to users who try this sequence
+# of commands to follow whatever new method we create.
+test_expect_success 'merge with conflict outside cone' '
+	init_repos &&
+
+	test_all_match git checkout -b merge-tip merge-left &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match test_must_fail git merge -m merge merge-right &&
+	test_all_match git status --porcelain=v2 &&
+
+	# Resolve the conflict in different ways:
+	# 1. Revert to the base
+	test_all_match git checkout base -- deep/deeper2/a &&
+	test_all_match git status --porcelain=v2 &&
+
+	# 2. Add the file with conflict markers
+	test_all_match git add folder1/a &&
+	test_all_match git status --porcelain=v2 &&
+
+	# 3. Rename the file to another sparse filename and
+	#    accept conflict markers as resolved content.
+	run_on_all mv folder2/a folder2/z &&
+	test_all_match git add folder2 &&
+	test_all_match git status --porcelain=v2 &&
+
+	test_all_match git merge --continue &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git rev-parse HEAD^{tree}
+'
+
 test_expect_success 'merge with outside renames' '
 	init_repos &&
 
@@ -352,6 +536,28 @@
 	done
 '
 
+# Sparse-index fails to convert the index in the
+# final 'git cherry-pick' command.
+test_expect_success 'cherry-pick with conflicts' '
+	init_repos &&
+
+	write_script edit-conflict <<-\EOF &&
+	echo $1 >conflict
+	EOF
+
+	test_all_match git checkout -b to-cherry-pick &&
+	run_on_all ../edit-conflict ABC &&
+	test_all_match git add conflict &&
+	test_all_match git commit -m "conflict to pick" &&
+
+	test_all_match git checkout -B base HEAD~1 &&
+	run_on_all ../edit-conflict DEF &&
+	test_all_match git add conflict &&
+	test_all_match git commit -m "conflict in base" &&
+
+	test_all_match test_must_fail git cherry-pick to-cherry-pick
+'
+
 test_expect_success 'clean' '
 	init_repos &&
 
@@ -405,12 +611,186 @@
 	GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
 		git -C sparse-index -c core.fsmonitor="" reset --hard &&
 	test_region index convert_to_sparse trace2.txt &&
-	test_region index ensure_full_index trace2.txt &&
-
-	rm trace2.txt &&
-	GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
-		git -C sparse-index -c core.fsmonitor="" status -uno &&
 	test_region index ensure_full_index trace2.txt
 '
 
+ensure_not_expanded () {
+	rm -f trace2.txt &&
+	echo >>sparse-index/untracked.txt &&
+	GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
+		git -C sparse-index "$@" &&
+	test_region ! index ensure_full_index trace2.txt
+}
+
+test_expect_success 'sparse-index is not expanded' '
+	init_repos &&
+
+	ensure_not_expanded status &&
+	ensure_not_expanded commit --allow-empty -m empty &&
+	echo >>sparse-index/a &&
+	ensure_not_expanded commit -a -m a &&
+	echo >>sparse-index/a &&
+	ensure_not_expanded commit --include a -m a &&
+	echo >>sparse-index/deep/deeper1/a &&
+	ensure_not_expanded commit --include deep/deeper1/a -m deeper &&
+	ensure_not_expanded checkout rename-out-to-out &&
+	ensure_not_expanded checkout - &&
+	ensure_not_expanded switch rename-out-to-out &&
+	ensure_not_expanded switch - &&
+	git -C sparse-index reset --hard &&
+	ensure_not_expanded checkout rename-out-to-out -- deep/deeper1 &&
+	git -C sparse-index reset --hard &&
+	ensure_not_expanded restore -s rename-out-to-out -- deep/deeper1 &&
+
+	echo >>sparse-index/README.md &&
+	ensure_not_expanded add -A &&
+	echo >>sparse-index/extra.txt &&
+	ensure_not_expanded add extra.txt &&
+	echo >>sparse-index/untracked.txt &&
+	ensure_not_expanded add .
+'
+
+# NEEDSWORK: a sparse-checkout behaves differently from a full checkout
+# in this scenario, but it shouldn't.
+test_expect_success 'reset mixed and checkout orphan' '
+	init_repos &&
+
+	test_all_match git checkout rename-out-to-in &&
+
+	# Sparse checkouts do not agree with full checkouts about
+	# how to report a directory/file conflict during a reset.
+	# This command would fail with test_all_match because the
+	# full checkout reports "T folder1/0/1" while a sparse
+	# checkout reports "D folder1/0/1". This matches because
+	# the sparse checkouts skip "adding" the other side of
+	# the conflict.
+	test_sparse_match git reset --mixed HEAD~1 &&
+	test_sparse_match test-tool read-cache --table --expand &&
+	test_sparse_match git status --porcelain=v2 &&
+
+	# At this point, sparse-checkouts behave differently
+	# from the full-checkout.
+	test_sparse_match git checkout --orphan new-branch &&
+	test_sparse_match test-tool read-cache --table --expand &&
+	test_sparse_match git status --porcelain=v2
+'
+
+test_expect_success 'add everything with deep new file' '
+	init_repos &&
+
+	run_on_sparse git sparse-checkout set deep/deeper1/deepest &&
+
+	run_on_all touch deep/deeper1/x &&
+	test_all_match git add . &&
+	test_all_match git status --porcelain=v2
+'
+
+# NEEDSWORK: 'git checkout' behaves incorrectly in the case of
+# directory/file conflicts, even without sparse-checkout. Use this
+# test only as a documentation of the incorrect behavior, not a
+# measure of how it _should_ behave.
+test_expect_success 'checkout behaves oddly with df-conflict-1' '
+	init_repos &&
+
+	test_sparse_match git sparse-checkout disable &&
+
+	write_script edit-content <<-\EOF &&
+	echo content >>folder1/larger-content
+	git add folder1
+	EOF
+
+	run_on_all ../edit-content &&
+	test_all_match git status --porcelain=v2 &&
+
+	git -C sparse-checkout sparse-checkout init --cone &&
+	git -C sparse-index sparse-checkout init --cone --sparse-index &&
+
+	test_all_match git status --porcelain=v2 &&
+
+	# This checkout command should fail, because we have a staged
+	# change to folder1/larger-content, but the destination changes
+	# folder1 to a file.
+	git -C full-checkout checkout df-conflict-1 \
+		1>full-checkout-out \
+		2>full-checkout-err &&
+	git -C sparse-checkout checkout df-conflict-1 \
+		1>sparse-checkout-out \
+		2>sparse-checkout-err &&
+	git -C sparse-index checkout df-conflict-1 \
+		1>sparse-index-out \
+		2>sparse-index-err &&
+
+	# Instead, the checkout deletes the folder1 file and adds the
+	# folder1/larger-content file, leaving all other paths that were
+	# in folder1/ as deleted (without any warning).
+	cat >expect <<-EOF &&
+	D	folder1
+	A	folder1/larger-content
+	EOF
+	test_cmp expect full-checkout-out &&
+	test_cmp expect sparse-checkout-out &&
+
+	# The sparse-index reports no output
+	test_must_be_empty sparse-index-out &&
+
+	# stderr: Switched to branch df-conflict-1
+	test_cmp full-checkout-err sparse-checkout-err &&
+	test_cmp full-checkout-err sparse-checkout-err
+'
+
+# NEEDSWORK: 'git checkout' behaves incorrectly in the case of
+# directory/file conflicts, even without sparse-checkout. Use this
+# test only as a documentation of the incorrect behavior, not a
+# measure of how it _should_ behave.
+test_expect_success 'checkout behaves oddly with df-conflict-2' '
+	init_repos &&
+
+	test_sparse_match git sparse-checkout disable &&
+
+	write_script edit-content <<-\EOF &&
+	echo content >>folder2/larger-content
+	git add folder2
+	EOF
+
+	run_on_all ../edit-content &&
+	test_all_match git status --porcelain=v2 &&
+
+	git -C sparse-checkout sparse-checkout init --cone &&
+	git -C sparse-index sparse-checkout init --cone --sparse-index &&
+
+	test_all_match git status --porcelain=v2 &&
+
+	# This checkout command should fail, because we have a staged
+	# change to folder1/larger-content, but the destination changes
+	# folder1 to a file.
+	git -C full-checkout checkout df-conflict-2 \
+		1>full-checkout-out \
+		2>full-checkout-err &&
+	git -C sparse-checkout checkout df-conflict-2 \
+		1>sparse-checkout-out \
+		2>sparse-checkout-err &&
+	git -C sparse-index checkout df-conflict-2 \
+		1>sparse-index-out \
+		2>sparse-index-err &&
+
+	# The full checkout deviates from the df-conflict-1 case here!
+	# It drops the change to folder1/larger-content and leaves the
+	# folder1 path as-is on disk. The sparse-index behaves the same.
+	test_must_be_empty full-checkout-out &&
+	test_must_be_empty sparse-index-out &&
+
+	# In the sparse-checkout case, the checkout deletes the folder1
+	# file and adds the folder1/larger-content file, leaving all other
+	# paths that were in folder1/ as deleted (without any warning).
+	cat >expect <<-EOF &&
+	D	folder2
+	A	folder2/larger-content
+	EOF
+	test_cmp expect sparse-checkout-out &&
+
+	# Switched to branch df-conflict-1
+	test_cmp full-checkout-err sparse-checkout-err &&
+	test_cmp full-checkout-err sparse-index-err
+'
+
 test_done
diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh
index ac947bf..84bf197 100755
--- a/t/t1301-shared-repo.sh
+++ b/t/t1301-shared-repo.sh
@@ -124,7 +124,7 @@
 		: happy
 		;;
 	*)
-		echo Ooops, .git/logs/refs/heads/main is not 0662 [$actual]
+		echo Ooops, .git/logs/refs/heads/main is not 066x [$actual]
 		false
 		;;
 	esac
diff --git a/t/t1350-config-hooks-path.sh b/t/t1350-config-hooks-path.sh
index f1f9aee..fa9647a 100755
--- a/t/t1350-config-hooks-path.sh
+++ b/t/t1350-config-hooks-path.sh
@@ -5,6 +5,7 @@
 . ./test-lib.sh
 
 test_expect_success 'set up a pre-commit hook in core.hooksPath' '
+	>actual &&
 	mkdir -p .git/custom-hooks .git/hooks &&
 	write_script .git/custom-hooks/pre-commit <<-\EOF &&
 	echo CUSTOM >>actual
diff --git a/t/t1401-symbolic-ref.sh b/t/t1401-symbolic-ref.sh
index a4ebb0b..132a1b8 100755
--- a/t/t1401-symbolic-ref.sh
+++ b/t/t1401-symbolic-ref.sh
@@ -7,17 +7,19 @@
 # the git repo, meaning that further tests will operate on
 # the surrounding git repo instead of the trash directory.
 reset_to_sane() {
-	echo ref: refs/heads/foo >.git/HEAD
+	rm -rf .git &&
+	"$TAR" xf .git.tar
 }
 
-test_expect_success 'symbolic-ref writes HEAD' '
+test_expect_success 'setup' '
 	git symbolic-ref HEAD refs/heads/foo &&
-	echo ref: refs/heads/foo >expect &&
-	test_cmp expect .git/HEAD
+	test_commit file &&
+	"$TAR" cf .git.tar .git/
 '
 
-test_expect_success 'symbolic-ref reads HEAD' '
-	echo refs/heads/foo >expect &&
+test_expect_success 'symbolic-ref read/write roundtrip' '
+	git symbolic-ref HEAD refs/heads/read-write-roundtrip &&
+	echo refs/heads/read-write-roundtrip >expect &&
 	git symbolic-ref HEAD >actual &&
 	test_cmp expect actual
 '
@@ -25,12 +27,13 @@
 test_expect_success 'symbolic-ref refuses non-ref for HEAD' '
 	test_must_fail git symbolic-ref HEAD foo
 '
+
 reset_to_sane
 
 test_expect_success 'symbolic-ref refuses bare sha1' '
-	echo content >file && git add file && git commit -m one &&
 	test_must_fail git symbolic-ref HEAD $(git rev-parse HEAD)
 '
+
 reset_to_sane
 
 test_expect_success 'HEAD cannot be removed' '
@@ -42,16 +45,16 @@
 test_expect_success 'symbolic-ref can be deleted' '
 	git symbolic-ref NOTHEAD refs/heads/foo &&
 	git symbolic-ref -d NOTHEAD &&
-	test_path_is_file .git/refs/heads/foo &&
-	test_path_is_missing .git/NOTHEAD
+	git rev-parse refs/heads/foo &&
+	test_must_fail git symbolic-ref NOTHEAD
 '
 reset_to_sane
 
 test_expect_success 'symbolic-ref can delete dangling symref' '
 	git symbolic-ref NOTHEAD refs/heads/missing &&
 	git symbolic-ref -d NOTHEAD &&
-	test_path_is_missing .git/refs/heads/missing &&
-	test_path_is_missing .git/NOTHEAD
+	test_must_fail git rev-parse refs/heads/missing &&
+	test_must_fail git symbolic-ref NOTHEAD
 '
 reset_to_sane
 
diff --git a/t/t1404-update-ref-errors.sh b/t/t1404-update-ref-errors.sh
index 8b51c4e..b729c1f 100755
--- a/t/t1404-update-ref-errors.sh
+++ b/t/t1404-update-ref-errors.sh
@@ -189,7 +189,7 @@
 
 '
 
-test_expect_success 'empty directory should not fool rev-parse' '
+test_expect_success REFFILES 'empty directory should not fool rev-parse' '
 	prefix=refs/e-rev-parse &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -199,7 +199,7 @@
 	test_cmp expected actual
 '
 
-test_expect_success 'empty directory should not fool for-each-ref' '
+test_expect_success REFFILES 'empty directory should not fool for-each-ref' '
 	prefix=refs/e-for-each-ref &&
 	git update-ref $prefix/foo $C &&
 	git for-each-ref $prefix >expected &&
@@ -209,14 +209,14 @@
 	test_cmp expected actual
 '
 
-test_expect_success 'empty directory should not fool create' '
+test_expect_success REFFILES 'empty directory should not fool create' '
 	prefix=refs/e-create &&
 	mkdir -p .git/$prefix/foo/bar/baz &&
 	printf "create %s $C\n" $prefix/foo |
 	git update-ref --stdin
 '
 
-test_expect_success 'empty directory should not fool verify' '
+test_expect_success REFFILES 'empty directory should not fool verify' '
 	prefix=refs/e-verify &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -225,7 +225,7 @@
 	git update-ref --stdin
 '
 
-test_expect_success 'empty directory should not fool 1-arg update' '
+test_expect_success REFFILES 'empty directory should not fool 1-arg update' '
 	prefix=refs/e-update-1 &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -234,7 +234,7 @@
 	git update-ref --stdin
 '
 
-test_expect_success 'empty directory should not fool 2-arg update' '
+test_expect_success REFFILES 'empty directory should not fool 2-arg update' '
 	prefix=refs/e-update-2 &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -243,7 +243,7 @@
 	git update-ref --stdin
 '
 
-test_expect_success 'empty directory should not fool 0-arg delete' '
+test_expect_success REFFILES 'empty directory should not fool 0-arg delete' '
 	prefix=refs/e-delete-0 &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -252,7 +252,7 @@
 	git update-ref --stdin
 '
 
-test_expect_success 'empty directory should not fool 1-arg delete' '
+test_expect_success REFFILES 'empty directory should not fool 1-arg delete' '
 	prefix=refs/e-delete-1 &&
 	git update-ref $prefix/foo $C &&
 	git pack-refs --all &&
@@ -466,7 +466,7 @@
 	test_cmp expected output.err
 '
 
-test_expect_success 'non-empty directory blocks create' '
+test_expect_success REFFILES 'non-empty directory blocks create' '
 	prefix=refs/ne-create &&
 	mkdir -p .git/$prefix/foo/bar &&
 	: >.git/$prefix/foo/bar/baz.lock &&
@@ -485,7 +485,7 @@
 	test_cmp expected output.err
 '
 
-test_expect_success 'broken reference blocks create' '
+test_expect_success REFFILES 'broken reference blocks create' '
 	prefix=refs/broken-create &&
 	mkdir -p .git/$prefix &&
 	echo "gobbledigook" >.git/$prefix/foo &&
@@ -504,7 +504,7 @@
 	test_cmp expected output.err
 '
 
-test_expect_success 'non-empty directory blocks indirect create' '
+test_expect_success REFFILES 'non-empty directory blocks indirect create' '
 	prefix=refs/ne-indirect-create &&
 	git symbolic-ref $prefix/symref $prefix/foo &&
 	mkdir -p .git/$prefix/foo/bar &&
@@ -524,7 +524,7 @@
 	test_cmp expected output.err
 '
 
-test_expect_success 'broken reference blocks indirect create' '
+test_expect_success REFFILES 'broken reference blocks indirect create' '
 	prefix=refs/broken-indirect-create &&
 	git symbolic-ref $prefix/symref $prefix/foo &&
 	echo "gobbledigook" >.git/$prefix/foo &&
@@ -543,7 +543,7 @@
 	test_cmp expected output.err
 '
 
-test_expect_success 'no bogus intermediate values during delete' '
+test_expect_success REFFILES 'no bogus intermediate values during delete' '
 	prefix=refs/slow-transaction &&
 	# Set up a reference with differing loose and packed versions:
 	git update-ref $prefix/foo $C &&
@@ -600,7 +600,7 @@
 	test_must_fail git rev-parse --verify --quiet $prefix/foo
 '
 
-test_expect_success 'delete fails cleanly if packed-refs file is locked' '
+test_expect_success REFFILES 'delete fails cleanly if packed-refs file is locked' '
 	prefix=refs/locked-packed-refs &&
 	# Set up a reference with differing loose and packed versions:
 	git update-ref $prefix/foo $C &&
@@ -616,7 +616,7 @@
 	test_cmp unchanged actual
 '
 
-test_expect_success 'delete fails cleanly if packed-refs.new write fails' '
+test_expect_success REFFILES 'delete fails cleanly if packed-refs.new write fails' '
 	# Setup and expectations are similar to the test above.
 	prefix=refs/failed-packed-refs &&
 	git update-ref $prefix/foo $C &&
diff --git a/t/t1405-main-ref-store.sh b/t/t1405-main-ref-store.sh
index a237d98..49718b7 100755
--- a/t/t1405-main-ref-store.sh
+++ b/t/t1405-main-ref-store.sh
@@ -9,12 +9,18 @@
 
 RUN="test-tool ref-store main"
 
-test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
-	test_commit one &&
+
+test_expect_success 'setup' '
+	test_commit one
+'
+
+test_expect_success REFFILES 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
 	N=`find .git/refs -type f | wc -l` &&
 	test "$N" != 0 &&
-	$RUN pack-refs 3 &&
-	N=`find .git/refs -type f | wc -l`
+	ALL_OR_PRUNE_FLAG=3 &&
+	$RUN pack-refs ${ALL_OR_PRUNE_FLAG} &&
+	N=`find .git/refs -type f` &&
+	test -z "$N"
 '
 
 test_expect_success 'create_symref(FOO, refs/heads/main)' '
@@ -98,12 +104,12 @@
 
 test_expect_success 'delete_reflog(HEAD)' '
 	$RUN delete-reflog HEAD &&
-	! test -f .git/logs/HEAD
+	test_must_fail git reflog exists HEAD
 '
 
 test_expect_success 'create-reflog(HEAD)' '
 	$RUN create-reflog HEAD 1 &&
-	test -f .git/logs/HEAD
+	git reflog exists HEAD
 '
 
 test_expect_success 'delete_ref(refs/heads/foo)' '
diff --git a/t/t1407-worktree-ref-store.sh b/t/t1407-worktree-ref-store.sh
index d3fe777..ad8006c 100755
--- a/t/t1407-worktree-ref-store.sh
+++ b/t/t1407-worktree-ref-store.sh
@@ -52,7 +52,14 @@
 	test_cmp expected actual
 '
 
-test_expect_success 'for_each_reflog()' '
+# Some refs (refs/bisect/*, pseudorefs) are kept per worktree, so they should
+# only appear in the for-each-reflog output if it is called from the correct
+# worktree, which is exercised in this test. This test is poorly written (and
+# therefore marked REFFILES) for mulitple reasons: 1) it creates invalidly
+# formatted log entres. 2) it uses direct FS access for creating the reflogs. 3)
+# PSEUDO-WT and refs/bisect/random do not create reflogs by default, so it is
+# not testing a realistic scenario.
+test_expect_success REFFILES 'for_each_reflog()' '
 	echo $ZERO_OID > .git/logs/PSEUDO-MAIN &&
 	mkdir -p     .git/logs/refs/bisect &&
 	echo $ZERO_OID > .git/logs/refs/bisect/random &&
diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh
index 27b9080..d42f067 100755
--- a/t/t1410-reflog.sh
+++ b/t/t1410-reflog.sh
@@ -374,7 +374,9 @@
 	test_line_count = 3 actual
 '
 
-test_expect_success 'reflog expire operates on symref not referrent' '
+# This test takes a lock on an individual ref; this is not supported in
+# reftable.
+test_expect_success REFFILES 'reflog expire operates on symref not referrent' '
 	git branch --create-reflog the_symref &&
 	git branch --create-reflog referrent &&
 	git update-ref referrent HEAD &&
diff --git a/t/t1413-reflog-detach.sh b/t/t1413-reflog-detach.sh
index bde0520..934688a 100755
--- a/t/t1413-reflog-detach.sh
+++ b/t/t1413-reflog-detach.sh
@@ -7,8 +7,7 @@
 . ./test-lib.sh
 
 reset_state () {
-	git checkout main &&
-	cp saved_reflog .git/logs/HEAD
+	rm -rf .git && "$TAR" xf .git-saved.tar
 }
 
 test_expect_success setup '
@@ -17,7 +16,7 @@
 	git branch side &&
 	test_tick &&
 	git commit --allow-empty -m second &&
-	cat .git/logs/HEAD >saved_reflog
+	"$TAR" cf .git-saved.tar .git
 '
 
 test_expect_success baseline '
diff --git a/t/t1414-reflog-walk.sh b/t/t1414-reflog-walk.sh
index 80d9470..ea64cec 100755
--- a/t/t1414-reflog-walk.sh
+++ b/t/t1414-reflog-walk.sh
@@ -119,7 +119,9 @@
 	test_cmp expect actual
 '
 
-test_expect_success 'walk prefers reflog to ref tip' '
+# Create a situation where the reflog and ref database disagree about the latest
+# state of HEAD.
+test_expect_success REFFILES 'walk prefers reflog to ref tip' '
 	head=$(git rev-parse HEAD) &&
 	one=$(git rev-parse one) &&
 	ident="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" &&
diff --git a/t/t1415-worktree-refs.sh b/t/t1415-worktree-refs.sh
index 7ab9124..a3e6ea0 100755
--- a/t/t1415-worktree-refs.sh
+++ b/t/t1415-worktree-refs.sh
@@ -16,7 +16,10 @@
 	git -C wt2 update-ref refs/worktree/foo HEAD
 '
 
-test_expect_success 'refs/worktree must not be packed' '
+# The 'packed-refs' file is stored directly in .git/. This means it is global
+# to the repository, and can only contain refs that are shared across all
+# worktrees.
+test_expect_success REFFILES 'refs/worktree must not be packed' '
 	git pack-refs --all &&
 	test_path_is_missing .git/refs/tags/wt1 &&
 	test_path_is_file .git/refs/worktree/foo &&
@@ -37,9 +40,8 @@
 '
 
 test_expect_success 'ambiguous main-worktree/HEAD' '
-	mkdir -p .git/refs/heads/main-worktree &&
-	test_when_finished rm -f .git/refs/heads/main-worktree/HEAD &&
-	cp .git/HEAD .git/refs/heads/main-worktree/HEAD &&
+	test_when_finished git update-ref -d refs/heads/main-worktree/HEAD &&
+	git update-ref refs/heads/main-worktree/HEAD $(git rev-parse HEAD) &&
 	git rev-parse main-worktree/HEAD 2>warn &&
 	grep "main-worktree/HEAD.*ambiguous" warn
 '
@@ -51,9 +53,8 @@
 '
 
 test_expect_success 'ambiguous worktrees/xx/HEAD' '
-	mkdir -p .git/refs/heads/worktrees/wt1 &&
-	test_when_finished rm -f .git/refs/heads/worktrees/wt1/HEAD &&
-	cp .git/HEAD .git/refs/heads/worktrees/wt1/HEAD &&
+	git update-ref refs/heads/worktrees/wt1/HEAD $(git rev-parse HEAD) &&
+	test_when_finished git update-ref -d refs/heads/worktrees/wt1/HEAD &&
 	git rev-parse worktrees/wt1/HEAD 2>warn &&
 	grep "worktrees/wt1/HEAD.*ambiguous" warn
 '
diff --git a/t/t1503-rev-parse-verify.sh b/t/t1503-rev-parse-verify.sh
index bf08102..4095861 100755
--- a/t/t1503-rev-parse-verify.sh
+++ b/t/t1503-rev-parse-verify.sh
@@ -142,7 +142,7 @@
 	test_must_fail git rev-parse --verify main@{$Np1}
 '
 
-test_expect_success SYMLINKS 'ref resolution not confused by broken symlinks' '
+test_expect_success SYMLINKS,REFFILES 'ref resolution not confused by broken symlinks' '
 	ln -s does-not-exist .git/refs/heads/broken &&
 	test_must_fail git rev-parse --verify broken
 '
diff --git a/t/t2017-checkout-orphan.sh b/t/t2017-checkout-orphan.sh
index c7adbdd..88d6992 100755
--- a/t/t2017-checkout-orphan.sh
+++ b/t/t2017-checkout-orphan.sh
@@ -76,7 +76,7 @@
 	git rev-parse --verify delta@{0}
 '
 
-test_expect_success '--orphan does not make reflog when core.logAllRefUpdates = false' '
+test_expect_success REFFILES '--orphan does not make reflog when core.logAllRefUpdates = false' '
 	git checkout main &&
 	git config core.logAllRefUpdates false &&
 	git checkout --orphan epsilon &&
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh
index 96dfca1..37ad794 100755
--- a/t/t2400-worktree-add.sh
+++ b/t/t2400-worktree-add.sh
@@ -67,11 +67,25 @@
 '
 
 test_expect_success '"add" worktree with lock' '
-	git rev-parse HEAD >expect &&
 	git worktree add --detach --lock here-with-lock main &&
+	test_when_finished "git worktree unlock here-with-lock || :" &&
 	test -f .git/worktrees/here-with-lock/locked
 '
 
+test_expect_success '"add" worktree with lock and reason' '
+	lock_reason="why not" &&
+	git worktree add --detach --lock --reason "$lock_reason" here-with-lock-reason main &&
+	test_when_finished "git worktree unlock here-with-lock-reason || :" &&
+	test -f .git/worktrees/here-with-lock-reason/locked &&
+	echo "$lock_reason" >expect &&
+	test_cmp expect .git/worktrees/here-with-lock-reason/locked
+'
+
+test_expect_success '"add" worktree with reason but no lock' '
+	test_must_fail git worktree add --detach --reason "why not" here-with-reason-only main &&
+	test_path_is_missing .git/worktrees/here-with-reason-only/locked
+'
+
 test_expect_success '"add" worktree from a subdir' '
 	(
 		mkdir sub &&
diff --git a/t/t2402-worktree-list.sh b/t/t2402-worktree-list.sh
index fedcefe..4012bd6 100755
--- a/t/t2402-worktree-list.sh
+++ b/t/t2402-worktree-list.sh
@@ -230,7 +230,7 @@
 		EOF
 		cd linked &&
 		echo "worktree $(pwd)" >expected &&
-		echo "ref: .broken" >../.git/HEAD &&
+		(cd ../ && test-tool ref-store main create-symref HEAD .broken ) &&
 		git worktree list --porcelain >out &&
 		head -n 3 out >actual &&
 		test_cmp ../expected actual &&
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index cc4b102..e575ffb 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -1272,6 +1272,19 @@
 	test_must_fail git branch -d my10
 '
 
+test_expect_success 'branch --delete --force removes dangling branch' '
+	git checkout main &&
+	test_commit unstable &&
+	hash=$(git rev-parse HEAD) &&
+	objpath=$(echo $hash | sed -e "s|^..|.git/objects/&/|") &&
+	git branch --no-track dangling &&
+	mv $objpath $objpath.x &&
+	test_when_finished "mv $objpath.x $objpath" &&
+	git branch --delete --force dangling &&
+	git for-each-ref refs/heads/dangling >actual &&
+	test_must_be_empty actual
+'
+
 test_expect_success 'use --edit-description' '
 	write_script editor <<-\EOF &&
 		echo "New contents" >"$1"
diff --git a/t/t3202-show-branch-octopus.sh b/t/t3202-show-branch-octopus.sh
deleted file mode 100755
index 5cb0126..0000000
--- a/t/t3202-show-branch-octopus.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-test_description='test show-branch with more than 8 heads'
-
-GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
-export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-. ./test-lib.sh
-
-numbers="1 2 3 4 5 6 7 8 9 10"
-
-test_expect_success 'setup' '
-
-	> file &&
-	git add file &&
-	test_tick &&
-	git commit -m initial &&
-
-	for i in $numbers
-	do
-		git checkout -b branch$i main &&
-		> file$i &&
-		git add file$i &&
-		test_tick &&
-		git commit -m branch$i || return 1
-	done
-
-'
-
-cat > expect << EOF
-! [branch1] branch1
- ! [branch2] branch2
-  ! [branch3] branch3
-   ! [branch4] branch4
-    ! [branch5] branch5
-     ! [branch6] branch6
-      ! [branch7] branch7
-       ! [branch8] branch8
-        ! [branch9] branch9
-         * [branch10] branch10
-----------
-         * [branch10] branch10
-        +  [branch9] branch9
-       +   [branch8] branch8
-      +    [branch7] branch7
-     +     [branch6] branch6
-    +      [branch5] branch5
-   +       [branch4] branch4
-  +        [branch3] branch3
- +         [branch2] branch2
-+          [branch1] branch1
-+++++++++* [branch10^] initial
-EOF
-
-test_expect_success 'show-branch with more than 8 branches' '
-
-	git show-branch $(for i in $numbers; do echo branch$i; done) > out &&
-	test_cmp expect out
-
-'
-
-test_expect_success 'show-branch with showbranch.default' '
-	for i in $numbers; do
-		git config --add showbranch.default branch$i
-	done &&
-	git show-branch >out &&
-	test_cmp expect out
-'
-
-test_done
diff --git a/t/t3202-show-branch.sh b/t/t3202-show-branch.sh
new file mode 100755
index 0000000..ad9902a
--- /dev/null
+++ b/t/t3202-show-branch.sh
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+test_description='test show-branch'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+	test_commit initial &&
+	for i in $(test_seq 1 10)
+	do
+		git checkout -b branch$i initial &&
+		test_commit --no-tag branch$i
+	done &&
+	git for-each-ref \
+		--sort=version:refname \
+		--format="%(refname:strip=2)" \
+		"refs/heads/branch*" >branches.sorted &&
+	sed "s/^> //" >expect <<-\EOF
+	> ! [branch1] branch1
+	>  ! [branch2] branch2
+	>   ! [branch3] branch3
+	>    ! [branch4] branch4
+	>     ! [branch5] branch5
+	>      ! [branch6] branch6
+	>       ! [branch7] branch7
+	>        ! [branch8] branch8
+	>         ! [branch9] branch9
+	>          * [branch10] branch10
+	> ----------
+	>          * [branch10] branch10
+	>         +  [branch9] branch9
+	>        +   [branch8] branch8
+	>       +    [branch7] branch7
+	>      +     [branch6] branch6
+	>     +      [branch5] branch5
+	>    +       [branch4] branch4
+	>   +        [branch3] branch3
+	>  +         [branch2] branch2
+	> +          [branch1] branch1
+	> +++++++++* [branch10^] initial
+	EOF
+'
+
+test_expect_success 'show-branch with more than 8 branches' '
+	git show-branch $(cat branches.sorted) >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'show-branch with showbranch.default' '
+	for branch in $(cat branches.sorted)
+	do
+		test_config showbranch.default $branch --add
+	done &&
+	git show-branch >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'show-branch --color output' '
+	sed "s/^> //" >expect <<-\EOF &&
+	> <RED>!<RESET> [branch1] branch1
+	>  <GREEN>!<RESET> [branch2] branch2
+	>   <YELLOW>!<RESET> [branch3] branch3
+	>    <BLUE>!<RESET> [branch4] branch4
+	>     <MAGENTA>!<RESET> [branch5] branch5
+	>      <CYAN>!<RESET> [branch6] branch6
+	>       <BOLD;RED>!<RESET> [branch7] branch7
+	>        <BOLD;GREEN>!<RESET> [branch8] branch8
+	>         <BOLD;YELLOW>!<RESET> [branch9] branch9
+	>          <BOLD;BLUE>*<RESET> [branch10] branch10
+	> ----------
+	>          <BOLD;BLUE>*<RESET> [branch10] branch10
+	>         <BOLD;YELLOW>+<RESET>  [branch9] branch9
+	>        <BOLD;GREEN>+<RESET>   [branch8] branch8
+	>       <BOLD;RED>+<RESET>    [branch7] branch7
+	>      <CYAN>+<RESET>     [branch6] branch6
+	>     <MAGENTA>+<RESET>      [branch5] branch5
+	>    <BLUE>+<RESET>       [branch4] branch4
+	>   <YELLOW>+<RESET>        [branch3] branch3
+	>  <GREEN>+<RESET>         [branch2] branch2
+	> <RED>+<RESET>          [branch1] branch1
+	> <RED>+<RESET><GREEN>+<RESET><YELLOW>+<RESET><BLUE>+<RESET><MAGENTA>+<RESET><CYAN>+<RESET><BOLD;RED>+<RESET><BOLD;GREEN>+<RESET><BOLD;YELLOW>+<RESET><BOLD;BLUE>*<RESET> [branch10^] initial
+	EOF
+	git show-branch --color=always $(cat branches.sorted) >actual.raw &&
+	test_decode_color <actual.raw >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'show branch --remotes' '
+	cat >expect.err <<-\EOF &&
+	No revs to be shown.
+	EOF
+	git show-branch -r 2>actual.err >actual.out &&
+	test_cmp expect.err actual.err &&
+	test_must_be_empty actual.out
+'
+
+test_expect_success 'setup show branch --list' '
+	sed "s/^> //" >expect <<-\EOF
+	>   [branch1] branch1
+	>   [branch2] branch2
+	>   [branch3] branch3
+	>   [branch4] branch4
+	>   [branch5] branch5
+	>   [branch6] branch6
+	>   [branch7] branch7
+	>   [branch8] branch8
+	>   [branch9] branch9
+	> * [branch10] branch10
+	EOF
+'
+
+test_expect_success 'show branch --list' '
+	git show-branch --list $(cat branches.sorted) >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'show branch --list has no --color output' '
+	git show-branch --color=always --list $(cat branches.sorted) >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'show branch --merge-base with one argument' '
+	for branch in $(cat branches.sorted)
+	do
+		git rev-parse $branch >expect &&
+		git show-branch --merge-base $branch >actual &&
+		test_cmp expect actual
+	done
+'
+
+test_expect_success 'show branch --merge-base with two arguments' '
+	for branch in $(cat branches.sorted)
+	do
+		git rev-parse initial >expect &&
+		git show-branch --merge-base initial $branch >actual &&
+		test_cmp expect actual
+	done
+'
+
+test_expect_success 'show branch --merge-base with N arguments' '
+	git rev-parse initial >expect &&
+	git show-branch --merge-base $(cat branches.sorted) >actual &&
+	test_cmp expect actual &&
+
+	git merge-base $(cat branches.sorted) >actual &&
+	test_cmp expect actual
+'
+
+test_done
diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh
index 5325b9f..6e94c6d 100755
--- a/t/t3203-branch-output.sh
+++ b/t/t3203-branch-output.sh
@@ -340,6 +340,10 @@
 	test_cmp expect actual
 '
 
+test_expect_success 'git branch with --format=%(rest) must fail' '
+	test_must_fail git branch --format="%(rest)" >actual
+'
+
 test_expect_success 'worktree colors correct' '
 	cat >expect <<-EOF &&
 	* <GREEN>(HEAD detached from fromtag)<RESET>
diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh
index 3b7cdc5..577f32d 100755
--- a/t/t3210-pack-refs.sh
+++ b/t/t3210-pack-refs.sh
@@ -253,7 +253,7 @@
 	git for-each-ref >all-refs-packed &&
 	test_cmp all-refs-before all-refs-packed &&
 	test -h .git/packed-refs &&
-	test "$(readlink .git/packed-refs)" = "my-deviant-packed-refs"
+	test "$(test_readlink .git/packed-refs)" = "my-deviant-packed-refs"
 '
 
 test_done
diff --git a/t/t3320-notes-merge-worktrees.sh b/t/t3320-notes-merge-worktrees.sh
index 052516e..6b2d507 100755
--- a/t/t3320-notes-merge-worktrees.sh
+++ b/t/t3320-notes-merge-worktrees.sh
@@ -46,8 +46,9 @@
 test_expect_success 'merge z into y fails and sets NOTES_MERGE_REF' '
 	git config core.notesRef refs/notes/y &&
 	test_must_fail git notes merge z &&
-	echo "ref: refs/notes/y" >expect &&
-	test_cmp expect .git/NOTES_MERGE_REF
+	echo "refs/notes/y" >expect &&
+	git symbolic-ref NOTES_MERGE_REF >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'merge z into y while mid-merge in another workdir fails' '
@@ -57,7 +58,7 @@
 		test_must_fail git notes merge z 2>err &&
 		test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err
 	) &&
-	test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF
+	test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF
 '
 
 test_expect_success 'merge z into x while mid-merge on y succeeds' '
@@ -68,8 +69,9 @@
 		test_i18ngrep "Automatic notes merge failed" out &&
 		grep -v "A notes merge into refs/notes/x is already in-progress in" out
 	) &&
-	echo "ref: refs/notes/x" >expect &&
-	test_cmp expect .git/worktrees/worktree2/NOTES_MERGE_REF
+	echo "refs/notes/x" >expect &&
+	git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual &&
+	test_cmp expect actual
 '
 
 test_done
diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh
index 0bb88aa..23dbd3c 100755
--- a/t/t3400-rebase.sh
+++ b/t/t3400-rebase.sh
@@ -406,4 +406,14 @@
 	test_i18ngrep "already checked out" err
 '
 
+test_expect_success MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink' '
+	git checkout main &&
+	mv .git/logs actual_logs &&
+	cmd //c "mklink /D .git\logs ..\actual_logs" &&
+	git rebase -f HEAD^ &&
+	test -L .git/logs &&
+	rm .git/logs &&
+	mv actual_logs .git/logs
+'
+
 test_done
diff --git a/t/t3403-rebase-skip.sh b/t/t3403-rebase-skip.sh
index e26762d..f6e4864 100755
--- a/t/t3403-rebase-skip.sh
+++ b/t/t3403-rebase-skip.sh
@@ -20,6 +20,7 @@
 	git add hello &&
 	git commit -m "hello" &&
 	git branch skip-reference &&
+	git tag hello &&
 
 	echo world >> hello &&
 	git commit -a -m "hello world" &&
@@ -36,7 +37,8 @@
 	test_tick &&
 	GIT_AUTHOR_NAME="Another Author" \
 		GIT_AUTHOR_EMAIL="another.author@example.com" \
-		git commit --amend --no-edit -m amended-goodbye &&
+		git commit --amend --no-edit -m amended-goodbye \
+			--reset-author &&
 	test_tick &&
 	git tag amended-goodbye &&
 
@@ -51,7 +53,7 @@
 	'
 
 test_expect_success 'rebase with git am -3 (default)' '
-	test_must_fail git rebase main
+	test_must_fail git rebase --apply main
 '
 
 test_expect_success 'rebase --skip can not be used with other options' '
@@ -95,6 +97,13 @@
 
 test_debug 'gitk --all & sleep 1'
 
+test_expect_success 'skipping final pick removes .git/MERGE_MSG' '
+	test_must_fail git rebase --onto hello reverted-goodbye^ \
+		reverted-goodbye &&
+	git rebase --skip &&
+	test_path_is_missing .git/MERGE_MSG
+'
+
 test_expect_success 'correct advice upon picking empty commit' '
 	test_when_finished "git rebase --abort" &&
 	test_must_fail git rebase -i --onto goodbye \
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 66bcbbf..d877872 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -839,6 +839,19 @@
 	git show HEAD~2 | grep "C changed"
 '
 
+test_expect_success 'no uncommited changes when rewording the todo list is reloaded' '
+	git checkout E &&
+	test_when_finished "git checkout @{-1}" &&
+	(
+		set_fake_editor &&
+		GIT_SEQUENCE_EDITOR="\"$PWD/fake-editor.sh\"" &&
+		export GIT_SEQUENCE_EDITOR &&
+		set_reword_editor &&
+		FAKE_LINES="reword 1 reword 2" git rebase -i C
+	) &&
+	check_reworded_commits D E
+'
+
 test_expect_success 'rebase -i can copy notes' '
 	git config notes.rewrite.rebase true &&
 	git config notes.rewriteRef "refs/notes/*" &&
diff --git a/t/t3418-rebase-continue.sh b/t/t3418-rebase-continue.sh
index f4c2ee0..738fbae 100755
--- a/t/t3418-rebase-continue.sh
+++ b/t/t3418-rebase-continue.sh
@@ -21,7 +21,7 @@
 	git checkout main
 '
 
-test_expect_success 'interactive rebase --continue works with touched file' '
+test_expect_success 'merge based rebase --continue with works with touched file' '
 	rm -fr .git/rebase-* &&
 	git reset --hard &&
 	git checkout main &&
@@ -31,12 +31,22 @@
 	git rebase --continue
 '
 
-test_expect_success 'non-interactive rebase --continue works with touched file' '
+test_expect_success 'merge based rebase --continue removes .git/MERGE_MSG' '
+	git checkout -f --detach topic &&
+
+	test_must_fail git rebase --onto main HEAD^ &&
+	git read-tree --reset -u HEAD &&
+	test_path_is_file .git/MERGE_MSG &&
+	git rebase --continue &&
+	test_path_is_missing .git/MERGE_MSG
+'
+
+test_expect_success 'apply based rebase --continue works with touched file' '
 	rm -fr .git/rebase-* &&
 	git reset --hard &&
 	git checkout main &&
 
-	test_must_fail git rebase --onto main main topic &&
+	test_must_fail git rebase --apply --onto main main topic &&
 	echo "Resolved" >F2 &&
 	git add F2 &&
 	test-tool chmtime =-60 F1 &&
@@ -254,7 +264,7 @@
 	'
 }
 
-test_rerere_autoupdate
+test_rerere_autoupdate --apply
 test_rerere_autoupdate -m
 GIT_SEQUENCE_EDITOR=: && export GIT_SEQUENCE_EDITOR
 test_rerere_autoupdate -i
diff --git a/t/t3430-rebase-merges.sh b/t/t3430-rebase-merges.sh
index 6748070..43c82d9 100755
--- a/t/t3430-rebase-merges.sh
+++ b/t/t3430-rebase-merges.sh
@@ -172,19 +172,39 @@
 	grep "^Merge branch ${SQ}G${SQ}$" .git/rebase-merge/message
 '
 
-test_expect_success 'fast-forward merge -c still rewords' '
-	git checkout -b fast-forward-merge-c H &&
+test_expect_success 'merge -c commits before rewording and reloads todo-list' '
+	cat >script-from-scratch <<-\EOF &&
+	merge -c E B
+	merge -c H G
+	EOF
+
+	git checkout -b merge-c H &&
 	(
-		set_fake_editor &&
-		FAKE_COMMIT_MESSAGE=edited \
-			GIT_SEQUENCE_EDITOR="echo merge -c H G >" \
-			git rebase -ir @^
+		set_reword_editor &&
+		GIT_SEQUENCE_EDITOR="\"$PWD/replace-editor.sh\"" \
+			git rebase -i -r D
 	) &&
-	echo edited >expected &&
-	git log --pretty=format:%B -1 >actual &&
-	test_cmp expected actual
+	check_reworded_commits E H
 '
 
+test_expect_success 'merge -c rewords when a strategy is given' '
+	git checkout -b merge-c-with-strategy H &&
+	write_script git-merge-override <<-\EOF &&
+	echo overridden$1 >G.t
+	git add G.t
+	EOF
+
+	PATH="$PWD:$PATH" \
+	GIT_SEQUENCE_EDITOR="echo merge -c H G >" \
+	GIT_EDITOR="echo edited >>" \
+		git rebase --no-ff -ir -s override -Xxopt E &&
+	test_write_lines overridden--xopt >expect &&
+	test_cmp expect G.t &&
+	test_write_lines H "" edited "" >expect &&
+	git log --format=%B -1 >actual &&
+	test_cmp expect actual
+
+'
 test_expect_success 'with a branch tip that was cherry-picked already' '
 	git checkout -b already-upstream main &&
 	base="$(git rev-parse --verify HEAD)" &&
diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh
index 9d100cd..4b5b607 100755
--- a/t/t3501-revert-cherry-pick.sh
+++ b/t/t3501-revert-cherry-pick.sh
@@ -158,4 +158,20 @@
 	grep -q "^modified$" renamed
 '
 
+test_expect_success 'advice from failed revert' '
+	test_commit --no-tag "add dream" dream dream &&
+	dream_oid=$(git rev-parse --short HEAD) &&
+	cat <<-EOF >expected &&
+	error: could not revert $dream_oid... add dream
+	hint: After resolving the conflicts, mark them with
+	hint: "git add/rm <pathspec>", then run
+	hint: "git revert --continue".
+	hint: You can instead skip this commit with "git revert --skip".
+	hint: To abort and get back to the state before "git revert",
+	hint: run "git revert --abort".
+	EOF
+	test_commit --append --no-tag "double-add dream" dream dream &&
+	test_must_fail git revert HEAD^ 2>actual &&
+	test_cmp expected actual
+'
 test_done
diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh
index 014001b..979e843 100755
--- a/t/t3507-cherry-pick-conflict.sh
+++ b/t/t3507-cherry-pick-conflict.sh
@@ -47,20 +47,23 @@
 	test "$head" = "$newhead"
 '
 
-test_expect_success 'advice from failed cherry-pick' "
+test_expect_success 'advice from failed cherry-pick' '
 	pristine_detach initial &&
 
-	picked=\$(git rev-parse --short picked) &&
+	picked=$(git rev-parse --short picked) &&
 	cat <<-EOF >expected &&
-	error: could not apply \$picked... picked
-	hint: after resolving the conflicts, mark the corrected paths
-	hint: with 'git add <paths>' or 'git rm <paths>'
-	hint: and commit the result with 'git commit'
+	error: could not apply $picked... picked
+	hint: After resolving the conflicts, mark them with
+	hint: "git add/rm <pathspec>", then run
+	hint: "git cherry-pick --continue".
+	hint: You can instead skip this commit with "git cherry-pick --skip".
+	hint: To abort and get back to the state before "git cherry-pick",
+	hint: run "git cherry-pick --abort".
 	EOF
 	test_must_fail git cherry-pick picked 2>actual &&
 
 	test_cmp expected actual
-"
+'
 
 test_expect_success 'advice from failed cherry-pick --no-commit' "
 	pristine_detach initial &&
diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh
index 6275c98..0544d58 100755
--- a/t/t3800-mktag.sh
+++ b/t/t3800-mktag.sh
@@ -12,15 +12,93 @@
 # given in the expect.pat file.
 
 check_verify_failure () {
-	test_expect_success "$1" "
-		test_must_fail git mktag <tag.sig 2>message &&
-		grep '$2' message &&
-		if test '$3' != '--no-strict'
+	subject=$1 &&
+	message=$2 &&
+	shift 2 &&
+
+	no_strict= &&
+	fsck_obj_ok= &&
+	no_strict= &&
+	while test $# != 0
+	do
+		case "$1" in
+		--no-strict)
+			no_strict=yes
+			;;
+		--fsck-obj-ok)
+			fsck_obj_ok=yes
+			;;
+		esac &&
+		shift
+	done &&
+
+	test_expect_success "fail with [--[no-]strict]: $subject" '
+		test_must_fail git mktag <tag.sig 2>err &&
+		if test -z "$no_strict"
 		then
-			test_must_fail git mktag --no-strict <tag.sig 2>message.no-strict &&
-			grep '$2' message.no-strict
+			test_must_fail git mktag <tag.sig 2>err2 &&
+			test_cmp err err2
+		else
+			git mktag --no-strict <tag.sig
 		fi
-	"
+	'
+
+	test_expect_success "setup: $subject" '
+		tag_ref=refs/tags/bad_tag &&
+
+		# Reset any leftover state from the last $subject
+		rm -rf bad-tag &&
+
+		git init --bare bad-tag &&
+		bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
+	'
+
+	test_expect_success "hash-object & fsck unreachable: $subject" '
+		if test -n "$fsck_obj_ok"
+		then
+			git -C bad-tag fsck
+		else
+			test_must_fail git -C bad-tag fsck
+		fi
+	'
+
+	test_expect_success "update-ref & fsck reachable: $subject" '
+		# Make sure the earlier test created it for us
+		git rev-parse "$bad_tag" &&
+
+		# The update-ref of the bad content will fail, do it
+		# anyway to see if it segfaults
+		test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
+
+		# Manually create the broken, we cannot do it with
+		# update-ref
+		echo "$bad_tag" >"bad-tag/$tag_ref" &&
+
+		# Unlike fsck-ing unreachable content above, this
+		# will always fail.
+		test_must_fail git -C bad-tag fsck
+	'
+
+	test_expect_success "for-each-ref: $subject" '
+		# Make sure the earlier test created it for us
+		git rev-parse "$bad_tag" &&
+
+		echo "$bad_tag" >"bad-tag/$tag_ref" &&
+
+		printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
+		git -C bad-tag for-each-ref "$tag_ref" >actual &&
+		test_cmp expected actual &&
+
+		test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
+	'
+
+	test_expect_success "fast-export & fast-import: $subject" '
+		# Make sure the earlier test created it for us
+		git rev-parse "$bad_tag" &&
+
+		test_must_fail git -C bad-tag fast-export --all &&
+		test_must_fail git -C bad-tag fast-export "$bad_tag"
+	'
 }
 
 test_expect_mktag_success() {
@@ -167,7 +245,8 @@
 EOF
 
 check_verify_failure 'verify object (hash/type) check -- correct type, nonexisting object' \
-	'^fatal: could not read tagged object'
+	'^fatal: could not read tagged object' \
+	--fsck-obj-ok
 
 cat >tag.sig <<EOF
 object $head
@@ -200,7 +279,8 @@
 EOF
 
 check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
-	'^fatal: object.*tagged as.*tree.*but is.*commit'
+	'^fatal: object.*tagged as.*tree.*but is.*commit' \
+	--fsck-obj-ok
 
 ############################################################
 #  9.5. verify object (hash/type) check -- replacement
@@ -229,7 +309,8 @@
 EOF
 
 check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
-	'^fatal: object.*tagged as.*tree.*but is.*blob'
+	'^fatal: object.*tagged as.*tree.*but is.*blob' \
+	--fsck-obj-ok
 
 ############################################################
 # 10. verify tag-name check
@@ -243,7 +324,9 @@
 EOF
 
 check_verify_failure 'verify tag-name check' \
-	'^error:.* badTagName:' '--no-strict'
+	'^error:.* badTagName:' \
+	--no-strict \
+	--fsck-obj-ok
 
 ############################################################
 # 11. tagger line label check #1
@@ -257,7 +340,9 @@
 EOF
 
 check_verify_failure '"tagger" line label check #1' \
-	'^error:.* missingTaggerEntry:' '--no-strict'
+	'^error:.* missingTaggerEntry:' \
+	--no-strict \
+	--fsck-obj-ok
 
 ############################################################
 # 12. tagger line label check #2
@@ -272,7 +357,9 @@
 EOF
 
 check_verify_failure '"tagger" line label check #2' \
-	'^error:.* missingTaggerEntry:' '--no-strict'
+	'^error:.* missingTaggerEntry:' \
+	--no-strict \
+	--fsck-obj-ok
 
 ############################################################
 # 13. allow missing tag author name like fsck
@@ -301,7 +388,9 @@
 EOF
 
 check_verify_failure 'disallow malformed tagger' \
-	'^error:.* badEmail:' '--no-strict'
+	'^error:.* badEmail:' \
+	--no-strict \
+	--fsck-obj-ok
 
 ############################################################
 # 15. allow empty tag email
@@ -425,7 +514,9 @@
 EOF
 
 check_verify_failure 'detect invalid header entry' \
-	'^error:.* extraHeaderEntry:' '--no-strict'
+	'^error:.* extraHeaderEntry:' \
+	--no-strict \
+	--fsck-obj-ok
 
 test_expect_success 'invalid header entry config & fsck' '
 	test_must_fail git mktag <tag.sig &&
diff --git a/t/t3920-crlf-messages.sh b/t/t3920-crlf-messages.sh
index 70ddce3..a8ad546 100755
--- a/t/t3920-crlf-messages.sh
+++ b/t/t3920-crlf-messages.sh
@@ -64,7 +64,7 @@
 	while test -n "${atoms}"
 	do
 		set ${atoms} && atom=$1 && shift && atoms="$*" &&
-		set ${files} &&	file=$1 && shift && files="$*" &&
+		set ${files} && file=$1 && shift && files="$*" &&
 		test_expect_success "${command}: --format='%${atom}' works with messages using CRLF" "
 			rm -f expect &&
 			for ref in ${LIB_CRLF_BRANCHES}
diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
index 7fadc98..28683d0 100755
--- a/t/t4013-diff-various.sh
+++ b/t/t4013-diff-various.sh
@@ -65,7 +65,7 @@
 	export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
 
 	git checkout master &&
-	git pull -s ours . side &&
+	git pull -s ours --no-rebase . side &&
 
 	GIT_AUTHOR_DATE="2006-06-26 00:05:00 +0000" &&
 	GIT_COMMITTER_DATE="2006-06-26 00:05:00 +0000" &&
@@ -455,8 +455,8 @@
 diff-tree -R --stat --compact-summary initial mode
 EOF
 
-test_expect_success 'log -m matches log -m -p' '
-	git log -m -p master >result &&
+test_expect_success 'log -m matches pure log' '
+	git log master >result &&
 	process_diffs result >expected &&
 	git log -m >result &&
 	process_diffs result >actual &&
diff --git a/t/t4018/java-class-member-function b/t/t4018/java-class-member-function
index 298bc7a..3b95f68 100644
--- a/t/t4018/java-class-member-function
+++ b/t/t4018/java-class-member-function
@@ -3,6 +3,10 @@
 	int special;
 	public static void main(String RIGHT[])
 	{
+		someMethodCall();
+		someOtherMethod("17")
+			.doThat();
+		// Whatever
 		System.out.print("ChangeMe");
 	}
 }
diff --git a/t/t4018/java-enum-constant b/t/t4018/java-enum-constant
new file mode 100644
index 0000000..a1931c8
--- /dev/null
+++ b/t/t4018/java-enum-constant
@@ -0,0 +1,6 @@
+private enum RIGHT {
+    ONE,
+    TWO,
+    THREE,
+    ChangeMe
+}
diff --git a/t/t4018/java-method-return-generic-bounded b/t/t4018/java-method-return-generic-bounded
new file mode 100644
index 0000000..66dd78c
--- /dev/null
+++ b/t/t4018/java-method-return-generic-bounded
@@ -0,0 +1,9 @@
+class MyExample {
+    public <T extends Bar & Foo<T>, R> Map<T, R[]> foo(String[] RIGHT) {
+        someMethodCall();
+        someOtherMethod()
+            .doThat();
+        // Whatever...
+        return (List<T>) Arrays.asList("ChangeMe");
+    }
+}
diff --git a/t/t4018/java-method-return-generic-wildcard b/t/t4018/java-method-return-generic-wildcard
new file mode 100644
index 0000000..96e9e5f
--- /dev/null
+++ b/t/t4018/java-method-return-generic-wildcard
@@ -0,0 +1,9 @@
+class MyExample {
+    public List<? extends Comparable> foo(String[] RIGHT) {
+        someMethodCall();
+        someOtherMethod()
+            .doThat();
+        // Whatever...
+        return Arrays.asList("ChangeMe");
+    }
+}
diff --git a/t/t4018/java-nested-field b/t/t4018/java-nested-field
new file mode 100644
index 0000000..d92d3ec
--- /dev/null
+++ b/t/t4018/java-nested-field
@@ -0,0 +1,6 @@
+class MyExample {
+    private static class RIGHT {
+        // change an inner class field
+        String inner = "ChangeMe";
+    }
+}
diff --git a/t/t4018/php-enum b/t/t4018/php-enum
new file mode 100644
index 0000000..91a69c1
--- /dev/null
+++ b/t/t4018/php-enum
@@ -0,0 +1,4 @@
+enum RIGHT: string
+{
+    case Foo = 'ChangeMe';
+}
diff --git a/t/t4045-diff-relative.sh b/t/t4045-diff-relative.sh
index 61ba5f7..fab351b 100755
--- a/t/t4045-diff-relative.sh
+++ b/t/t4045-diff-relative.sh
@@ -162,4 +162,57 @@
 check_diff_relative_option . file2 false --no-relative --relative=subdir
 check_diff_relative_option . file2 true --no-relative --relative=subdir
 
+test_expect_success 'setup diff --relative unmerged' '
+	test_commit zero file0 &&
+	test_commit base subdir/file0 &&
+	git switch -c br1 &&
+	test_commit one file0 &&
+	test_commit sub1 subdir/file0 &&
+	git switch -c br2 base &&
+	test_commit two file0 &&
+	git switch -c br3 &&
+	test_commit sub3 subdir/file0
+'
+
+test_expect_success 'diff --relative without change in subdir' '
+	git switch br2 &&
+	test_when_finished "git merge --abort" &&
+	test_must_fail git merge one &&
+	git -C subdir diff --relative >out &&
+	test_must_be_empty out &&
+	git -C subdir diff --relative --name-only >out &&
+	test_must_be_empty out
+'
+
+test_expect_success 'diff --relative --name-only with change in subdir' '
+	git switch br3 &&
+	test_when_finished "git merge --abort" &&
+	test_must_fail git merge sub1 &&
+	test_write_lines file0 file0 >expected &&
+	git -C subdir diff --relative --name-only >out &&
+	test_cmp expected out
+'
+
+test_expect_failure 'diff --relative with change in subdir' '
+	git switch br3 &&
+	br1_blob=$(git rev-parse --short --verify br1:subdir/file0) &&
+	br3_blob=$(git rev-parse --short --verify br3:subdir/file0) &&
+	test_when_finished "git merge --abort" &&
+	test_must_fail git merge br1 &&
+	cat >expected <<-EOF &&
+	diff --cc file0
+	index $br3_blob,$br1_blob..0000000
+	--- a/file0
+	+++ b/file0
+	@@@ -1,1 -1,1 +1,5 @@@
+	++<<<<<<< HEAD
+	 +sub3
+	++=======
+	+ sub1
+	++>>>>>>> br1
+	EOF
+	git -C subdir diff --relative >out &&
+	test_cmp expected out
+'
+
 test_done
diff --git a/t/t4103-apply-binary.sh b/t/t4103-apply-binary.sh
index fad6d3f..d370ecf 100755
--- a/t/t4103-apply-binary.sh
+++ b/t/t4103-apply-binary.sh
@@ -158,4 +158,27 @@
 	test -z "$(git diff --name-status binary -- file3)"
 '
 
+test_expect_success 'reject truncated binary diff' '
+	do_reset &&
+
+	# this length is calculated to get us very close to
+	# the 8192-byte strbuf we will use to read in the patch.
+	test-tool genrandom foo 6205 >file1 &&
+	git diff --binary >patch &&
+
+	# truncate the patch at the second "literal" line,
+	# but exclude the trailing newline. We must use perl
+	# for this, since tools like "sed" cannot reliably
+	# produce output without the trailing newline.
+	perl -pe "
+		if (/^literal/ && \$count++ >= 1) {
+			chomp;
+			print;
+			exit 0;
+		}
+	" <patch >patch.trunc &&
+
+	do_reset &&
+	test_must_fail git apply patch.trunc
+'
 test_done
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 350cfa3..9dfead9 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -1834,14 +1834,24 @@
 	test_must_fail git log --graph --no-walk
 '
 
-test_expect_success 'log diagnoses bogus HEAD' '
+test_expect_success 'log on empty repo fails' '
 	git init empty &&
+	test_when_finished "rm -rf empty" &&
 	test_must_fail git -C empty log 2>stderr &&
-	test_i18ngrep does.not.have.any.commits stderr &&
+	test_i18ngrep does.not.have.any.commits stderr
+'
+
+test_expect_success REFFILES 'log diagnoses bogus HEAD hash' '
+	git init empty &&
+	test_when_finished "rm -rf empty" &&
 	echo 1234abcd >empty/.git/refs/heads/main &&
 	test_must_fail git -C empty log 2>stderr &&
-	test_i18ngrep broken stderr &&
-	echo "ref: refs/heads/invalid.lock" >empty/.git/HEAD &&
+	test_i18ngrep broken stderr
+'
+
+test_expect_success 'log diagnoses bogus HEAD symref' '
+	git init empty &&
+	git --git-dir empty/.git symbolic-ref HEAD refs/heads/invalid.lock &&
 	test_must_fail git -C empty log 2>stderr &&
 	test_i18ngrep broken stderr &&
 	test_must_fail git -C empty log --default totally-bogus 2>stderr &&
@@ -1905,6 +1915,20 @@
 	test_must_fail git log --exclude-promisor-objects source-a
 '
 
+test_expect_success 'log --decorate includes all levels of tag annotated tags' '
+	git checkout -b branch &&
+	git commit --allow-empty -m "new commit" &&
+	git tag lightweight HEAD &&
+	git tag -m annotated annotated HEAD &&
+	git tag -m double-0 double-0 HEAD &&
+	git tag -m double-1 double-1 double-0 &&
+	cat >expect <<-\EOF &&
+	HEAD -> branch, tag: lightweight, tag: double-1, tag: double-0, tag: annotated
+	EOF
+	git log -1 --format="%D" >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'log --end-of-options' '
        git update-ref refs/heads/--source HEAD &&
        git log --end-of-options --source >actual &&
diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh
index d8e7374..0b2d21e 100755
--- a/t/t4203-mailmap.sh
+++ b/t/t4203-mailmap.sh
@@ -959,7 +959,7 @@
 	test_when_finished "rm .mailmap" &&
 	ln -s map .mailmap &&
 	git log -1 --format=%aE >actual &&
-	echo "orig@example.com" >expect&&
+	echo "orig@example.com" >expect &&
 	test_cmp expect actual
 '
 
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
index 8272d94..5865daa 100755
--- a/t/t4205-log-pretty-formats.sh
+++ b/t/t4205-log-pretty-formats.sh
@@ -988,7 +988,7 @@
 
 test_expect_success '%(describe:match=...) vs git describe --match ...' '
 	test_when_finished "git tag -d tag-match" &&
-	git tag -a -m tagged tag-match&&
+	git tag -a -m tagged tag-match &&
 	git describe --match "*-match" >expect &&
 	git log -1 --format="%(describe:match=*-match)" >actual &&
 	test_cmp expect actual
diff --git a/t/t4209-log-pickaxe.sh b/t/t4209-log-pickaxe.sh
index 5d06f5f..75795d0 100755
--- a/t/t4209-log-pickaxe.sh
+++ b/t/t4209-log-pickaxe.sh
@@ -55,6 +55,43 @@
 	git rev-parse --verify HEAD >expect_second
 '
 
+test_expect_success 'usage' '
+	test_expect_code 129 git log -S 2>err &&
+	test_i18ngrep "switch.*requires a value" err &&
+
+	test_expect_code 129 git log -G 2>err &&
+	test_i18ngrep "switch.*requires a value" err &&
+
+	test_expect_code 128 git log -Gregex -Sstring 2>err &&
+	grep "mutually exclusive" err &&
+
+	test_expect_code 128 git log -Gregex --find-object=HEAD 2>err &&
+	grep "mutually exclusive" err &&
+
+	test_expect_code 128 git log -Sstring --find-object=HEAD 2>err &&
+	grep "mutually exclusive" err &&
+
+	test_expect_code 128 git log --pickaxe-all --find-object=HEAD 2>err &&
+	grep "mutually exclusive" err
+'
+
+test_expect_success 'usage: --pickaxe-regex' '
+	test_expect_code 128 git log -Gregex --pickaxe-regex 2>err &&
+	grep "mutually exclusive" err
+'
+
+test_expect_success 'usage: --no-pickaxe-regex' '
+	cat >expect <<-\EOF &&
+	fatal: unrecognized argument: --no-pickaxe-regex
+	EOF
+
+	test_expect_code 128 git log -Sstring --no-pickaxe-regex 2>actual &&
+	test_cmp expect actual &&
+
+	test_expect_code 128 git log -Gstring --no-pickaxe-regex 2>err &&
+	test_cmp expect actual
+'
+
 test_log	expect_initial	--grep initial
 test_log	expect_nomatch	--grep InItial
 test_log_icase	expect_initial	--grep InItial
@@ -106,38 +143,83 @@
 	rm .gitattributes
 '
 
+test_expect_success 'setup log -[GS] plain & regex' '
+	test_create_repo GS-plain &&
+	test_commit -C GS-plain --append A data.txt "a" &&
+	test_commit -C GS-plain --append B data.txt "a a" &&
+	test_commit -C GS-plain --append C data.txt "b" &&
+	test_commit -C GS-plain --append D data.txt "[b]" &&
+	test_commit -C GS-plain E data.txt "" &&
+
+	# We also include E, the deletion commit
+	git -C GS-plain log --grep="[ABE]" >A-to-B-then-E-log &&
+	git -C GS-plain log --grep="[CDE]" >C-to-D-then-E-log &&
+	git -C GS-plain log --grep="[DE]" >D-then-E-log &&
+	git -C GS-plain log >full-log
+'
+
+test_expect_success 'log -G trims diff new/old [-+]' '
+	git -C GS-plain log -G"[+-]a" >log &&
+	test_must_be_empty log &&
+	git -C GS-plain log -G"^a" >log &&
+	test_cmp log A-to-B-then-E-log
+'
+
+test_expect_success 'log -S<pat> is not a regex, but -S<pat> --pickaxe-regex is' '
+	git -C GS-plain log -S"a" >log &&
+	test_cmp log A-to-B-then-E-log &&
+
+	git -C GS-plain log -S"[a]" >log &&
+	test_must_be_empty log &&
+
+	git -C GS-plain log -S"[a]" --pickaxe-regex >log &&
+	test_cmp log A-to-B-then-E-log &&
+
+	git -C GS-plain log -S"[b]" >log &&
+	test_cmp log D-then-E-log &&
+
+	git -C GS-plain log -S"[b]" --pickaxe-regex >log &&
+	test_cmp log C-to-D-then-E-log
+'
+
 test_expect_success 'setup log -[GS] binary & --text' '
-	git checkout --orphan GS-binary-and-text &&
-	git read-tree --empty &&
-	printf "a\na\0a\n" >data.bin &&
-	git add data.bin &&
-	git commit -m "create binary file" data.bin &&
-	printf "a\na\0a\n" >>data.bin &&
-	git commit -m "modify binary file" data.bin &&
-	git rm data.bin &&
-	git commit -m "delete binary file" data.bin &&
-	git log >full-log
+	test_create_repo GS-bin-txt &&
+	test_commit -C GS-bin-txt --printf A data.bin "a\na\0a\n" &&
+	test_commit -C GS-bin-txt --append --printf B data.bin "a\na\0a\n" &&
+	test_commit -C GS-bin-txt C data.bin "" &&
+	git -C GS-bin-txt log >full-log
 '
 
 test_expect_success 'log -G ignores binary files' '
-	git log -Ga >log &&
+	git -C GS-bin-txt log -Ga >log &&
 	test_must_be_empty log
 '
 
 test_expect_success 'log -G looks into binary files with -a' '
-	git log -a -Ga >log &&
+	git -C GS-bin-txt log -a -Ga >log &&
 	test_cmp log full-log
 '
 
 test_expect_success 'log -G looks into binary files with textconv filter' '
-	test_when_finished "rm .gitattributes" &&
-	echo "* diff=bin" >.gitattributes &&
-	git -c diff.bin.textconv=cat log -Ga >log &&
+	test_when_finished "rm GS-bin-txt/.gitattributes" &&
+	(
+		cd GS-bin-txt &&
+		echo "* diff=bin" >.gitattributes &&
+		git -c diff.bin.textconv=cat log -Ga >../log
+	) &&
 	test_cmp log full-log
 '
 
 test_expect_success 'log -S looks into binary files' '
-	git log -Sa >log &&
+	git -C GS-bin-txt log -Sa >log &&
+	test_cmp log full-log
+'
+
+test_expect_success 'log -S --pickaxe-regex looks into binary files' '
+	git -C GS-bin-txt log --pickaxe-regex -Sa >log &&
+	test_cmp log full-log &&
+
+	git -C GS-bin-txt log --pickaxe-regex -S"[a]" >log &&
 	test_cmp log full-log
 '
 
diff --git a/t/t4210-log-i18n.sh b/t/t4210-log-i18n.sh
index d2dfcf1..0141f36 100755
--- a/t/t4210-log-i18n.sh
+++ b/t/t4210-log-i18n.sh
@@ -131,4 +131,11 @@
 	fi
 done
 
+test_expect_success 'log shows warning when conversion fails' '
+	enc=this-encoding-does-not-exist &&
+	git log -1 --encoding=$enc 2>err &&
+	echo "warning: unable to reencode commit to ${SQ}${enc}${SQ}" >expect &&
+	test_cmp expect err
+'
+
 test_done
diff --git a/t/t4258-am-quoted-cr.sh b/t/t4258-am-quoted-cr.sh
index fb5071f..201915b 100755
--- a/t/t4258-am-quoted-cr.sh
+++ b/t/t4258-am-quoted-cr.sh
@@ -26,7 +26,7 @@
 	git diff --exit-code HEAD two
 '
 
-test_expect_success 'am with config mailinfo.quotecr=strip' '
+test_expect_success 'am with config mailinfo.quotedCr=strip' '
 	test_might_fail git am --abort &&
 	git reset --hard one &&
 	test_config mailinfo.quotedCr strip &&
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index 7204799..2c88d1c 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -111,25 +111,34 @@
 	EOF
 '
 
-test_expect_success \
-    'populate workdir' \
-    'mkdir a &&
-     echo simple textfile >a/a &&
-     ten=0123456789 && hundred=$ten$ten$ten$ten$ten$ten$ten$ten$ten$ten &&
-     echo long filename >a/four$hundred &&
-     mkdir a/bin &&
-     test-tool genrandom "frotz" 500000 >a/bin/sh &&
-     printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
-     printf "A not substituted O" >a/substfile2 &&
-     if test_have_prereq SYMLINKS; then
-	ln -s a a/l1
-     else
-	printf %s a > a/l1
-     fi &&
-     (p=long_path_to_a_file && cd a &&
-      for depth in 1 2 3 4 5; do mkdir $p && cd $p; done &&
-      echo text >file_with_long_path) &&
-     (cd a && find .) | sort >a.lst'
+test_expect_success 'populate workdir' '
+	mkdir a &&
+	echo simple textfile >a/a &&
+	ten=0123456789 &&
+	hundred="$ten$ten$ten$ten$ten$ten$ten$ten$ten$ten" &&
+	echo long filename >"a/four$hundred" &&
+	mkdir a/bin &&
+	test-tool genrandom "frotz" 500000 >a/bin/sh &&
+	printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
+	printf "A not substituted O" >a/substfile2 &&
+	if test_have_prereq SYMLINKS
+	then
+		ln -s a a/l1
+	else
+		printf %s a >a/l1
+	fi &&
+	(
+		p=long_path_to_a_file &&
+		cd a &&
+		for depth in 1 2 3 4 5
+		do
+			mkdir $p &&
+			cd $p
+		done &&
+		echo text >file_with_long_path
+	) &&
+	(cd a && find .) | sort >a.lst
+'
 
 test_expect_success \
     'add ignored file' \
@@ -147,18 +156,18 @@
 		>a/substfile1
 '
 
-test_expect_success \
-    'create bare clone' \
-    'git clone --bare . bare.git &&
-     cp .git/info/attributes bare.git/info/attributes'
+test_expect_success 'create bare clone' '
+	git clone --bare . bare.git &&
+	cp .git/info/attributes bare.git/info/attributes
+'
 
-test_expect_success \
-    'remove ignored file' \
-    'rm a/ignored'
+test_expect_success 'remove ignored file' '
+	rm a/ignored
+'
 
-test_expect_success \
-    'git archive' \
-    'git archive HEAD >b.tar'
+test_expect_success 'git archive' '
+	git archive HEAD >b.tar
+'
 
 check_tar b
 
@@ -194,26 +203,28 @@
 check_added with_untracked2 untracked two/untracked
 
 test_expect_success 'git archive on large files' '
-    test_config core.bigfilethreshold 1 &&
-    git archive HEAD >b3.tar &&
-    test_cmp_bin b.tar b3.tar
+	test_config core.bigfilethreshold 1 &&
+	git archive HEAD >b3.tar &&
+	test_cmp_bin b.tar b3.tar
 '
 
-test_expect_success \
-    'git archive in a bare repo' \
-    '(cd bare.git && git archive HEAD) >b3.tar'
+test_expect_success 'git archive in a bare repo' '
+	git --git-dir bare.git archive HEAD >b3.tar
+'
 
-test_expect_success \
-    'git archive vs. the same in a bare repo' \
-    'test_cmp_bin b.tar b3.tar'
+test_expect_success 'git archive vs. the same in a bare repo' '
+	test_cmp_bin b.tar b3.tar
+'
 
-test_expect_success 'git archive with --output' \
-    'git archive --output=b4.tar HEAD &&
-    test_cmp_bin b.tar b4.tar'
+test_expect_success 'git archive with --output' '
+	git archive --output=b4.tar HEAD &&
+	test_cmp_bin b.tar b4.tar
+'
 
-test_expect_success 'git archive --remote' \
-    'git archive --remote=. HEAD >b5.tar &&
-    test_cmp_bin b.tar b5.tar'
+test_expect_success 'git archive --remote' '
+	git archive --remote=. HEAD >b5.tar &&
+	test_cmp_bin b.tar b5.tar
+'
 
 test_expect_success 'git archive --remote with configured remote' '
 	git config remote.foo.url . &&
@@ -224,18 +235,19 @@
 	test_cmp_bin b.tar b5-nick.tar
 '
 
-test_expect_success \
-    'validate file modification time' \
-    'mkdir extract &&
-     "$TAR" xf b.tar -C extract a/a &&
-     test-tool chmtime --get extract/a/a >b.mtime &&
-     echo "1117231200" >expected.mtime &&
-     test_cmp expected.mtime b.mtime'
+test_expect_success 'validate file modification time' '
+	mkdir extract &&
+	"$TAR" xf b.tar -C extract a/a &&
+	test-tool chmtime --get extract/a/a >b.mtime &&
+	echo "1117231200" >expected.mtime &&
+	test_cmp expected.mtime b.mtime
+'
 
-test_expect_success \
-    'git get-tar-commit-id' \
-    'git get-tar-commit-id <b.tar >b.commitid &&
-     test_cmp .git/$(git symbolic-ref HEAD) b.commitid'
+test_expect_success 'git get-tar-commit-id' '
+	git get-tar-commit-id <b.tar >actual &&
+	git rev-parse HEAD >expect &&
+	test_cmp expect actual
+'
 
 test_expect_success 'git archive with --output, override inferred format' '
 	git archive --format=tar --output=d4.zip HEAD &&
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index 5c5e53f..e13a884 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -34,6 +34,110 @@
 	} >expect
 '
 
+test_expect_success 'setup pack-object <stdin' '
+	git init pack-object-stdin &&
+	test_commit -C pack-object-stdin one &&
+	test_commit -C pack-object-stdin two
+
+'
+
+test_expect_success 'pack-object <stdin parsing: basic [|--revs]' '
+	cat >in <<-EOF &&
+	$(git -C pack-object-stdin rev-parse one)
+	EOF
+
+	git -C pack-object-stdin pack-objects basic-stdin <in &&
+	idx=$(echo pack-object-stdin/basic-stdin-*.idx) &&
+	git show-index <"$idx" >actual &&
+	test_line_count = 1 actual &&
+
+	git -C pack-object-stdin pack-objects --revs basic-stdin-revs <in &&
+	idx=$(echo pack-object-stdin/basic-stdin-revs-*.idx) &&
+	git show-index <"$idx" >actual &&
+	test_line_count = 3 actual
+'
+
+test_expect_success 'pack-object <stdin parsing: [|--revs] bad line' '
+	cat >in <<-EOF &&
+	$(git -C pack-object-stdin rev-parse one)
+	garbage
+	$(git -C pack-object-stdin rev-parse two)
+	EOF
+
+	sed "s/^> //g" >err.expect <<-EOF &&
+	fatal: expected object ID, got garbage:
+	>  garbage
+
+	EOF
+	test_must_fail git -C pack-object-stdin pack-objects bad-line-stdin <in 2>err.actual &&
+	test_cmp err.expect err.actual &&
+
+	cat >err.expect <<-EOF &&
+	fatal: bad revision '"'"'garbage'"'"'
+	EOF
+	test_must_fail git -C pack-object-stdin pack-objects --revs bad-line-stdin-revs <in 2>err.actual &&
+	test_cmp err.expect err.actual
+'
+
+test_expect_success 'pack-object <stdin parsing: [|--revs] empty line' '
+	cat >in <<-EOF &&
+	$(git -C pack-object-stdin rev-parse one)
+
+	$(git -C pack-object-stdin rev-parse two)
+	EOF
+
+	sed -e "s/^> //g" -e "s/Z$//g" >err.expect <<-EOF &&
+	fatal: expected object ID, got garbage:
+	>  Z
+
+	EOF
+	test_must_fail git -C pack-object-stdin pack-objects empty-line-stdin <in 2>err.actual &&
+	test_cmp err.expect err.actual &&
+
+	git -C pack-object-stdin pack-objects --revs empty-line-stdin-revs <in &&
+	idx=$(echo pack-object-stdin/empty-line-stdin-revs-*.idx) &&
+	git show-index <"$idx" >actual &&
+	test_line_count = 3 actual
+'
+
+test_expect_success 'pack-object <stdin parsing: [|--revs] with --stdin' '
+	cat >in <<-EOF &&
+	$(git -C pack-object-stdin rev-parse one)
+	$(git -C pack-object-stdin rev-parse two)
+	EOF
+
+	# There is the "--stdin-packs is incompatible with --revs"
+	# test below, but we should make sure that the revision.c
+	# --stdin is not picked up
+	cat >err.expect <<-EOF &&
+	fatal: disallowed abbreviated or ambiguous option '"'"'stdin'"'"'
+	EOF
+	test_must_fail git -C pack-object-stdin pack-objects stdin-with-stdin-option --stdin <in 2>err.actual &&
+	test_cmp err.expect err.actual &&
+
+	test_must_fail git -C pack-object-stdin pack-objects --stdin --revs stdin-with-stdin-option-revs 2>err.actual <in &&
+	test_cmp err.expect err.actual
+'
+
+test_expect_success 'pack-object <stdin parsing: --stdin-packs handles garbage' '
+	cat >in <<-EOF &&
+	$(git -C pack-object-stdin rev-parse one)
+	$(git -C pack-object-stdin rev-parse two)
+	EOF
+
+	# That we get "two" and not "one" has to do with OID
+	# ordering. It happens to be the same here under SHA-1 and
+	# SHA-256. See commentary in pack-objects.c
+	cat >err.expect <<-EOF &&
+	fatal: could not find pack '"'"'$(git -C pack-object-stdin rev-parse two)'"'"'
+	EOF
+	test_must_fail git \
+		-C pack-object-stdin \
+		pack-objects stdin-with-stdin-option --stdin-packs \
+		<in 2>err.actual &&
+	test_cmp err.expect err.actual
+'
+
 # usage: check_deltas <stderr_from_pack_objects> <cmp_op> <nr_deltas>
 # e.g.: check_deltas stderr -gt 0
 check_deltas() {
diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh
index 3475b06..7cabb85 100755
--- a/t/t5304-prune.sh
+++ b/t/t5304-prune.sh
@@ -22,30 +22,25 @@
 }
 
 test_expect_success setup '
-
-	: > file &&
+	>file &&
 	git add file &&
 	test_tick &&
 	git commit -m initial &&
 	git gc
-
 '
 
 test_expect_success 'prune stale packs' '
-
 	orig_pack=$(echo .git/objects/pack/*.pack) &&
-	: > .git/objects/tmp_1.pack &&
-	: > .git/objects/tmp_2.pack &&
+	>.git/objects/tmp_1.pack &&
+	>.git/objects/tmp_2.pack &&
 	test-tool chmtime =-86501 .git/objects/tmp_1.pack &&
 	git prune --expire 1.day &&
 	test_path_is_file $orig_pack &&
 	test_path_is_file .git/objects/tmp_2.pack &&
 	test_path_is_missing .git/objects/tmp_1.pack
-
 '
 
 test_expect_success 'prune --expire' '
-
 	add_blob &&
 	git prune --expire=1.hour.ago &&
 	verbose test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
@@ -54,11 +49,9 @@
 	git prune --expire 1.day &&
 	verbose test $before = $(git count-objects | sed "s/ .*//") &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc: implicit prune --expire' '
-
 	add_blob &&
 	test-tool chmtime =-$((2*$week-30)) $BLOB_FILE &&
 	git gc &&
@@ -68,123 +61,98 @@
 	git gc &&
 	verbose test $before = $(git count-objects | sed "s/ .*//") &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc: refuse to start with invalid gc.pruneExpire' '
-
 	git config gc.pruneExpire invalid &&
 	test_must_fail git gc
-
 '
 
 test_expect_success 'gc: start with ok gc.pruneExpire' '
-
 	git config gc.pruneExpire 2.days.ago &&
 	git gc
-
 '
 
 test_expect_success 'prune: prune nonsense parameters' '
-
 	test_must_fail git prune garbage &&
 	test_must_fail git prune --- &&
 	test_must_fail git prune --no-such-option
-
 '
 
 test_expect_success 'prune: prune unreachable heads' '
-
 	git config core.logAllRefUpdates false &&
-	mv .git/logs .git/logs.old &&
-	: > file2 &&
+	>file2 &&
 	git add file2 &&
 	git commit -m temporary &&
 	tmp_head=$(git rev-list -1 HEAD) &&
 	git reset HEAD^ &&
+	git reflog expire --all &&
 	git prune &&
 	test_must_fail git reset $tmp_head --
-
 '
 
 test_expect_success 'prune: do not prune detached HEAD with no reflog' '
-
 	git checkout --detach --quiet &&
 	git commit --allow-empty -m "detached commit" &&
-	# verify that there is no reflogs
-	# (should be removed and disabled by previous test)
-	test_path_is_missing .git/logs &&
+	git reflog expire --all &&
 	git prune -n >prune_actual &&
 	test_must_be_empty prune_actual
-
 '
 
 test_expect_success 'prune: prune former HEAD after checking out branch' '
-
 	head_oid=$(git rev-parse HEAD) &&
 	git checkout --quiet main &&
+	git reflog expire --all &&
 	git prune -v >prune_actual &&
 	grep "$head_oid" prune_actual
-
 '
 
 test_expect_success 'prune: do not prune heads listed as an argument' '
-
-	: > file2 &&
+	>file2 &&
 	git add file2 &&
 	git commit -m temporary &&
 	tmp_head=$(git rev-list -1 HEAD) &&
 	git reset HEAD^ &&
 	git prune -- $tmp_head &&
 	git reset $tmp_head --
-
 '
 
 test_expect_success 'gc --no-prune' '
-
 	add_blob &&
 	test-tool chmtime =-$((5001*$day)) $BLOB_FILE &&
 	git config gc.pruneExpire 2.days.ago &&
 	git gc --no-prune &&
 	verbose test 1 = $(git count-objects | sed "s/ .*//") &&
 	test_path_is_file $BLOB_FILE
-
 '
 
 test_expect_success 'gc respects gc.pruneExpire' '
-
 	git config gc.pruneExpire 5002.days.ago &&
 	git gc &&
 	test_path_is_file $BLOB_FILE &&
 	git config gc.pruneExpire 5000.days.ago &&
 	git gc &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc --prune=<date>' '
-
 	add_blob &&
 	test-tool chmtime =-$((5001*$day)) $BLOB_FILE &&
 	git gc --prune=5002.days.ago &&
 	test_path_is_file $BLOB_FILE &&
 	git gc --prune=5000.days.ago &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc --prune=never' '
-
 	add_blob &&
 	git gc --prune=never &&
 	test_path_is_file $BLOB_FILE &&
 	git gc --prune=now &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc respects gc.pruneExpire=never' '
-
 	git config gc.pruneExpire never &&
 	add_blob &&
 	git gc &&
@@ -192,17 +160,14 @@
 	git config gc.pruneExpire now &&
 	git gc &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'prune --expire=never' '
-
 	add_blob &&
 	git prune --expire=never &&
 	test_path_is_file $BLOB_FILE &&
 	git prune &&
 	test_path_is_missing $BLOB_FILE
-
 '
 
 test_expect_success 'gc: prune old objects after local clone' '
@@ -222,16 +187,16 @@
 test_expect_success 'garbage report in count-objects -v' '
 	test_when_finished "rm -f .git/objects/pack/fake*" &&
 	test_when_finished "rm -f .git/objects/pack/foo*" &&
-	: >.git/objects/pack/foo &&
-	: >.git/objects/pack/foo.bar &&
-	: >.git/objects/pack/foo.keep &&
-	: >.git/objects/pack/foo.pack &&
-	: >.git/objects/pack/fake.bar &&
-	: >.git/objects/pack/fake.keep &&
-	: >.git/objects/pack/fake.pack &&
-	: >.git/objects/pack/fake.idx &&
-	: >.git/objects/pack/fake2.keep &&
-	: >.git/objects/pack/fake3.idx &&
+	>.git/objects/pack/foo &&
+	>.git/objects/pack/foo.bar &&
+	>.git/objects/pack/foo.keep &&
+	>.git/objects/pack/foo.pack &&
+	>.git/objects/pack/fake.bar &&
+	>.git/objects/pack/fake.keep &&
+	>.git/objects/pack/fake.pack &&
+	>.git/objects/pack/fake.idx &&
+	>.git/objects/pack/fake2.keep &&
+	>.git/objects/pack/fake3.idx &&
 	git count-objects -v 2>stderr &&
 	grep "index file .git/objects/pack/fake.idx is too small" stderr &&
 	grep "^warning:" stderr | sort >actual &&
@@ -250,12 +215,12 @@
 test_expect_success 'clean pack garbage with gc' '
 	test_when_finished "rm -f .git/objects/pack/fake*" &&
 	test_when_finished "rm -f .git/objects/pack/foo*" &&
-	: >.git/objects/pack/foo.keep &&
-	: >.git/objects/pack/foo.pack &&
-	: >.git/objects/pack/fake.idx &&
-	: >.git/objects/pack/fake2.keep &&
-	: >.git/objects/pack/fake2.idx &&
-	: >.git/objects/pack/fake3.keep &&
+	>.git/objects/pack/foo.keep &&
+	>.git/objects/pack/foo.pack &&
+	>.git/objects/pack/fake.idx &&
+	>.git/objects/pack/fake2.keep &&
+	>.git/objects/pack/fake2.idx &&
+	>.git/objects/pack/fake3.keep &&
 	git gc &&
 	git count-objects -v 2>stderr &&
 	grep "^warning:" stderr | sort >actual &&
diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
index af88f80..295c5bd 100755
--- a/t/t5318-commit-graph.sh
+++ b/t/t5318-commit-graph.sh
@@ -5,6 +5,25 @@
 
 GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=0
 
+test_expect_success 'usage' '
+	test_expect_code 129 git commit-graph write blah 2>err &&
+	test_expect_code 129 git commit-graph write verify
+'
+
+test_expect_success 'usage shown without sub-command' '
+	test_expect_code 129 git commit-graph 2>err &&
+	! grep error: err
+'
+
+test_expect_success 'usage shown with an error on unknown sub-command' '
+	cat >expect <<-\EOF &&
+	error: unrecognized subcommand: unknown
+	EOF
+	test_expect_code 129 git commit-graph unknown 2>stderr &&
+	grep error stderr >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'setup full repo' '
 	mkdir full &&
 	cd "$TRASH_DIRECTORY/full" &&
diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh
index 5641d15..3d4d9f1 100755
--- a/t/t5319-multi-pack-index.sh
+++ b/t/t5319-multi-pack-index.sh
@@ -410,6 +410,19 @@
 		"git -c core.multipackindex=true fsck"
 '
 
+test_expect_success 'corrupt MIDX is not reused' '
+	corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\377" $objdir \
+		"incorrect object offset" &&
+	git multi-pack-index write 2>err &&
+	test_i18ngrep checksum.mismatch err &&
+	git multi-pack-index verify
+'
+
+test_expect_success 'verify incorrect checksum' '
+	pos=$(($(wc -c <$objdir/pack/multi-pack-index) - 1)) &&
+	corrupt_midx_and_verify $pos "\377" $objdir "incorrect checksum"
+'
+
 test_expect_success 'repack progress off for redirected stderr' '
 	GIT_PROGRESS_DELAY=0 git multi-pack-index --object-dir=$objdir repack 2>err &&
 	test_line_count = 0 err
@@ -824,4 +837,9 @@
 	)
 '
 
+test_expect_success 'usage shown without sub-command' '
+	test_expect_code 129 git multi-pack-index 2>err &&
+	! test_i18ngrep "unrecognized subcommand" err
+'
+
 test_done
diff --git a/t/t5323-pack-redundant.sh b/t/t5323-pack-redundant.sh
index 8b01793..8dbbcc5 100755
--- a/t/t5323-pack-redundant.sh
+++ b/t/t5323-pack-redundant.sh
@@ -114,9 +114,9 @@
 	create_commits_in "$main_repo" A B C D E F G H I J K L M N O P Q R
 '
 
-test_expect_success 'master: pack-redundant works with no packfile' '
+test_expect_success 'main: pack-redundant works with no packfile' '
 	(
-		cd "$master_repo" &&
+		cd "$main_repo" &&
 		cat >expect <<-EOF &&
 			fatal: Zero packs found!
 			EOF
diff --git a/t/t5411/common-functions.sh b/t/t5411/common-functions.sh
index 6694858..3c74778 100644
--- a/t/t5411/common-functions.sh
+++ b/t/t5411/common-functions.sh
@@ -6,50 +6,44 @@
 # NOTE: Never calling this function from a subshell since variable
 # assignments will disappear when subshell exits.
 create_commits_in () {
-	repo="$1" &&
-	if ! parent=$(git -C "$repo" rev-parse HEAD^{} --)
-	then
-		parent=
-	fi &&
-	T=$(git -C "$repo" write-tree) &&
+	repo="$1" && test -d "$repo" ||
+	error "Repository $repo does not exist."
 	shift &&
 	while test $# -gt 0
 	do
 		name=$1 &&
-		test_tick &&
-		if test -z "$parent"
-		then
-			oid=$(echo $name | git -C "$repo" commit-tree $T)
-		else
-			oid=$(echo $name | git -C "$repo" commit-tree -p $parent $T)
-		fi &&
-		eval $name=$oid &&
-		parent=$oid &&
-		shift ||
-		return 1
-	done &&
-	git -C "$repo" update-ref refs/heads/main $oid
+		shift &&
+		test_commit -C "$repo" --no-tag "$name" &&
+		eval $name=$(git -C "$repo" rev-parse HEAD)
+	done
+}
+
+get_abbrev_oid () {
+	oid=$1 &&
+	suffix=${oid#???????} &&
+	oid=${oid%$suffix} &&
+	if test -n "$oid"
+	then
+		echo "$oid"
+	else
+		echo "undefined-oid"
+	fi
 }
 
 # Format the output of git-push, git-show-ref and other commands to make a
 # user-friendly and stable text.  We can easily prepare the expect text
-# without having to worry about future changes of the commit ID and spaces
+# without having to worry about changes of the commit ID (full or abbrev.)
 # of the output.  Single quotes are replaced with double quotes, because
 # it is boring to prepare unquoted single quotes in expect text.  We also
 # remove some locale error messages. The emitted human-readable errors are
 # redundant to the more machine-readable output the tests already assert.
 make_user_friendly_and_stable_output () {
 	sed \
-		-e "s/  *\$//" \
-		-e "s/  */ /g" \
 		-e "s/'/\"/g" \
-		-e "s/	/    /g" \
-		-e "s/$A/<COMMIT-A>/g" \
-		-e "s/$B/<COMMIT-B>/g" \
-		-e "s/$TAG/<TAG-v123>/g" \
+		-e "s/$(get_abbrev_oid $A)[0-9a-f]*/<COMMIT-A>/g" \
+		-e "s/$(get_abbrev_oid $B)[0-9a-f]*/<COMMIT-B>/g" \
+		-e "s/$(get_abbrev_oid $TAG)[0-9a-f]*/<TAG-v123>/g" \
 		-e "s/$ZERO_OID/<ZERO-OID>/g" \
-		-e "s/$(echo $A | cut -c1-7)[0-9a-f]*/<OID-A>/g" \
-		-e "s/$(echo $B | cut -c1-7)[0-9a-f]*/<OID-B>/g" \
 		-e "s#To $URL_PREFIX/upstream.git#To <URL/of/upstream.git>#" \
 		-e "/^error: / d"
 }
@@ -59,6 +53,10 @@
 		sed -n ${1+"$@"}
 }
 
+format_and_save_expect () {
+	sed -e 's/^> //' -e 's/Z$//' >expect
+}
+
 test_cmp_refs () {
 	indir=
 	if test "$1" = "-C"
diff --git a/t/t5411/once-0010-report-status-v1.sh b/t/t5411/once-0010-report-status-v1.sh
index 1233a46..297b109 100644
--- a/t/t5411/once-0010-report-status-v1.sh
+++ b/t/t5411/once-0010-report-status-v1.sh
@@ -28,10 +28,10 @@
 		if test -z "$GIT_DEFAULT_HASH" || test "$GIT_DEFAULT_HASH" = "sha1"
 		then
 			printf "%s %s refs/heads/main\0report-status\n" \
-				$A $B | packetize
+				$A $B | packetize_raw
 		else
 			printf "%s %s refs/heads/main\0report-status object-format=$GIT_DEFAULT_HASH\n" \
-				$A $B | packetize
+				$A $B | packetize_raw
 		fi &&
 		printf "%s %s refs/for/main/topic1\n" \
 			$ZERO_OID $A | packetize &&
diff --git a/t/t5411/test-0000-standard-git-push.sh b/t/t5411/test-0000-standard-git-push.sh
index e1e0175..ce64bb6 100644
--- a/t/t5411/test-0000-standard-git-push.sh
+++ b/t/t5411/test-0000-standard-git-push.sh
@@ -7,16 +7,16 @@
 		HEAD:refs/heads/next \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> main
-	 * [new branch] HEAD -> next
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> main
+	>  * [new branch]      HEAD -> next
 	EOF
 	test_cmp expect actual &&
 
@@ -38,10 +38,10 @@
 		-e "/^To / { p; }" \
 		-e "/^ ! / { p; }" \
 		<out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	To <URL/of/upstream.git>
-	 ! [rejected] main -> main (non-fast-forward)
-	 ! [rejected] <COMMIT-B> -> next (atomic push failed)
+	format_and_save_expect <<-EOF &&
+	> To <URL/of/upstream.git>
+	>  ! [rejected]        main -> main (non-fast-forward)
+	>  ! [rejected]        <COMMIT-B> -> next (atomic push failed)
 	EOF
 	test_cmp expect actual &&
 
@@ -63,14 +63,14 @@
 		$B:refs/heads/next \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> next
-	 ! [rejected] main -> main (non-fast-forward)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> next
+	>  ! [rejected]        main -> main (non-fast-forward)
 	EOF
 	test_cmp expect actual &&
 
@@ -92,25 +92,25 @@
 		HEAD:refs/heads/a/b/c \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: pre-receive< <COMMIT-B> <ZERO-OID> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: post-receive< <COMMIT-B> <ZERO-OID> refs/heads/next
-	remote: post-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c
-	To <URL/of/upstream.git>
-	 + <OID-B>...<OID-A> main -> main (forced update)
-	 - [deleted] next
-	 * [new tag] v123 -> v123
-	 * [new reference] main -> refs/review/main/topic
-	 * [new branch] HEAD -> a/b/c
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: pre-receive< <COMMIT-B> <ZERO-OID> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: post-receive< <COMMIT-B> <ZERO-OID> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c        Z
+	> To <URL/of/upstream.git>
+	>  + <COMMIT-B>...<COMMIT-A> main -> main (forced update)
+	>  - [deleted]         next
+	>  * [new tag]         v123 -> v123
+	>  * [new reference]   main -> refs/review/main/topic
+	>  * [new branch]      HEAD -> a/b/c
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0001-standard-git-push--porcelain.sh b/t/t5411/test-0001-standard-git-push--porcelain.sh
index bcbda72..373ec3d 100644
--- a/t/t5411/test-0001-standard-git-push--porcelain.sh
+++ b/t/t5411/test-0001-standard-git-push--porcelain.sh
@@ -7,17 +7,17 @@
 		HEAD:refs/heads/next \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	     <COMMIT-B>:refs/heads/main    <OID-A>..<OID-B>
-	*    HEAD:refs/heads/next    [new branch]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>  	<COMMIT-B>:refs/heads/main	<COMMIT-A>..<COMMIT-B>
+	> *	HEAD:refs/heads/next	[new branch]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -38,12 +38,12 @@
 	filter_out_user_friendly_and_stable_output \
 		-e "s/^# GETTEXT POISON #//" \
 		-e "/^To / { p; }" \
-		-e "/^! / { p; }" \
+		-e "/^!/ { p; }" \
 		<out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	To <URL/of/upstream.git>
-	!    refs/heads/main:refs/heads/main    [rejected] (non-fast-forward)
-	!    <COMMIT-B>:refs/heads/next    [rejected] (atomic push failed)
+	format_and_save_expect <<-EOF &&
+	> To <URL/of/upstream.git>
+	> !	refs/heads/main:refs/heads/main	[rejected] (non-fast-forward)
+	> !	<COMMIT-B>:refs/heads/next	[rejected] (atomic push failed)
 	EOF
 	test_cmp expect actual &&
 
@@ -65,15 +65,15 @@
 		$B:refs/heads/next \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
-	To <URL/of/upstream.git>
-	     <COMMIT-B>:refs/heads/next    <OID-A>..<OID-B>
-	!    refs/heads/main:refs/heads/main    [rejected] (non-fast-forward)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>  	<COMMIT-B>:refs/heads/next	<COMMIT-A>..<COMMIT-B>
+	> !	refs/heads/main:refs/heads/main	[rejected] (non-fast-forward)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -95,26 +95,26 @@
 		HEAD:refs/heads/a/b/c \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: pre-receive< <COMMIT-B> <ZERO-OID> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: post-receive< <COMMIT-B> <ZERO-OID> refs/heads/next
-	remote: post-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c
-	To <URL/of/upstream.git>
-	+    refs/heads/main:refs/heads/main    <OID-B>...<OID-A> (forced update)
-	-    :refs/heads/next    [deleted]
-	*    refs/tags/v123:refs/tags/v123    [new tag]
-	*    refs/heads/main:refs/review/main/topic    [new reference]
-	*    HEAD:refs/heads/a/b/c    [new branch]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: pre-receive< <COMMIT-B> <ZERO-OID> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: post-receive< <COMMIT-B> <ZERO-OID> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/review/main/topic        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/a/b/c        Z
+	> To <URL/of/upstream.git>
+	> +	refs/heads/main:refs/heads/main	<COMMIT-B>...<COMMIT-A> (forced update)
+	> -	:refs/heads/next	[deleted]
+	> *	refs/tags/v123:refs/tags/v123	[new tag]
+	> *	refs/heads/main:refs/review/main/topic	[new reference]
+	> *	HEAD:refs/heads/a/b/c	[new branch]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0003-pre-receive-declined--porcelain.sh b/t/t5411/test-0003-pre-receive-declined--porcelain.sh
index e9c9db5..2393b04 100644
--- a/t/t5411/test-0003-pre-receive-declined--porcelain.sh
+++ b/t/t5411/test-0003-pre-receive-declined--porcelain.sh
@@ -14,10 +14,10 @@
 		HEAD:refs/heads/next \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	To <URL/of/upstream.git>
-	!    <COMMIT-B>:refs/heads/main    [remote rejected] (pre-receive hook declined)
-	!    HEAD:refs/heads/next    [remote rejected] (pre-receive hook declined)
+	format_and_save_expect <<-EOF &&
+	> To <URL/of/upstream.git>
+	> !	<COMMIT-B>:refs/heads/main	[remote rejected] (pre-receive hook declined)
+	> !	HEAD:refs/heads/next	[remote rejected] (pre-receive hook declined)
 	Done
 	EOF
 	test_cmp expect actual &&
diff --git a/t/t5411/test-0011-no-hook-error.sh b/t/t5411/test-0011-no-hook-error.sh
index 3ef136e..d35002b 100644
--- a/t/t5411/test-0011-no-hook-error.sh
+++ b/t/t5411/test-0011-no-hook-error.sh
@@ -7,16 +7,16 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: error: cannot find hook "proc-receive"
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	 * [new branch] HEAD -> next
-	 ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: error: cannot find hook "proc-receive"        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>  * [new branch]      HEAD -> next
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
 	EOF
 	test_cmp expect actual &&
 
@@ -41,16 +41,16 @@
 		HEAD:next \
 		HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: error: cannot find hook "proc-receive"
-	To <URL/of/upstream.git>
-	 ! [remote rejected] <COMMIT-B> -> main (fail to run proc-receive hook)
-	 ! [remote rejected] HEAD -> next (fail to run proc-receive hook)
-	 ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: error: cannot find hook "proc-receive"        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] <COMMIT-B> -> main (fail to run proc-receive hook)
+	>  ! [remote rejected] HEAD -> next (fail to run proc-receive hook)
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0012-no-hook-error--porcelain.sh b/t/t5411/test-0012-no-hook-error--porcelain.sh
index 19f66fb..04468b5 100644
--- a/t/t5411/test-0012-no-hook-error--porcelain.sh
+++ b/t/t5411/test-0012-no-hook-error--porcelain.sh
@@ -7,16 +7,16 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: error: cannot find hook "proc-receive"
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	*    HEAD:refs/heads/next    [new branch]
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: error: cannot find hook "proc-receive"        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/heads/next	[new branch]
+	> !	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -42,17 +42,17 @@
 		HEAD:next \
 		HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: error: cannot find hook "proc-receive"
-	To <URL/of/upstream.git>
-	!    <COMMIT-B>:refs/heads/main    [remote rejected] (fail to run proc-receive hook)
-	!    HEAD:refs/heads/next    [remote rejected] (fail to run proc-receive hook)
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: error: cannot find hook "proc-receive"        Z
+	> To <URL/of/upstream.git>
+	> !	<COMMIT-B>:refs/heads/main	[remote rejected] (fail to run proc-receive hook)
+	> !	HEAD:refs/heads/next	[remote rejected] (fail to run proc-receive hook)
+	> !	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0013-bad-protocol.sh b/t/t5411/test-0013-bad-protocol.sh
index 095e613..c08a00d 100644
--- a/t/t5411/test-0013-bad-protocol.sh
+++ b/t/t5411/test-0013-bad-protocol.sh
@@ -29,8 +29,8 @@
 	# message ("remote: fatal: the remote end hung up unexpectedly") which
 	# is different from the remote HTTP server with different locale settings.
 	grep "^remote: error:" <actual >actual-error &&
-	cat >expect <<-EOF &&
-	remote: error: proc-receive version "2" is not supported
+	format_and_save_expect <<-EOF &&
+	> remote: error: proc-receive version "2" is not supported        Z
 	EOF
 	test_cmp expect actual-error &&
 
@@ -208,17 +208,17 @@
 		HEAD:refs/heads/next \
 		HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	 * [new branch] HEAD -> next
-	 ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	>  * [new branch]      HEAD -> next
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
@@ -251,15 +251,15 @@
 		HEAD:refs/for/main/topic\
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok
-	remote: error: proc-receive reported incomplete status line: "ok"
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok        Z
+	> remote: error: proc-receive reported incomplete status line: "ok"        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
@@ -284,15 +284,15 @@
 			HEAD:refs/for/main/topic \
 			>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> xx refs/for/main/topic
-	remote: error: proc-receive reported bad status "xx" on ref "refs/for/main/topic"
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> xx refs/for/main/topic        Z
+	> remote: error: proc-receive reported bad status "xx" on ref "refs/for/main/topic"        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0014-bad-protocol--porcelain.sh b/t/t5411/test-0014-bad-protocol--porcelain.sh
index a446497..3eaa597 100644
--- a/t/t5411/test-0014-bad-protocol--porcelain.sh
+++ b/t/t5411/test-0014-bad-protocol--porcelain.sh
@@ -20,7 +20,7 @@
 		<actual >actual-report &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual-report &&
@@ -29,8 +29,8 @@
 	# message ("remote: fatal: the remote end hung up unexpectedly") which
 	# is different from the remote HTTP server with different locale settings.
 	grep "^remote: error:" <actual >actual-error &&
-	cat >expect <<-EOF &&
-	remote: error: proc-receive version "2" is not supported
+	format_and_save_expect <<-EOF &&
+	> remote: error: proc-receive version "2" is not supported        Z
 	EOF
 	test_cmp expect actual-error &&
 
@@ -58,7 +58,7 @@
 		<out-$test_count >actual &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -89,7 +89,7 @@
 		<out-$test_count >actual &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -120,7 +120,7 @@
 		<out-$test_count >actual &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -152,7 +152,7 @@
 		<out-$test_count >actual &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -182,7 +182,7 @@
 		<out-$test_count >actual &&
 	cat >expect <<-EOF &&
 	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (fail to run proc-receive hook)
+	!	HEAD:refs/for/main/topic	[remote rejected] (fail to run proc-receive hook)
 	Done
 	EOF
 	test_cmp expect actual &&
@@ -208,18 +208,18 @@
 		HEAD:refs/heads/next \
 		HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	To <URL/of/upstream.git>
-	*    HEAD:refs/heads/next    [new branch]
-	!    HEAD:refs/for/main/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/heads/next	[new branch]
+	> !	HEAD:refs/for/main/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -251,16 +251,16 @@
 		HEAD:refs/for/main/topic\
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok
-	remote: error: proc-receive reported incomplete status line: "ok"
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok        Z
+	> remote: error: proc-receive reported incomplete status line: "ok"        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -285,16 +285,16 @@
 			HEAD:refs/for/main/topic \
 			>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> xx refs/for/main/topic
-	remote: error: proc-receive reported bad status "xx" on ref "refs/for/main/topic"
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> xx refs/for/main/topic        Z
+	> remote: error: proc-receive reported bad status "xx" on ref "refs/for/main/topic"        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0020-report-ng.sh b/t/t5411/test-0020-report-ng.sh
index ad2c8f6..e915dbc 100644
--- a/t/t5411/test-0020-report-ng.sh
+++ b/t/t5411/test-0020-report-ng.sh
@@ -14,14 +14,14 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ng refs/for/main/topic
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/main/topic (failed)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ng refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (failed)
 	EOF
 	test_cmp expect actual &&
 
@@ -46,14 +46,14 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ng refs/for/main/topic error msg
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/main/topic (error msg)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ng refs/for/main/topic error msg        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (error msg)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0021-report-ng--porcelain.sh b/t/t5411/test-0021-report-ng--porcelain.sh
index d8ae9d3..2a392e0 100644
--- a/t/t5411/test-0021-report-ng--porcelain.sh
+++ b/t/t5411/test-0021-report-ng--porcelain.sh
@@ -14,15 +14,15 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ng refs/for/main/topic
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (failed)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ng refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (failed)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -47,15 +47,15 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ng refs/for/main/topic error msg
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (error msg)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ng refs/for/main/topic error msg        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (error msg)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0022-report-unexpect-ref.sh b/t/t5411/test-0022-report-unexpect-ref.sh
index dbed467..f7a494b 100644
--- a/t/t5411/test-0022-report-unexpect-ref.sh
+++ b/t/t5411/test-0022-report-unexpect-ref.sh
@@ -15,19 +15,19 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/heads/main
-	remote: error: proc-receive reported status on unexpected ref: refs/heads/main
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> main
-	 ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: error: proc-receive reported status on unexpected ref: refs/heads/main        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> main
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0023-report-unexpect-ref--porcelain.sh b/t/t5411/test-0023-report-unexpect-ref--porcelain.sh
index e89096f..63c479e 100644
--- a/t/t5411/test-0023-report-unexpect-ref--porcelain.sh
+++ b/t/t5411/test-0023-report-unexpect-ref--porcelain.sh
@@ -15,20 +15,20 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/heads/main
-	remote: error: proc-receive reported status on unexpected ref: refs/heads/main
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	To <URL/of/upstream.git>
-	     <COMMIT-B>:refs/heads/main    <OID-A>..<OID-B>
-	!    HEAD:refs/for/main/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: error: proc-receive reported status on unexpected ref: refs/heads/main        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> To <URL/of/upstream.git>
+	>  	<COMMIT-B>:refs/heads/main	<COMMIT-A>..<COMMIT-B>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0024-report-unknown-ref.sh b/t/t5411/test-0024-report-unknown-ref.sh
index 7720424..af055aa 100644
--- a/t/t5411/test-0024-report-unknown-ref.sh
+++ b/t/t5411/test-0024-report-unknown-ref.sh
@@ -14,15 +14,15 @@
 		HEAD:refs/for/a/b/c/my/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: error: proc-receive reported status on unknown ref: refs/for/main/topic
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/a/b/c/my/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: error: proc-receive reported status on unknown ref: refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/a/b/c/my/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0025-report-unknown-ref--porcelain.sh b/t/t5411/test-0025-report-unknown-ref--porcelain.sh
index eeb1ce6..99601ca 100644
--- a/t/t5411/test-0025-report-unknown-ref--porcelain.sh
+++ b/t/t5411/test-0025-report-unknown-ref--porcelain.sh
@@ -14,16 +14,16 @@
 		HEAD:refs/for/a/b/c/my/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: error: proc-receive reported status on unknown ref: refs/for/main/topic
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/a/b/c/my/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/my/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: error: proc-receive reported status on unknown ref: refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/a/b/c/my/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0026-push-options.sh b/t/t5411/test-0026-push-options.sh
index 1ec2cb9..fec5f95 100644
--- a/t/t5411/test-0026-push-options.sh
+++ b/t/t5411/test-0026-push-options.sh
@@ -52,19 +52,19 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 * [new branch] HEAD -> next
-	 * [new reference] HEAD -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  * [new branch]      HEAD -> next
+	>  * [new reference]   HEAD -> refs/for/main/topic
 	EOF
 	test_cmp expect actual &&
 
@@ -101,22 +101,22 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive: atomic push_options
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< issue=123
-	remote: proc-receive< reviewer=user1
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 * [new branch] HEAD -> next
-	 * [new reference] HEAD -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive: atomic push_options        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< issue=123        Z
+	> remote: proc-receive< reviewer=user1        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  * [new branch]      HEAD -> next
+	>  * [new reference]   HEAD -> refs/for/main/topic
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0027-push-options--porcelain.sh b/t/t5411/test-0027-push-options--porcelain.sh
index 447fbfe..8fb75a8 100644
--- a/t/t5411/test-0027-push-options--porcelain.sh
+++ b/t/t5411/test-0027-push-options--porcelain.sh
@@ -54,20 +54,20 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	*    HEAD:refs/heads/next    [new branch]
-	*    HEAD:refs/for/main/topic    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/heads/next	[new branch]
+	> *	HEAD:refs/for/main/topic	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -105,23 +105,23 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive: atomic push_options
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< issue=123
-	remote: proc-receive< reviewer=user1
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	*    HEAD:refs/heads/next    [new branch]
-	*    HEAD:refs/for/main/topic    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive: atomic push_options        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< issue=123        Z
+	> remote: proc-receive< reviewer=user1        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/heads/next	[new branch]
+	> *	HEAD:refs/for/main/topic	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0030-report-ok.sh b/t/t5411/test-0030-report-ok.sh
index 8acb4f2..a3a6278 100644
--- a/t/t5411/test-0030-report-ok.sh
+++ b/t/t5411/test-0030-report-ok.sh
@@ -14,16 +14,16 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/for/main/topic
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0031-report-ok--porcelain.sh b/t/t5411/test-0031-report-ok--porcelain.sh
index a967718..0e17538 100644
--- a/t/t5411/test-0031-report-ok--porcelain.sh
+++ b/t/t5411/test-0031-report-ok--porcelain.sh
@@ -14,17 +14,17 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	*    HEAD:refs/for/main/topic    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/for/main/topic	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0032-report-with-options.sh b/t/t5411/test-0032-report-with-options.sh
index 437ade0..988a430 100644
--- a/t/t5411/test-0032-report-with-options.sh
+++ b/t/t5411/test-0032-report-with-options.sh
@@ -15,16 +15,16 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: error: proc-receive reported "option" without a matching "ok/ng" directive
-	To <URL/of/upstream.git>
-	 ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: error: proc-receive reported "option" without a matching "ok/ng" directive        Z
+	> To <URL/of/upstream.git>
+	>  ! [remote rejected] HEAD -> refs/for/main/topic (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual
 '
@@ -46,17 +46,17 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/pull/123/head
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/pull/123/head
 	EOF
 	test_cmp expect actual
 '
@@ -78,18 +78,18 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/pull/123/head
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/pull/123/head
 	EOF
 	test_cmp expect actual
 '
@@ -112,18 +112,18 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	 <OID-B>..<OID-A> HEAD -> refs/pull/123/head
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-B>..<COMMIT-A>  HEAD -> refs/pull/123/head
 	EOF
 	test_cmp expect actual
 '
@@ -145,17 +145,17 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 <OID-B>..<OID-A> HEAD -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-B>..<COMMIT-A>  HEAD -> refs/for/main/topic
 	EOF
 	test_cmp expect actual
 '
@@ -178,18 +178,18 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> HEAD -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/for/main/topic
 	EOF
 	test_cmp expect actual
 '
@@ -219,31 +219,31 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/a/b/c/topic
-	remote: proc-receive> ok refs/for/next/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option forced-update
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/pull/123/head
-	 * [new reference] HEAD -> refs/for/a/b/c/topic
-	 + <OID-B>...<OID-A> HEAD -> refs/pull/124/head (forced update)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/a/b/c/topic        Z
+	> remote: proc-receive> ok refs/for/next/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/pull/123/head
+	>  * [new reference]   HEAD -> refs/for/a/b/c/topic
+	>  + <COMMIT-B>...<COMMIT-A> HEAD -> refs/pull/124/head (forced update)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0033-report-with-options--porcelain.sh b/t/t5411/test-0033-report-with-options--porcelain.sh
index 1148672..daacb3d 100644
--- a/t/t5411/test-0033-report-with-options--porcelain.sh
+++ b/t/t5411/test-0033-report-with-options--porcelain.sh
@@ -15,17 +15,17 @@
 		HEAD:refs/for/main/topic \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: error: proc-receive reported "option" without a matching "ok/ng" directive
-	To <URL/of/upstream.git>
-	!    HEAD:refs/for/main/topic    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: error: proc-receive reported "option" without a matching "ok/ng" directive        Z
+	> To <URL/of/upstream.git>
+	> !	HEAD:refs/for/main/topic	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -47,18 +47,18 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	*    HEAD:refs/pull/123/head    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/pull/123/head	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -81,19 +81,19 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	*    HEAD:refs/pull/123/head    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/pull/123/head	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -116,19 +116,19 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/123/head
-	To <URL/of/upstream.git>
-	     HEAD:refs/pull/123/head    <OID-B>..<OID-A>
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/123/head        Z
+	> To <URL/of/upstream.git>
+	>  	HEAD:refs/pull/123/head	<COMMIT-B>..<COMMIT-A>
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -150,18 +150,18 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/for/main/topic
-	To <URL/of/upstream.git>
-	     HEAD:refs/for/main/topic    <OID-B>..<OID-A>
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  	HEAD:refs/for/main/topic	<COMMIT-B>..<COMMIT-A>
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -184,19 +184,19 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	     HEAD:refs/for/main/topic    <OID-A>..<OID-B>
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  	HEAD:refs/for/main/topic	<COMMIT-A>..<COMMIT-B>
+	> Done
 	EOF
 	test_cmp expect actual
 '
@@ -227,32 +227,32 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/a/b/c/topic
-	remote: proc-receive> ok refs/for/next/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option forced-update
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head
-	To <URL/of/upstream.git>
-	*    HEAD:refs/pull/123/head    [new reference]
-	*    HEAD:refs/for/a/b/c/topic    [new reference]
-	+    HEAD:refs/pull/124/head    <OID-B>...<OID-A> (forced update)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/a/b/c/topic        Z
+	> remote: proc-receive> ok refs/for/next/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/pull/123/head	[new reference]
+	> *	HEAD:refs/for/a/b/c/topic	[new reference]
+	> +	HEAD:refs/pull/124/head	<COMMIT-B>...<COMMIT-A> (forced update)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0034-report-ft.sh b/t/t5411/test-0034-report-ft.sh
index 6e0d08b..73a47d1 100644
--- a/t/t5411/test-0034-report-ft.sh
+++ b/t/t5411/test-0034-report-ft.sh
@@ -15,17 +15,17 @@
 		$B:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option fall-through
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 * [new reference] <COMMIT-B> -> refs/for/main/topic
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   <COMMIT-B> -> refs/for/main/topic
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0035-report-ft--porcelain.sh b/t/t5411/test-0035-report-ft--porcelain.sh
index 81bae9f..c350201 100644
--- a/t/t5411/test-0035-report-ft--porcelain.sh
+++ b/t/t5411/test-0035-report-ft--porcelain.sh
@@ -15,18 +15,18 @@
 		$B:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option fall-through
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	*    <COMMIT-B>:refs/for/main/topic    [new reference]
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	> *	<COMMIT-B>:refs/for/main/topic	[new reference]
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh b/t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh
index be9b18b..8c8a6c1 100644
--- a/t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh
+++ b/t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh
@@ -39,30 +39,30 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/1
-	remote: proc-receive> option old-oid <ZERO-OID>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/25/125/1
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/25/125/1
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> HEAD -> refs/for/main/topic
-	 * [new reference] HEAD -> refs/changes/24/124/1
-	 <OID-A>..<OID-B> HEAD -> refs/changes/25/125/1
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/1        Z
+	> remote: proc-receive> option old-oid <ZERO-OID>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/25/125/1        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/25/125/1        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/for/main/topic
+	>  * [new reference]   HEAD -> refs/changes/24/124/1
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/changes/25/125/1
 	EOF
 	test_cmp expect actual &&
 
@@ -113,31 +113,31 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/1
-	remote: proc-receive> option old-oid <ZERO-OID>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/25/125/1
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/changes/25/125/1
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/changes/24/124/1
-	 <OID-A>..<OID-B> HEAD -> refs/for/main/topic
-	 + <OID-B>...<OID-A> HEAD -> refs/changes/25/125/1 (forced update)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/1        Z
+	> remote: proc-receive> option old-oid <ZERO-OID>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/25/125/1        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/changes/25/125/1        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/changes/24/124/1
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/for/main/topic
+	>  + <COMMIT-B>...<COMMIT-A> HEAD -> refs/changes/25/125/1 (forced update)
 	EOF
 	test_cmp expect actual &&
 
@@ -182,23 +182,23 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/23/123/1
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/2
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/23/123/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/24/124/2
-	To <URL/of/upstream.git>
-	 * [new reference] HEAD -> refs/changes/23/123/1
-	 <OID-A>..<OID-B> HEAD -> refs/changes/24/124/2
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/23/123/1        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/2        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/23/123/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/24/124/2        Z
+	> To <URL/of/upstream.git>
+	>  * [new reference]   HEAD -> refs/changes/23/123/1
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/changes/24/124/2
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh b/t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh
index 95fb89c..bc44810 100644
--- a/t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh
+++ b/t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh
@@ -24,31 +24,31 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/1
-	remote: proc-receive> option old-oid <ZERO-OID>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/25/125/1
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/25/125/1
-	To <URL/of/upstream.git>
-	     HEAD:refs/for/main/topic    <OID-A>..<OID-B>
-	*    HEAD:refs/changes/24/124/1    [new reference]
-	     HEAD:refs/changes/25/125/1    <OID-A>..<OID-B>
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/1        Z
+	> remote: proc-receive> option old-oid <ZERO-OID>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/25/125/1        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/25/125/1        Z
+	> To <URL/of/upstream.git>
+	>  	HEAD:refs/for/main/topic	<COMMIT-A>..<COMMIT-B>
+	> *	HEAD:refs/changes/24/124/1	[new reference]
+	>  	HEAD:refs/changes/25/125/1	<COMMIT-A>..<COMMIT-B>
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -84,32 +84,32 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/1
-	remote: proc-receive> option old-oid <ZERO-OID>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/25/125/1
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/changes/25/125/1
-	To <URL/of/upstream.git>
-	*    HEAD:refs/changes/24/124/1    [new reference]
-	     HEAD:refs/for/main/topic    <OID-A>..<OID-B>
-	+    HEAD:refs/changes/25/125/1    <OID-B>...<OID-A> (forced update)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/1        Z
+	> remote: proc-receive> option old-oid <ZERO-OID>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/25/125/1        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/24/124/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/changes/25/125/1        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/changes/24/124/1	[new reference]
+	>  	HEAD:refs/for/main/topic	<COMMIT-A>..<COMMIT-B>
+	> +	HEAD:refs/changes/25/125/1	<COMMIT-B>...<COMMIT-A> (forced update)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
@@ -139,24 +139,24 @@
 		HEAD:refs/for/main/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/23/123/1
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/changes/24/124/2
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/23/123/1
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/24/124/2
-	To <URL/of/upstream.git>
-	*    HEAD:refs/changes/23/123/1    [new reference]
-	     HEAD:refs/changes/24/124/2    <OID-A>..<OID-B>
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/23/123/1        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/changes/24/124/2        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/changes/23/123/1        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/changes/24/124/2        Z
+	> To <URL/of/upstream.git>
+	> *	HEAD:refs/changes/23/123/1	[new reference]
+	>  	HEAD:refs/changes/24/124/2	<COMMIT-A>..<COMMIT-B>
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0038-report-mixed-refs.sh b/t/t5411/test-0038-report-mixed-refs.sh
index 5e00529..e63fe7b 100644
--- a/t/t5411/test-0038-report-mixed-refs.sh
+++ b/t/t5411/test-0038-report-mixed-refs.sh
@@ -26,43 +26,43 @@
 		HEAD:refs/for/next/topic3 \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3
-	remote: proc-receive> ok refs/for/next/topic2
-	remote: proc-receive> ng refs/for/next/topic1 fail to call Web API
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> main
-	 * [new branch] HEAD -> bar
-	 * [new branch] HEAD -> baz
-	 * [new reference] HEAD -> refs/for/next/topic2
-	 * [new branch] HEAD -> foo
-	 <OID-A>..<OID-B> HEAD -> refs/for/main/topic
-	 ! [remote rejected] HEAD -> refs/for/next/topic1 (fail to call Web API)
-	 ! [remote rejected] HEAD -> refs/for/next/topic3 (proc-receive failed to report status)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3        Z
+	> remote: proc-receive> ok refs/for/next/topic2        Z
+	> remote: proc-receive> ng refs/for/next/topic1 fail to call Web API        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> main
+	>  * [new branch]      HEAD -> bar
+	>  * [new branch]      HEAD -> baz
+	>  * [new reference]   HEAD -> refs/for/next/topic2
+	>  * [new branch]      HEAD -> foo
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/for/main/topic
+	>  ! [remote rejected] HEAD -> refs/for/next/topic1 (fail to call Web API)
+	>  ! [remote rejected] HEAD -> refs/for/next/topic3 (proc-receive failed to report status)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0039-report-mixed-refs--porcelain.sh b/t/t5411/test-0039-report-mixed-refs--porcelain.sh
index 8f891c5..99d17b7 100644
--- a/t/t5411/test-0039-report-mixed-refs--porcelain.sh
+++ b/t/t5411/test-0039-report-mixed-refs--porcelain.sh
@@ -26,44 +26,44 @@
 		HEAD:refs/for/next/topic3 \
 		>out-$test_count 2>&1 &&
 	make_user_friendly_and_stable_output <out-$test_count >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3
-	remote: # proc-receive hook
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3
-	remote: proc-receive> ok refs/for/next/topic2
-	remote: proc-receive> ng refs/for/next/topic1 fail to call Web API
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/for/main/topic
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
-	To <URL/of/upstream.git>
-	     <COMMIT-B>:refs/heads/main    <OID-A>..<OID-B>
-	*    HEAD:refs/heads/bar    [new branch]
-	*    HEAD:refs/heads/baz    [new branch]
-	*    HEAD:refs/for/next/topic2    [new reference]
-	*    HEAD:refs/heads/foo    [new branch]
-	     HEAD:refs/for/main/topic    <OID-A>..<OID-B>
-	!    HEAD:refs/for/next/topic1    [remote rejected] (fail to call Web API)
-	!    HEAD:refs/for/next/topic3    [remote rejected] (proc-receive failed to report status)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic1        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic3        Z
+	> remote: proc-receive> ok refs/for/next/topic2        Z
+	> remote: proc-receive> ng refs/for/next/topic1 fail to call Web API        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/for/main/topic        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/bar        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/baz        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic2        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/foo        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic        Z
+	> To <URL/of/upstream.git>
+	>  	<COMMIT-B>:refs/heads/main	<COMMIT-A>..<COMMIT-B>
+	> *	HEAD:refs/heads/bar	[new branch]
+	> *	HEAD:refs/heads/baz	[new branch]
+	> *	HEAD:refs/for/next/topic2	[new reference]
+	> *	HEAD:refs/heads/foo	[new branch]
+	>  	HEAD:refs/for/main/topic	<COMMIT-A>..<COMMIT-B>
+	> !	HEAD:refs/for/next/topic1	[remote rejected] (fail to call Web API)
+	> !	HEAD:refs/for/next/topic3	[remote rejected] (proc-receive failed to report status)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0040-process-all-refs.sh b/t/t5411/test-0040-process-all-refs.sh
index fdcdcc7..2f405ad 100644
--- a/t/t5411/test-0040-process-all-refs.sh
+++ b/t/t5411/test-0040-process-all-refs.sh
@@ -50,46 +50,46 @@
 		HEAD:refs/for/next/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: proc-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: proc-receive> ok refs/heads/main
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/heads/foo
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/heads/bar
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/next/topic
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: post-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> bar
-	 - [deleted] foo
-	 + <OID-B>...<OID-A> HEAD -> main (forced update)
-	 <OID-A>..<OID-B> HEAD -> refs/pull/123/head
-	 + <OID-B>...<OID-A> HEAD -> refs/pull/124/head (forced update)
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: proc-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/heads/foo        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/heads/bar        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/next/topic        Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: post-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> bar
+	>  - [deleted]         foo
+	>  + <COMMIT-B>...<COMMIT-A> HEAD -> main (forced update)
+	>    <COMMIT-A>..<COMMIT-B>  HEAD -> refs/pull/123/head
+	>  + <COMMIT-B>...<COMMIT-A> HEAD -> refs/pull/124/head (forced update)
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0041-process-all-refs--porcelain.sh b/t/t5411/test-0041-process-all-refs--porcelain.sh
index 73b35fe..c884057 100644
--- a/t/t5411/test-0041-process-all-refs--porcelain.sh
+++ b/t/t5411/test-0041-process-all-refs--porcelain.sh
@@ -50,47 +50,47 @@
 		HEAD:refs/for/next/topic \
 		>out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: # proc-receive hook
-	remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: proc-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
-	remote: proc-receive> ok refs/heads/main
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/heads/foo
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/heads/bar
-	remote: proc-receive> option fall-through
-	remote: proc-receive> ok refs/for/main/topic
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/for/next/topic
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: proc-receive> option old-oid <COMMIT-B>
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: proc-receive> option forced-update
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar
-	remote: post-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head
-	remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head
-	To <URL/of/upstream.git>
-	     <COMMIT-B>:refs/heads/bar    <OID-A>..<OID-B>
-	-    :refs/heads/foo    [deleted]
-	+    HEAD:refs/heads/main    <OID-B>...<OID-A> (forced update)
-	     HEAD:refs/pull/123/head    <OID-A>..<OID-B>
-	+    HEAD:refs/pull/124/head    <OID-B>...<OID-A> (forced update)
-	Done
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: proc-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/heads/foo        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/heads/bar        Z
+	> remote: proc-receive> option fall-through        Z
+	> remote: proc-receive> ok refs/for/main/topic        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/for/next/topic        Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-B>        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: proc-receive> option forced-update        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar        Z
+	> remote: post-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head        Z
+	> remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	>  	<COMMIT-B>:refs/heads/bar	<COMMIT-A>..<COMMIT-B>
+	> -	:refs/heads/foo	[deleted]
+	> +	HEAD:refs/heads/main	<COMMIT-B>...<COMMIT-A> (forced update)
+	>  	HEAD:refs/pull/123/head	<COMMIT-A>..<COMMIT-B>
+	> +	HEAD:refs/pull/124/head	<COMMIT-B>...<COMMIT-A> (forced update)
+	> Done
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5411/test-0050-proc-receive-refs-with-modifiers.sh b/t/t5411/test-0050-proc-receive-refs-with-modifiers.sh
index 7214647..31989f0 100644
--- a/t/t5411/test-0050-proc-receive-refs-with-modifiers.sh
+++ b/t/t5411/test-0050-proc-receive-refs-with-modifiers.sh
@@ -29,25 +29,25 @@
 		$B:refs/heads/main \
 		v123 >out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: # proc-receive hook
-	remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
-	remote: proc-receive< <ZERO-OID> <TAG-v123> refs/tags/v123
-	remote: proc-receive> ok refs/heads/main
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <COMMIT-B>
-	remote: proc-receive> ok refs/tags/v123
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head
-	remote: post-receive< <ZERO-OID> <TAG-v123> refs/pull/124/head
-	To <URL/of/upstream.git>
-	 <OID-A>..<OID-B> <COMMIT-B> -> refs/pull/123/head
-	 * [new reference] v123 -> refs/pull/124/head
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: pre-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/main        Z
+	> remote: proc-receive< <ZERO-OID> <TAG-v123> refs/tags/v123        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <COMMIT-B>        Z
+	> remote: proc-receive> ok refs/tags/v123         Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head        Z
+	> remote: post-receive< <ZERO-OID> <TAG-v123> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> refs/pull/123/head
+	>  * [new reference]   v123 -> refs/pull/124/head
 	EOF
 	test_cmp expect actual &&
 
@@ -93,32 +93,32 @@
 		$A:refs/heads/next \
 		:refs/tags/v123 >out 2>&1 &&
 	make_user_friendly_and_stable_output <out >actual &&
-	cat >expect <<-EOF &&
-	remote: # pre-receive hook
-	remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/main
-	remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/topic
-	remote: pre-receive< <TAG-v123> <ZERO-OID> refs/tags/v123
-	remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: # proc-receive hook
-	remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/main
-	remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
-	remote: proc-receive> ok refs/heads/main
-	remote: proc-receive> option refname refs/pull/123/head
-	remote: proc-receive> option old-oid <COMMIT-A>
-	remote: proc-receive> option new-oid <ZERO-OID>
-	remote: proc-receive> ok refs/heads/next
-	remote: proc-receive> option refname refs/pull/124/head
-	remote: proc-receive> option new-oid <COMMIT-A>
-	remote: # post-receive hook
-	remote: post-receive< <COMMIT-A> <ZERO-OID> refs/pull/123/head
-	remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/topic
-	remote: post-receive< <TAG-v123> <ZERO-OID> refs/tags/v123
-	remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/124/head
-	To <URL/of/upstream.git>
-	 - [deleted] refs/pull/123/head
-	 <OID-A>..<OID-B> <COMMIT-B> -> topic
-	 - [deleted] v123
-	 * [new reference] <COMMIT-A> -> refs/pull/124/head
+	format_and_save_expect <<-EOF &&
+	> remote: # pre-receive hook        Z
+	> remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/main        Z
+	> remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/topic        Z
+	> remote: pre-receive< <TAG-v123> <ZERO-OID> refs/tags/v123        Z
+	> remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: # proc-receive hook        Z
+	> remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/main        Z
+	> remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/heads/next        Z
+	> remote: proc-receive> ok refs/heads/main        Z
+	> remote: proc-receive> option refname refs/pull/123/head        Z
+	> remote: proc-receive> option old-oid <COMMIT-A>        Z
+	> remote: proc-receive> option new-oid <ZERO-OID>        Z
+	> remote: proc-receive> ok refs/heads/next        Z
+	> remote: proc-receive> option refname refs/pull/124/head        Z
+	> remote: proc-receive> option new-oid <COMMIT-A>        Z
+	> remote: # post-receive hook        Z
+	> remote: post-receive< <COMMIT-A> <ZERO-OID> refs/pull/123/head        Z
+	> remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/topic        Z
+	> remote: post-receive< <TAG-v123> <ZERO-OID> refs/tags/v123        Z
+	> remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/124/head        Z
+	> To <URL/of/upstream.git>
+	>  - [deleted]         refs/pull/123/head
+	>    <COMMIT-A>..<COMMIT-B>  <COMMIT-B> -> topic
+	>  - [deleted]         v123
+	>  * [new reference]   <COMMIT-A> -> refs/pull/124/head
 	EOF
 	test_cmp expect actual &&
 
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index c7b3927..e6e3c8f 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -182,7 +182,7 @@
 	)
 '
 
-test_expect_success 'rename errors out early when when new name is invalid' '
+test_expect_success 'rename errors out early when new name is invalid' '
 	test_config remote.foo.vcs bar &&
 	echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect &&
 	test_must_fail git remote rename foo invalid...name 2>actual &&
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index e83b2a6..a0faf0d 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -1214,6 +1214,19 @@
 	check_negotiation_tip
 '
 
+test_expect_success '--negotiation-tip rejects missing OIDs' '
+	setup_negotiation_tip server server 0 &&
+	test_must_fail git -C client fetch \
+		--negotiation-tip=alpha_1 \
+		--negotiation-tip=$(test_oid zero) \
+		origin alpha_s beta_s 2>err &&
+	cat >fatal-expect <<-EOF &&
+	fatal: the object $(test_oid zero) does not exist
+EOF
+	grep fatal: err >fatal-actual &&
+	test_cmp fatal-expect fatal-actual
+'
+
 . "$TEST_DIRECTORY"/lib-httpd.sh
 start_httpd
 
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 0916f76..4db8edd 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -201,6 +201,7 @@
 	# Without negotiation
 	mk_empty testrepo &&
 	git push testrepo $the_first_commit:refs/remotes/origin/first_commit &&
+	test_commit -C testrepo unrelated_commit &&
 	git -C testrepo config receive.hideRefs refs/remotes/origin/first_commit &&
 	echo now pushing without negotiation &&
 	GIT_TRACE2_EVENT="$(pwd)/event" git -c protocol.version=2 push testrepo refs/heads/main:refs/remotes/origin/main &&
@@ -210,6 +211,7 @@
 	rm event &&
 	mk_empty testrepo &&
 	git push testrepo $the_first_commit:refs/remotes/origin/first_commit &&
+	test_commit -C testrepo unrelated_commit &&
 	git -C testrepo config receive.hideRefs refs/remotes/origin/first_commit &&
 	GIT_TRACE2_EVENT="$(pwd)/event" git -c protocol.version=2 -c push.negotiate=1 push testrepo refs/heads/main:refs/remotes/origin/main &&
 	grep_wrote 2 event # 1 commit, 1 tree
@@ -219,6 +221,7 @@
 	rm event &&
 	mk_empty testrepo &&
 	git push testrepo $the_first_commit:refs/remotes/origin/first_commit &&
+	test_commit -C testrepo unrelated_commit &&
 	git -C testrepo config receive.hideRefs refs/remotes/origin/first_commit &&
 	GIT_TEST_PROTOCOL_VERSION=0 GIT_TRACE2_EVENT="$(pwd)/event" \
 		git -c push.negotiate=1 push testrepo refs/heads/main:refs/remotes/origin/main 2>err &&
@@ -1767,5 +1770,4 @@
 	git -C cloned push origin HEAD:new-wt &&
 	test_must_fail git -C cloned push --delete origin new-wt
 '
-
 test_done
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index e2c0c51..672001a 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -136,12 +136,12 @@
 	git reset --hard HEAD^ &&
 	echo file >expect &&
 	test_cmp expect file &&
-	git pull . second &&
+	git pull --no-rebase . second &&
 	echo modified >expect &&
 	test_cmp expect file &&
 	git reflog -1 >reflog.actual &&
 	sed "s/^[0-9a-f][0-9a-f]*/OBJID/" reflog.actual >reflog.fuzzy &&
-	echo "OBJID HEAD@{0}: pull . second: Fast-forward" >reflog.expected &&
+	echo "OBJID HEAD@{0}: pull --no-rebase . second: Fast-forward" >reflog.expected &&
 	test_cmp reflog.expected reflog.fuzzy
 '
 
@@ -226,7 +226,7 @@
 	test_commit modified2 file &&
 	git ls-files -u >unmerged &&
 	test_must_be_empty unmerged &&
-	test_must_fail git pull . second &&
+	test_must_fail git pull --no-rebase . second &&
 	git ls-files -u >unmerged &&
 	test_file_not_empty unmerged &&
 	cp file expected &&
@@ -409,37 +409,37 @@
 
 test_expect_success 'pull succeeds with dirty working directory and merge.autostash set' '
 	test_config merge.autostash true &&
-	test_pull_autostash 2
+	test_pull_autostash 2 --no-rebase
 '
 
 test_expect_success 'pull --autostash & merge.autostash=true' '
 	test_config merge.autostash true &&
-	test_pull_autostash 2 --autostash
+	test_pull_autostash 2 --autostash --no-rebase
 '
 
 test_expect_success 'pull --autostash & merge.autostash=false' '
 	test_config merge.autostash false &&
-	test_pull_autostash 2 --autostash
+	test_pull_autostash 2 --autostash --no-rebase
 '
 
 test_expect_success 'pull --autostash & merge.autostash unset' '
 	test_unconfig merge.autostash &&
-	test_pull_autostash 2 --autostash
+	test_pull_autostash 2 --autostash --no-rebase
 '
 
 test_expect_success 'pull --no-autostash & merge.autostash=true' '
 	test_config merge.autostash true &&
-	test_pull_autostash_fail --no-autostash
+	test_pull_autostash_fail --no-autostash --no-rebase
 '
 
 test_expect_success 'pull --no-autostash & merge.autostash=false' '
 	test_config merge.autostash false &&
-	test_pull_autostash_fail --no-autostash
+	test_pull_autostash_fail --no-autostash --no-rebase
 '
 
 test_expect_success 'pull --no-autostash & merge.autostash unset' '
 	test_unconfig merge.autostash &&
-	test_pull_autostash_fail --no-autostash
+	test_pull_autostash_fail --no-autostash --no-rebase
 '
 
 test_expect_success 'pull.rebase' '
diff --git a/t/t5521-pull-options.sh b/t/t5521-pull-options.sh
index 63a688b..7601c91 100755
--- a/t/t5521-pull-options.sh
+++ b/t/t5521-pull-options.sh
@@ -113,7 +113,7 @@
 	git pull two &&
 	test_commit A &&
 	git branch -f origin &&
-	git pull --all --force
+	git pull --no-rebase --all --force
 	)
 '
 
@@ -179,7 +179,7 @@
 	(
 		cd dst &&
 		test_must_fail git pull ../src side &&
-		git pull --allow-unrelated-histories ../src side
+		git pull --no-rebase --allow-unrelated-histories ../src side
 	)
 '
 
diff --git a/t/t5524-pull-msg.sh b/t/t5524-pull-msg.sh
index c278ada..b2be360 100755
--- a/t/t5524-pull-msg.sh
+++ b/t/t5524-pull-msg.sh
@@ -28,7 +28,7 @@
 test_expect_success pull '
 (
 	cd cloned &&
-	git pull --log &&
+	git pull --no-rebase --log &&
 	git log -2 &&
 	git cat-file commit HEAD >result &&
 	grep Dollar result
@@ -41,7 +41,7 @@
 	git reset --hard HEAD^ &&
 	test "$(cat afile)" = original &&
 	test "$(cat bfile)" = added &&
-	git pull --log=1 &&
+	git pull --no-rebase --log=1 &&
 	git log -3 &&
 	git cat-file commit HEAD >result &&
 	grep Dollar result &&
diff --git a/t/t5548-push-porcelain.sh b/t/t5548-push-porcelain.sh
index 5a761f3..f11ff57 100755
--- a/t/t5548-push-porcelain.sh
+++ b/t/t5548-push-porcelain.sh
@@ -14,29 +14,28 @@
 # NOTE: Never calling this function from a subshell since variable
 # assignments will disappear when subshell exits.
 create_commits_in () {
-	repo="$1" &&
-	if ! parent=$(git -C "$repo" rev-parse HEAD^{} --)
-	then
-		parent=
-	fi &&
-	T=$(git -C "$repo" write-tree) &&
+	repo="$1" && test -d "$repo" ||
+	error "Repository $repo does not exist."
 	shift &&
 	while test $# -gt 0
 	do
 		name=$1 &&
-		test_tick &&
-		if test -z "$parent"
-		then
-			oid=$(echo $name | git -C "$repo" commit-tree $T)
-		else
-			oid=$(echo $name | git -C "$repo" commit-tree -p $parent $T)
-		fi &&
-		eval $name=$oid &&
-		parent=$oid &&
-		shift ||
-		return 1
-	done &&
-	git -C "$repo" update-ref refs/heads/main $oid
+		shift &&
+		test_commit -C "$repo" --no-tag "$name" &&
+		eval $name=$(git -C "$repo" rev-parse HEAD)
+	done
+}
+
+get_abbrev_oid () {
+	oid=$1 &&
+	suffix=${oid#???????} &&
+	oid=${oid%$suffix} &&
+	if test -n "$oid"
+	then
+		echo "$oid"
+	else
+		echo "undefined-oid"
+	fi
 }
 
 # Format the output of git-push, git-show-ref and other commands to make a
@@ -45,17 +44,16 @@
 # of the output.
 make_user_friendly_and_stable_output () {
 	sed \
-		-e "s/  *\$//" \
-		-e "s/   */ /g" \
-		-e "s/	/    /g" \
-		-e "s/$A/<COMMIT-A>/g" \
-		-e "s/$B/<COMMIT-B>/g" \
+		-e "s/$(get_abbrev_oid $A)[0-9a-f]*/<COMMIT-A>/g" \
+		-e "s/$(get_abbrev_oid $B)[0-9a-f]*/<COMMIT-B>/g" \
 		-e "s/$ZERO_OID/<ZERO-OID>/g" \
-		-e "s/$(echo $A | cut -c1-7)[0-9a-f]*/<OID-A>/g" \
-		-e "s/$(echo $B | cut -c1-7)[0-9a-f]*/<OID-B>/g" \
 		-e "s#To $URL_PREFIX/upstream.git#To <URL/of/upstream.git>#"
 }
 
+format_and_save_expect () {
+	sed -e 's/^> //' -e 's/Z$//' >expect
+}
+
 setup_upstream_and_workbench () {
 	# Upstream  after setup : main(B)  foo(A)  bar(A)  baz(A)
 	# Workbench after setup : main(A)
@@ -111,14 +109,14 @@
 				next
 		) >out &&
 		make_user_friendly_and_stable_output <out >actual &&
-		cat >expect <<-EOF &&
-		To <URL/of/upstream.git>
-		=    refs/heads/baz:refs/heads/baz    [up to date]
-		     <COMMIT-B>:refs/heads/bar    <OID-A>..<OID-B>
-		-    :refs/heads/foo    [deleted]
-		+    refs/heads/main:refs/heads/main    <OID-B>...<OID-A> (forced update)
-		*    refs/heads/next:refs/heads/next    [new branch]
-		Done
+		format_and_save_expect <<-EOF &&
+		> To <URL/of/upstream.git>
+		> =	refs/heads/baz:refs/heads/baz	[up to date]
+		>  	<COMMIT-B>:refs/heads/bar	<COMMIT-A>..<COMMIT-B>
+		> -	:refs/heads/foo	[deleted]
+		> +	refs/heads/main:refs/heads/main	<COMMIT-B>...<COMMIT-A> (forced update)
+		> *	refs/heads/next:refs/heads/next	[new branch]
+		> Done
 		EOF
 		test_cmp expect actual &&
 
@@ -148,12 +146,12 @@
 				next
 		) >out &&
 		make_user_friendly_and_stable_output <out >actual &&
-		cat >expect <<-EOF &&
+		format_and_save_expect <<-EOF &&
 		To <URL/of/upstream.git>
-		=    refs/heads/next:refs/heads/next    [up to date]
-		!    refs/heads/bar:refs/heads/bar    [rejected] (non-fast-forward)
-		!    (delete):refs/heads/baz    [rejected] (atomic push failed)
-		!    refs/heads/main:refs/heads/main    [rejected] (atomic push failed)
+		> =	refs/heads/next:refs/heads/next	[up to date]
+		> !	refs/heads/bar:refs/heads/bar	[rejected] (non-fast-forward)
+		> !	(delete):refs/heads/baz	[rejected] (atomic push failed)
+		> !	refs/heads/main:refs/heads/main	[rejected] (atomic push failed)
 		Done
 		EOF
 		test_cmp expect actual &&
@@ -168,6 +166,7 @@
 		EOF
 		test_cmp expect actual
 	'
+
 	test_expect_success "prepare pre-receive hook ($PROTOCOL)" '
 		write_script "$upstream/hooks/pre-receive" <<-EOF
 		exit 1
@@ -189,12 +188,12 @@
 				next
 		) >out &&
 		make_user_friendly_and_stable_output <out >actual &&
-		cat >expect <<-EOF &&
+		format_and_save_expect <<-EOF &&
 		To <URL/of/upstream.git>
-		=    refs/heads/next:refs/heads/next    [up to date]
-		!    refs/heads/bar:refs/heads/bar    [remote rejected] (pre-receive hook declined)
-		!    :refs/heads/baz    [remote rejected] (pre-receive hook declined)
-		!    refs/heads/main:refs/heads/main    [remote rejected] (pre-receive hook declined)
+		> =	refs/heads/next:refs/heads/next	[up to date]
+		> !	refs/heads/bar:refs/heads/bar	[remote rejected] (pre-receive hook declined)
+		> !	:refs/heads/baz	[remote rejected] (pre-receive hook declined)
+		> !	refs/heads/main:refs/heads/main	[remote rejected] (pre-receive hook declined)
 		Done
 		EOF
 		test_cmp expect actual &&
@@ -227,12 +226,12 @@
 				next
 		) >out &&
 		make_user_friendly_and_stable_output <out >actual &&
-		cat >expect <<-EOF &&
+		format_and_save_expect <<-EOF &&
 		To <URL/of/upstream.git>
-		=    refs/heads/next:refs/heads/next    [up to date]
-		-    :refs/heads/baz    [deleted]
-		     refs/heads/main:refs/heads/main    <OID-A>..<OID-B>
-		!    refs/heads/bar:refs/heads/bar    [rejected] (non-fast-forward)
+		> =	refs/heads/next:refs/heads/next	[up to date]
+		> -	:refs/heads/baz	[deleted]
+		>  	refs/heads/main:refs/heads/main	<COMMIT-A>..<COMMIT-B>
+		> !	refs/heads/bar:refs/heads/bar	[rejected] (non-fast-forward)
 		Done
 		EOF
 		test_cmp expect actual &&
diff --git a/t/t5549-fetch-push-http.sh b/t/t5549-fetch-push-http.sh
new file mode 100755
index 0000000..2cdebcb
--- /dev/null
+++ b/t/t5549-fetch-push-http.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+test_description='fetch/push functionality using the HTTP protocol'
+
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
+. ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-httpd.sh
+start_httpd
+
+SERVER="$HTTPD_DOCUMENT_ROOT_PATH/server"
+URI="$HTTPD_URL/smart/server"
+
+grep_wrote () {
+	object_count=$1
+	file_name=$2
+	grep 'write_pack_file/wrote.*"value":"'$1'"' $2
+}
+
+setup_client_and_server () {
+	git init client &&
+	test_when_finished 'rm -rf client' &&
+	test_commit -C client first_commit &&
+	test_commit -C client second_commit &&
+
+	git init "$SERVER" &&
+	test_when_finished 'rm -rf "$SERVER"' &&
+	test_config -C "$SERVER" http.receivepack true &&
+	test_commit -C "$SERVER" unrelated_commit &&
+	git -C client push "$URI" first_commit:refs/remotes/origin/first_commit &&
+	git -C "$SERVER" config receive.hideRefs refs/remotes/origin/first_commit
+}
+
+test_expect_success 'push without negotiation (for comparing object counts with the next test)' '
+	setup_client_and_server &&
+
+	GIT_TRACE2_EVENT="$(pwd)/event" git -C client -c protocol.version=2 \
+		push "$URI" refs/heads/main:refs/remotes/origin/main &&
+	test_when_finished "rm -f event" &&
+	grep_wrote 6 event # 2 commits, 2 trees, 2 blobs
+'
+
+test_expect_success 'push with negotiation' '
+	setup_client_and_server &&
+
+	GIT_TRACE2_EVENT="$(pwd)/event" git -C client -c protocol.version=2 -c push.negotiate=1 \
+		push "$URI" refs/heads/main:refs/remotes/origin/main &&
+	test_when_finished "rm -f event" &&
+	grep_wrote 3 event # 1 commit, 1 tree, 1 blob
+'
+
+test_expect_success 'push with negotiation proceeds anyway even if negotiation fails' '
+	setup_client_and_server &&
+
+	# Use protocol v0 to make negotiation fail (because protocol v0 does
+	# not support the "wait-for-done" capability, which is required for
+	# push negotiation)
+	GIT_TEST_PROTOCOL_VERSION=0 GIT_TRACE2_EVENT="$(pwd)/event" git -C client -c push.negotiate=1 \
+		push "$URI" refs/heads/main:refs/remotes/origin/main 2>err &&
+	test_when_finished "rm -f event" &&
+	grep_wrote 6 event && # 2 commits, 2 trees, 2 blobs
+
+	cat >warning-expect <<-EOF &&
+	warning: --negotiate-only requires protocol v2
+	warning: push negotiation failed; proceeding anyway with push
+EOF
+	grep warning: err >warning-actual &&
+	test_cmp warning-expect warning-actual
+'
+
+test_done
diff --git a/t/t5553-set-upstream.sh b/t/t5553-set-upstream.sh
index b1d614c..9c12c0f 100755
--- a/t/t5553-set-upstream.sh
+++ b/t/t5553-set-upstream.sh
@@ -108,27 +108,27 @@
 
 test_expect_success 'pull --set-upstream upstream main sets branch main but not other' '
 	clear_config main other &&
-	git pull --set-upstream upstream main &&
+	git pull --no-rebase --set-upstream upstream main &&
 	check_config main upstream refs/heads/main &&
 	check_config_missing other
 '
 
 test_expect_success 'pull --set-upstream main:other2 does not set the branch other2' '
 	clear_config other2 &&
-	git pull --set-upstream upstream main:other2 &&
+	git pull --no-rebase --set-upstream upstream main:other2 &&
 	check_config_missing other2
 '
 
 test_expect_success 'pull --set-upstream upstream other sets branch main' '
 	clear_config main other &&
-	git pull --set-upstream upstream other &&
+	git pull --no-rebase --set-upstream upstream other &&
 	check_config main upstream refs/heads/other &&
 	check_config_missing other
 '
 
 test_expect_success 'pull --set-upstream upstream tag does not set the tag' '
 	clear_config three &&
-	git pull --tags --set-upstream upstream three &&
+	git pull --no-rebase --tags --set-upstream upstream three &&
 	check_config_missing three
 '
 
@@ -144,16 +144,16 @@
 
 test_expect_success 'pull --set-upstream upstream HEAD sets branch HEAD' '
 	clear_config main other &&
-	git pull --set-upstream upstream HEAD &&
+	git pull --no-rebase --set-upstream upstream HEAD &&
 	check_config main upstream HEAD &&
 	git checkout other &&
-	git pull --set-upstream upstream HEAD &&
+	git pull --no-rebase --set-upstream upstream HEAD &&
 	check_config other upstream HEAD
 '
 
 test_expect_success 'pull --set-upstream upstream with more than one branch does nothing' '
 	clear_config main three &&
-	git pull --set-upstream upstream main three &&
+	git pull --no-rebase --set-upstream upstream main three &&
 	check_config_missing main &&
 	check_config_missing three
 '
diff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh
index e5d3d15..05a5806 100755
--- a/t/t5562-http-backend-content-length.sh
+++ b/t/t5562-http-backend-content-length.sh
@@ -63,7 +63,7 @@
 	hash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) &&
 	{
 		printf "%s %s refs/heads/newbranch\\0report-status object-format=%s\\n" \
-			"$ZERO_OID" "$hash_next" "$(test_oid algo)" | packetize &&
+			"$ZERO_OID" "$hash_next" "$(test_oid algo)" | packetize_raw
 		printf 0000 &&
 		echo "$hash_next" | git pack-objects --stdout
 	} >push_body &&
diff --git a/t/t5570-git-daemon.sh b/t/t5570-git-daemon.sh
index 82c31ab..b87ca06 100755
--- a/t/t5570-git-daemon.sh
+++ b/t/t5570-git-daemon.sh
@@ -194,7 +194,7 @@
 
 test_expect_success FAKENC 'hostname interpolation works after LF-stripping' '
 	{
-		printf "git-upload-pack /interp.git\n\0host=localhost" | packetize
+		printf "git-upload-pack /interp.git\n\0host=localhost" | packetize_raw
 		printf "0000"
 	} >input &&
 	fake_nc "$GIT_DAEMON_HOST_PORT" <input >output &&
diff --git a/t/t5582-fetch-negative-refspec.sh b/t/t5582-fetch-negative-refspec.sh
index e5d2e79..7a80e47 100755
--- a/t/t5582-fetch-negative-refspec.sh
+++ b/t/t5582-fetch-negative-refspec.sh
@@ -105,7 +105,6 @@
 '
 
 test_expect_success "fetch with negative refspec avoids duplicate conflict" '
-	cd "$D" &&
 	(
 		cd one &&
 		git branch dups/a &&
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index c068846..83c24fc 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -305,7 +305,8 @@
 test_expect_success 'clone checking out a tag' '
 	git clone --branch=some-tag src dst.tag &&
 	GIT_DIR=src/.git git rev-parse some-tag >expected &&
-	test_cmp expected dst.tag/.git/HEAD &&
+	GIT_DIR=dst.tag/.git git rev-parse HEAD >actual &&
+	test_cmp expected actual &&
 	GIT_DIR=dst.tag/.git git config remote.origin.fetch >fetch.actual &&
 	echo "+refs/heads/*:refs/remotes/origin/*" >fetch.expected &&
 	test_cmp fetch.expected fetch.actual
diff --git a/t/t5604-clone-reference.sh b/t/t5604-clone-reference.sh
index e845d62..24340e6 100755
--- a/t/t5604-clone-reference.sh
+++ b/t/t5604-clone-reference.sh
@@ -87,7 +87,7 @@
 '
 
 test_expect_success 'pulling changes from origin' '
-	git -C C pull origin
+	git -C C pull --no-rebase origin
 '
 
 # the 2 local objects are commit and tree from the merge
@@ -96,7 +96,7 @@
 '
 
 test_expect_success 'pulling changes from origin' '
-	git -C D pull origin
+	git -C D pull --no-rebase origin
 '
 
 # the 5 local objects are expected; file3 blob, commit in A to add it
diff --git a/t/t5606-clone-options.sh b/t/t5606-clone-options.sh
index 3a595c0..d822153 100755
--- a/t/t5606-clone-options.sh
+++ b/t/t5606-clone-options.sh
@@ -16,6 +16,18 @@
 
 '
 
+test_expect_success 'submodule.stickyRecursiveClone flag manipulates submodule.recurse value' '
+
+	test_config_global submodule.stickyRecursiveClone true &&
+	git clone --recurse-submodules parent clone_recurse_true &&
+	test_cmp_config -C clone_recurse_true true submodule.recurse &&
+
+	test_config_global submodule.stickyRecursiveClone false &&
+	git clone --recurse-submodules parent clone_recurse_false &&
+	test_expect_code 1 git -C clone_recurse_false config --get submodule.recurse
+
+'
+
 test_expect_success 'clone -o' '
 
 	git clone -o foo parent clone-o &&
diff --git a/t/t5607-clone-bundle.sh b/t/t5607-clone-bundle.sh
index f4c383c..51705aa 100755
--- a/t/t5607-clone-bundle.sh
+++ b/t/t5607-clone-bundle.sh
@@ -29,11 +29,21 @@
 
 test_expect_success 'annotated tags can be excluded by rev-list options' '
 	git bundle create bundle --all --since=7.Apr.2005.15:14:00.-0700 &&
-	git ls-remote bundle > output &&
-	grep tag output &&
+	cat >expect <<-EOF &&
+	$(git rev-parse HEAD)	HEAD
+	$(git rev-parse tag)	refs/tags/tag
+	$(git rev-parse main)	refs/heads/main
+	EOF
+	git ls-remote bundle >actual &&
+	test_cmp expect actual &&
+
 	git bundle create bundle --all --since=7.Apr.2005.15:16:00.-0700 &&
-	git ls-remote bundle > output &&
-	! grep tag output
+	cat >expect <<-EOF &&
+	$(git rev-parse HEAD)	HEAD
+	$(git rev-parse main)	refs/heads/main
+	EOF
+	git ls-remote bundle >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'die if bundle file cannot be created' '
@@ -43,39 +53,66 @@
 
 test_expect_success 'bundle --stdin' '
 	echo main | git bundle create stdin-bundle.bdl --stdin &&
-	git ls-remote stdin-bundle.bdl >output &&
-	grep main output
+	cat >expect <<-EOF &&
+	$(git rev-parse main)	refs/heads/main
+	EOF
+	git ls-remote stdin-bundle.bdl >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'bundle --stdin <rev-list options>' '
 	echo main | git bundle create hybrid-bundle.bdl --stdin tag &&
-	git ls-remote hybrid-bundle.bdl >output &&
-	grep main output
+	cat >expect <<-EOF &&
+	$(git rev-parse main)	refs/heads/main
+	EOF
+	git ls-remote stdin-bundle.bdl >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'empty bundle file is rejected' '
-	: >empty-bundle &&
+	>empty-bundle &&
 	test_must_fail git fetch empty-bundle
 '
 
 # This triggers a bug in older versions where the resulting line (with
 # --pretty=oneline) was longer than a 1024-char buffer.
 test_expect_success 'ridiculously long subject in boundary' '
-	: >file4 &&
+	>file4 &&
 	test_tick &&
 	git add file4 &&
 	printf "%01200d\n" 0 | git commit -F - &&
 	test_commit fifth &&
 	git bundle create long-subject-bundle.bdl HEAD^..HEAD &&
-	git bundle list-heads long-subject-bundle.bdl >heads &&
-	test -s heads &&
+	cat >expect <<-EOF &&
+	$(git rev-parse main) HEAD
+	EOF
+	git bundle list-heads long-subject-bundle.bdl >actual &&
+	test_cmp expect actual &&
+
 	git fetch long-subject-bundle.bdl &&
-	sed -n "/^-/{p;q;}" long-subject-bundle.bdl >boundary &&
-	grep "^-$OID_REGEX " boundary
+
+	algo=$(test_oid algo) &&
+	if test "$algo" != sha1
+	then
+		echo "@object-format=sha256"
+	fi >expect &&
+	cat >>expect <<-EOF &&
+	-$(git log --pretty=format:"%H %s" -1 HEAD^)
+	$(git rev-parse HEAD) HEAD
+	EOF
+
+	if test "$algo" = sha1
+	then
+		head -n 3 long-subject-bundle.bdl
+	else
+		head -n 4 long-subject-bundle.bdl
+	fi | grep -v "^#" >actual &&
+
+	test_cmp expect actual
 '
 
 test_expect_success 'prerequisites with an empty commit message' '
-	: >file1 &&
+	>file1 &&
 	git add file1 &&
 	test_tick &&
 	git commit --allow-empty-message -m "" &&
@@ -103,7 +140,11 @@
 
 test_expect_success 'git bundle uses expected default format' '
 	git bundle create bundle HEAD^.. &&
-	head -n1 bundle | grep "^# v$(test_oid version) git bundle$"
+	cat >expect <<-EOF &&
+	# v$(test_oid version) git bundle
+	EOF
+	head -n1 bundle >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'git bundle v3 has expected contents' '
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
index 66af411..d3687b1 100755
--- a/t/t5702-protocol-v2.sh
+++ b/t/t5702-protocol-v2.sh
@@ -27,9 +27,9 @@
 		ls-remote --symref "$GIT_DAEMON_URL/parent" >actual &&
 
 	# Client requested to use protocol v2
-	grep "git> .*\\\0\\\0version=2\\\0$" log &&
+	grep "ls-remote> .*\\\0\\\0version=2\\\0$" log &&
 	# Server responded using protocol v2
-	grep "git< version 2" log &&
+	grep "ls-remote< version 2" log &&
 
 	git ls-remote --symref "$GIT_DAEMON_URL/parent" >expect &&
 	test_cmp expect actual
@@ -151,7 +151,7 @@
 		ls-remote --symref "file://$(pwd)/file_parent" >actual &&
 
 	# Server responded using protocol v2
-	grep "git< version 2" log &&
+	grep "ls-remote< version 2" log &&
 
 	git ls-remote --symref "file://$(pwd)/file_parent" >expect &&
 	test_cmp expect actual
@@ -599,6 +599,22 @@
 	test_commit -C client three
 }
 
+test_expect_success 'usage: --negotiate-only without --negotiation-tip' '
+	SERVER="server" &&
+	URI="file://$(pwd)/server" &&
+
+	setup_negotiate_only "$SERVER" "$URI" &&
+
+	cat >err.expect <<-\EOF &&
+	fatal: --negotiate-only needs one or more --negotiate-tip=*
+	EOF
+
+	test_must_fail git -c protocol.version=2 -C client fetch \
+		--negotiate-only \
+		origin 2>err.actual &&
+	test_cmp err.expect err.actual
+'
+
 test_expect_success 'file:// --negotiate-only' '
 	SERVER="server" &&
 	URI="file://$(pwd)/server" &&
diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh
index e9e4716..2200985 100755
--- a/t/t5703-upload-pack-ref-in-want.sh
+++ b/t/t5703-upload-pack-ref-in-want.sh
@@ -40,6 +40,30 @@
 	fi
 }
 
+# Write a complete fetch command to stdout, suitable for use with `test-tool
+# pkt-line`. "want-ref", "want", and "have" lines are read from stdin.
+#
+# Examples:
+#
+# write_fetch_command <<-EOF
+# want-ref refs/heads/main
+# have $(git rev-parse a)
+# EOF
+#
+# write_fetch_command <<-EOF
+# want $(git rev-parse b)
+# have $(git rev-parse a)
+# EOF
+#
+write_fetch_command () {
+	write_command fetch &&
+	echo "0001" &&
+	echo "no-progress" &&
+	cat &&
+	echo "done" &&
+	echo "0000"
+}
+
 # c(o/foo) d(o/bar)
 #        \ /
 #         b   e(baz)  f(main)
@@ -77,15 +101,11 @@
 '
 
 test_expect_success 'invalid want-ref line' '
-	test-tool pkt-line pack >in <<-EOF &&
-	$(write_command fetch)
-	0001
-	no-progress
+	write_fetch_command >pkt <<-EOF &&
 	want-ref refs/heads/non-existent
-	done
-	0000
 	EOF
 
+	test-tool pkt-line pack <pkt >in &&
 	test_must_fail test-tool serve-v2 --stateless-rpc 2>out <in &&
 	grep "unknown ref" out
 '
@@ -97,16 +117,11 @@
 	EOF
 	git rev-parse f >expected_commits &&
 
-	oid=$(git rev-parse a) &&
-	test-tool pkt-line pack >in <<-EOF &&
-	$(write_command fetch)
-	0001
-	no-progress
+	write_fetch_command >pkt <<-EOF &&
 	want-ref refs/heads/main
-	have $oid
-	done
-	0000
+	have $(git rev-parse a)
 	EOF
+	test-tool pkt-line pack <pkt >in &&
 
 	test-tool serve-v2 --stateless-rpc >out <in &&
 	check_output
@@ -121,17 +136,12 @@
 	EOF
 	git rev-parse c d >expected_commits &&
 
-	oid=$(git rev-parse b) &&
-	test-tool pkt-line pack >in <<-EOF &&
-	$(write_command fetch)
-	0001
-	no-progress
+	write_fetch_command >pkt <<-EOF &&
 	want-ref refs/heads/o/foo
 	want-ref refs/heads/o/bar
-	have $oid
-	done
-	0000
+	have $(git rev-parse b)
 	EOF
+	test-tool pkt-line pack <pkt >in &&
 
 	test-tool serve-v2 --stateless-rpc >out <in &&
 	check_output
@@ -144,16 +154,12 @@
 	EOF
 	git rev-parse e f >expected_commits &&
 
-	test-tool pkt-line pack >in <<-EOF &&
-	$(write_command fetch)
-	0001
-	no-progress
+	write_fetch_command >pkt <<-EOF &&
 	want-ref refs/heads/main
 	want $(git rev-parse e)
 	have $(git rev-parse a)
-	done
-	0000
 	EOF
+	test-tool pkt-line pack <pkt >in &&
 
 	test-tool serve-v2 --stateless-rpc >out <in &&
 	check_output
@@ -166,16 +172,11 @@
 	EOF
 	>expected_commits &&
 
-	oid=$(git rev-parse c) &&
-	test-tool pkt-line pack >in <<-EOF &&
-	$(write_command fetch)
-	0001
-	no-progress
+	write_fetch_command >pkt <<-EOF &&
 	want-ref refs/heads/o/foo
-	have $oid
-	done
-	0000
+	have $(git rev-parse c)
 	EOF
+	test-tool pkt-line pack <pkt >in &&
 
 	test-tool serve-v2 --stateless-rpc >out <in &&
 	check_output
@@ -298,6 +299,141 @@
 	grep "want-ref refs/heads/o/bar" log
 '
 
+REPO="$(pwd)/repo-ns"
+
+test_expect_success 'setup namespaced repo' '
+	(
+		git init -b main "$REPO" &&
+		cd "$REPO" &&
+		test_commit a &&
+		test_commit b &&
+		git checkout a &&
+		test_commit c &&
+		git checkout a &&
+		test_commit d &&
+		git update-ref refs/heads/ns-no b &&
+		git update-ref refs/namespaces/ns/refs/heads/ns-yes c &&
+		git update-ref refs/namespaces/ns/refs/heads/hidden d
+	) &&
+	git -C "$REPO" config uploadpack.allowRefInWant true
+'
+
+test_expect_success 'with namespace: want-ref is considered relative to namespace' '
+	wanted_ref=refs/heads/ns-yes &&
+
+	oid=$(git -C "$REPO" rev-parse "refs/namespaces/ns/$wanted_ref") &&
+	cat >expected_refs <<-EOF &&
+	$oid $wanted_ref
+	EOF
+	cat >expected_commits <<-EOF &&
+	$oid
+	$(git -C "$REPO" rev-parse a)
+	EOF
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	GIT_NAMESPACE=ns test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	check_output
+'
+
+test_expect_success 'with namespace: want-ref outside namespace is unknown' '
+	wanted_ref=refs/heads/ns-no &&
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	test_must_fail env GIT_NAMESPACE=ns \
+		test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	grep "unknown ref" out
+'
+
+# Cross-check refs/heads/ns-no indeed exists
+test_expect_success 'without namespace: want-ref outside namespace succeeds' '
+	wanted_ref=refs/heads/ns-no &&
+
+	oid=$(git -C "$REPO" rev-parse $wanted_ref) &&
+	cat >expected_refs <<-EOF &&
+	$oid $wanted_ref
+	EOF
+	cat >expected_commits <<-EOF &&
+	$oid
+	$(git -C "$REPO" rev-parse a)
+	EOF
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	check_output
+'
+
+test_expect_success 'with namespace: hideRefs is matched, relative to namespace' '
+	wanted_ref=refs/heads/hidden &&
+	git -C "$REPO" config transfer.hideRefs $wanted_ref &&
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	test_must_fail env GIT_NAMESPACE=ns \
+		test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	grep "unknown ref" out
+'
+
+# Cross-check refs/heads/hidden indeed exists
+test_expect_success 'with namespace: want-ref succeeds if hideRefs is removed' '
+	wanted_ref=refs/heads/hidden &&
+	git -C "$REPO" config --unset transfer.hideRefs $wanted_ref &&
+
+	oid=$(git -C "$REPO" rev-parse "refs/namespaces/ns/$wanted_ref") &&
+	cat >expected_refs <<-EOF &&
+	$oid $wanted_ref
+	EOF
+	cat >expected_commits <<-EOF &&
+	$oid
+	$(git -C "$REPO" rev-parse a)
+	EOF
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	GIT_NAMESPACE=ns test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	check_output
+'
+
+test_expect_success 'without namespace: relative hideRefs does not match' '
+	wanted_ref=refs/namespaces/ns/refs/heads/hidden &&
+	git -C "$REPO" config transfer.hideRefs refs/heads/hidden &&
+
+	oid=$(git -C "$REPO" rev-parse $wanted_ref) &&
+	cat >expected_refs <<-EOF &&
+	$oid $wanted_ref
+	EOF
+	cat >expected_commits <<-EOF &&
+	$oid
+	$(git -C "$REPO" rev-parse a)
+	EOF
+
+	write_fetch_command >pkt <<-EOF &&
+	want-ref $wanted_ref
+	EOF
+	test-tool pkt-line pack <pkt >in &&
+
+	test-tool -C "$REPO" serve-v2 --stateless-rpc >out <in &&
+	check_output
+'
+
+
 . "$TEST_DIRECTORY"/lib-httpd.sh
 start_httpd
 
diff --git a/t/t5705-session-id-in-capabilities.sh b/t/t5705-session-id-in-capabilities.sh
index f1d189d..eb8c79a 100755
--- a/t/t5705-session-id-in-capabilities.sh
+++ b/t/t5705-session-id-in-capabilities.sh
@@ -73,6 +73,17 @@
 		grep \"key\":\"server-sid\" tr2-client-events &&
 		grep \"key\":\"client-sid\" tr2-server-events
 	'
+
+	test_expect_success "client & server log negotiated version (v${PROTO})" '
+		test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
+		cp -r "$LOCAL_PRISTINE" local &&
+		GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
+		git -c protocol.version=$PROTO -C local fetch \
+			--upload-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-upload-pack" \
+			origin &&
+		grep \"key\":\"negotiated-version\",\"value\":\"$PROTO\" tr2-client-events &&
+		grep \"key\":\"negotiated-version\",\"value\":\"$PROTO\" tr2-server-events
+	'
 done
 
 test_done
diff --git a/t/t6000-rev-list-misc.sh b/t/t6000-rev-list-misc.sh
index 12def7b..ef849e5 100755
--- a/t/t6000-rev-list-misc.sh
+++ b/t/t6000-rev-list-misc.sh
@@ -169,4 +169,35 @@
 	test_line_count = $count actual
 '
 
+test_expect_success 'rev-list --unsorted-input results in different sorting' '
+	git rev-list --unsorted-input HEAD HEAD~ >first &&
+	git rev-list --unsorted-input HEAD~ HEAD >second &&
+	! test_cmp first second &&
+	sort first >first.sorted &&
+	sort second >second.sorted &&
+	test_cmp first.sorted second.sorted
+'
+
+test_expect_success 'rev-list --unsorted-input incompatible with --no-walk' '
+	cat >expect <<-EOF &&
+		fatal: --no-walk is incompatible with --unsorted-input
+	EOF
+	test_must_fail git rev-list --unsorted-input --no-walk HEAD 2>error &&
+	test_cmp expect error &&
+	test_must_fail git rev-list --unsorted-input --no-walk=sorted HEAD 2>error &&
+	test_cmp expect error &&
+	test_must_fail git rev-list --unsorted-input --no-walk=unsorted HEAD 2>error &&
+	test_cmp expect error &&
+
+	cat >expect <<-EOF &&
+		fatal: --unsorted-input is incompatible with --no-walk
+	EOF
+	test_must_fail git rev-list --no-walk --unsorted-input HEAD 2>error &&
+	test_cmp expect error &&
+	test_must_fail git rev-list --no-walk=sorted --unsorted-input HEAD 2>error &&
+	test_cmp expect error &&
+	test_must_fail git rev-list --no-walk=unsorted --unsorted-input HEAD 2>error &&
+	test_cmp expect error
+'
+
 test_done
diff --git a/t/t6001-rev-list-graft.sh b/t/t6001-rev-list-graft.sh
index 90d93f7..7294147 100755
--- a/t/t6001-rev-list-graft.sh
+++ b/t/t6001-rev-list-graft.sh
@@ -23,7 +23,8 @@
 	git commit -a -m "Third in one history." &&
 	A2=$(git rev-parse --verify HEAD) &&
 
-	rm -f .git/refs/heads/main .git/index &&
+	git update-ref -d refs/heads/main &&
+	rm -f .git/index &&
 
 	echo >fileA fileA again &&
 	echo >subdir/fileB fileB again &&
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index 35a2f62..41d0ca0 100755
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -41,22 +41,59 @@
 	echo "$added_iso88591" | git commit -F - &&
 	head1=$(git rev-parse --verify HEAD) &&
 	head1_short=$(git rev-parse --verify --short $head1) &&
+	head1_short4=$(git rev-parse --verify --short=4 $head1) &&
 	tree1=$(git rev-parse --verify HEAD:) &&
 	tree1_short=$(git rev-parse --verify --short $tree1) &&
 	echo "$changed" > foo &&
 	echo "$changed_iso88591" | git commit -a -F - &&
 	head2=$(git rev-parse --verify HEAD) &&
 	head2_short=$(git rev-parse --verify --short $head2) &&
+	head2_short4=$(git rev-parse --verify --short=4 $head2) &&
 	tree2=$(git rev-parse --verify HEAD:) &&
 	tree2_short=$(git rev-parse --verify --short $tree2) &&
 	git config --unset i18n.commitEncoding
 '
 
-# usage: test_format name format_string [failure] <expected_output
+# usage: test_format [argument...] name format_string [failure] <expected_output
 test_format () {
+	local args=
+	while true
+	do
+		case "$1" in
+		--*)
+			args="$args $1"
+			shift;;
+		*)
+			break;;
+		esac
+	done
 	cat >expect.$1
 	test_expect_${3:-success} "format $1" "
-		git rev-list --pretty=format:'$2' main >output.$1 &&
+		git rev-list $args --pretty=format:'$2' main >output.$1 &&
+		test_cmp expect.$1 output.$1
+	"
+}
+
+# usage: test_pretty [argument...] name format_name [failure] <expected_output
+test_pretty () {
+	local args=
+	while true
+	do
+		case "$1" in
+		--*)
+			args="$args $1"
+			shift;;
+		*)
+			break;;
+		esac
+	done
+	cat >expect.$1
+	test_expect_${3:-success} "pretty $1 (without --no-commit-header)" "
+		git rev-list $args --pretty='$2' main >output.$1 &&
+		test_cmp expect.$1 output.$1
+	"
+	test_expect_${3:-success} "pretty $1 (with --no-commit-header)" "
+		git rev-list $args --no-commit-header --pretty='$2' main >output.$1 &&
 		test_cmp expect.$1 output.$1
 	"
 }
@@ -93,6 +130,20 @@
 $head1_short
 EOF
 
+test_format --no-commit-header hash-no-header %H%n%h <<EOF
+$head2
+$head2_short
+$head1
+$head1_short
+EOF
+
+test_format --abbrev-commit --abbrev=0 --no-commit-header hash-no-header-abbrev %H%n%h <<EOF
+$head2
+$head2_short4
+$head1
+$head1_short4
+EOF
+
 test_format tree %T%n%t <<EOF
 commit $head2
 $tree2
@@ -181,6 +232,31 @@
 
 EOF
 
+test_format --no-commit-header raw-body-no-header %B <<EOF
+$changed
+
+$added
+
+EOF
+
+test_pretty oneline oneline <<EOF
+$head2 $changed
+$head1 $added
+EOF
+
+test_pretty short short <<EOF
+commit $head2
+Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
+
+    $changed
+
+commit $head1
+Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
+
+    $added
+
+EOF
+
 test_expect_success 'basic colors' '
 	cat >expect <<-EOF &&
 	commit $head2
diff --git a/t/t6020-bundle-misc.sh b/t/t6020-bundle-misc.sh
index 881f72f..b13e8a5 100755
--- a/t/t6020-bundle-misc.sh
+++ b/t/t6020-bundle-misc.sh
@@ -80,31 +80,46 @@
 	eval $var=$oid
 }
 
+get_abbrev_oid () {
+	oid=$1 &&
+	suffix=${oid#???????} &&
+	oid=${oid%$suffix} &&
+	if test -n "$oid"
+	then
+		echo "$oid"
+	else
+		echo "undefined-oid"
+	fi
+}
+
 # Format the output of git commands to make a user-friendly and stable
 # text.  We can easily prepare the expect text without having to worry
-# about future changes of the commit ID and spaces of the output.
+# about future changes of the commit ID.
 make_user_friendly_and_stable_output () {
 	sed \
-		-e "s/${A%${A#???????}}[0-9a-f]*/<COMMIT-A>/g" \
-		-e "s/${B%${B#???????}}[0-9a-f]*/<COMMIT-B>/g" \
-		-e "s/${C%${C#???????}}[0-9a-f]*/<COMMIT-C>/g" \
-		-e "s/${D%${D#???????}}[0-9a-f]*/<COMMIT-D>/g" \
-		-e "s/${E%${E#???????}}[0-9a-f]*/<COMMIT-E>/g" \
-		-e "s/${F%${F#???????}}[0-9a-f]*/<COMMIT-F>/g" \
-		-e "s/${G%${G#???????}}[0-9a-f]*/<COMMIT-G>/g" \
-		-e "s/${H%${H#???????}}[0-9a-f]*/<COMMIT-H>/g" \
-		-e "s/${I%${I#???????}}[0-9a-f]*/<COMMIT-I>/g" \
-		-e "s/${J%${J#???????}}[0-9a-f]*/<COMMIT-J>/g" \
-		-e "s/${K%${K#???????}}[0-9a-f]*/<COMMIT-K>/g" \
-		-e "s/${L%${L#???????}}[0-9a-f]*/<COMMIT-L>/g" \
-		-e "s/${M%${M#???????}}[0-9a-f]*/<COMMIT-M>/g" \
-		-e "s/${N%${N#???????}}[0-9a-f]*/<COMMIT-N>/g" \
-		-e "s/${O%${O#???????}}[0-9a-f]*/<COMMIT-O>/g" \
-		-e "s/${P%${P#???????}}[0-9a-f]*/<COMMIT-P>/g" \
-		-e "s/${TAG1%${TAG1#???????}}[0-9a-f]*/<TAG-1>/g" \
-		-e "s/${TAG2%${TAG2#???????}}[0-9a-f]*/<TAG-2>/g" \
-		-e "s/${TAG3%${TAG3#???????}}[0-9a-f]*/<TAG-3>/g" \
-		-e "s/ *\$//"
+		-e "s/$(get_abbrev_oid $A)[0-9a-f]*/<COMMIT-A>/g" \
+		-e "s/$(get_abbrev_oid $B)[0-9a-f]*/<COMMIT-B>/g" \
+		-e "s/$(get_abbrev_oid $C)[0-9a-f]*/<COMMIT-C>/g" \
+		-e "s/$(get_abbrev_oid $D)[0-9a-f]*/<COMMIT-D>/g" \
+		-e "s/$(get_abbrev_oid $E)[0-9a-f]*/<COMMIT-E>/g" \
+		-e "s/$(get_abbrev_oid $F)[0-9a-f]*/<COMMIT-F>/g" \
+		-e "s/$(get_abbrev_oid $G)[0-9a-f]*/<COMMIT-G>/g" \
+		-e "s/$(get_abbrev_oid $H)[0-9a-f]*/<COMMIT-H>/g" \
+		-e "s/$(get_abbrev_oid $I)[0-9a-f]*/<COMMIT-I>/g" \
+		-e "s/$(get_abbrev_oid $J)[0-9a-f]*/<COMMIT-J>/g" \
+		-e "s/$(get_abbrev_oid $K)[0-9a-f]*/<COMMIT-K>/g" \
+		-e "s/$(get_abbrev_oid $L)[0-9a-f]*/<COMMIT-L>/g" \
+		-e "s/$(get_abbrev_oid $M)[0-9a-f]*/<COMMIT-M>/g" \
+		-e "s/$(get_abbrev_oid $N)[0-9a-f]*/<COMMIT-N>/g" \
+		-e "s/$(get_abbrev_oid $O)[0-9a-f]*/<COMMIT-O>/g" \
+		-e "s/$(get_abbrev_oid $P)[0-9a-f]*/<COMMIT-P>/g" \
+		-e "s/$(get_abbrev_oid $TAG1)[0-9a-f]*/<TAG-1>/g" \
+		-e "s/$(get_abbrev_oid $TAG2)[0-9a-f]*/<TAG-2>/g" \
+		-e "s/$(get_abbrev_oid $TAG3)[0-9a-f]*/<TAG-3>/g"
+}
+
+format_and_save_expect () {
+	sed -e 's/Z$//' >expect
 }
 
 #            (C)   (D, pull/1/head, topic/1)
@@ -179,11 +194,11 @@
 
 	git bundle verify special-rev.bdl |
 		make_user_friendly_and_stable_output >actual &&
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	The bundle contains this ref:
 	<COMMIT-P> refs/heads/main
 	The bundle requires this ref:
-	<COMMIT-O>
+	<COMMIT-O> Z
 	EOF
 	test_cmp expect actual &&
 
@@ -200,12 +215,12 @@
 
 	git bundle verify max-count.bdl |
 		make_user_friendly_and_stable_output >actual &&
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	The bundle contains these 2 refs:
 	<COMMIT-P> refs/heads/main
 	<TAG-1> refs/tags/v1
 	The bundle requires this ref:
-	<COMMIT-O>
+	<COMMIT-O> Z
 	EOF
 	test_cmp expect actual &&
 
@@ -225,7 +240,7 @@
 
 	git bundle verify since.bdl |
 		make_user_friendly_and_stable_output >actual &&
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	The bundle contains these 5 refs:
 	<COMMIT-P> refs/heads/main
 	<COMMIT-N> refs/heads/release
@@ -233,8 +248,8 @@
 	<TAG-3> refs/tags/v3
 	<COMMIT-P> HEAD
 	The bundle requires these 2 refs:
-	<COMMIT-M>
-	<COMMIT-K>
+	<COMMIT-M> Z
+	<COMMIT-K> Z
 	EOF
 	test_cmp expect actual &&
 
@@ -293,13 +308,13 @@
 		--stdin \
 		release <input &&
 
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	The bundle contains this ref:
 	<COMMIT-N> refs/heads/release
 	The bundle requires these 3 refs:
-	<COMMIT-D>
-	<COMMIT-E>
-	<COMMIT-G>
+	<COMMIT-D> Z
+	<COMMIT-E> Z
+	<COMMIT-G> Z
 	EOF
 
 	git bundle verify 2.bdl |
@@ -317,11 +332,11 @@
 test_expect_success 'fail to verify bundle without prerequisites' '
 	git init --bare test1.git &&
 
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	error: Repository lacks these prerequisite commits:
-	error: <COMMIT-D>
-	error: <COMMIT-E>
-	error: <COMMIT-G>
+	error: <COMMIT-D> Z
+	error: <COMMIT-E> Z
+	error: <COMMIT-G> Z
 	EOF
 
 	test_must_fail git -C test1.git bundle verify ../2.bdl 2>&1 |
@@ -352,13 +367,13 @@
 		--stdin \
 		main HEAD <input &&
 
-	cat >expect <<-\EOF &&
+	format_and_save_expect <<-\EOF &&
 	The bundle contains these 2 refs:
 	<COMMIT-P> refs/heads/main
 	<COMMIT-P> HEAD
 	The bundle requires these 2 refs:
-	<COMMIT-M>
-	<COMMIT-K>
+	<COMMIT-M> Z
+	<COMMIT-K> Z
 	EOF
 
 	git bundle verify 3.bdl |
diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh
index e33d512..2500acc 100755
--- a/t/t6050-replace.sh
+++ b/t/t6050-replace.sh
@@ -132,7 +132,7 @@
 EOF
 
 test_expect_success 'tag replaced commit' '
-     git mktag <tag.sig >.git/refs/tags/mytag
+     git update-ref refs/tags/mytag $(git mktag <tag.sig)
 '
 
 test_expect_success '"git fsck" works' '
diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh
index 88fddc9..bae2419 100755
--- a/t/t6120-describe.sh
+++ b/t/t6120-describe.sh
@@ -17,16 +17,29 @@
 . ./test-lib.sh
 
 check_describe () {
+	indir= &&
+	while test $# != 0
+	do
+		case "$1" in
+		-C)
+			indir="$2"
+			shift
+			;;
+		*)
+			break
+			;;
+		esac
+		shift
+	done &&
+	indir=${indir:+"$indir"/} &&
 	expect="$1"
 	shift
 	describe_opts="$@"
 	test_expect_success "describe $describe_opts" '
-	R=$(git describe $describe_opts 2>err.actual) &&
-	case "$R" in
-	$expect)	echo happy ;;
-	*)	echo "Oops - $R is not $expect" &&
-		false ;;
-	esac
+		git ${indir:+ -C "$indir"} describe $describe_opts >raw &&
+		sed -e "s/-g[0-9a-f]*\$/-gHASH/" <raw >actual &&
+		echo "$expect" >expect &&
+		test_cmp expect actual
 	'
 }
 
@@ -59,29 +72,29 @@
 	test_commit --no-tag x file
 '
 
-check_describe A-* HEAD
-check_describe A-* HEAD^
-check_describe R-* HEAD^^
-check_describe A-* HEAD^^2
+check_describe A-8-gHASH HEAD
+check_describe A-7-gHASH HEAD^
+check_describe R-2-gHASH HEAD^^
+check_describe A-3-gHASH HEAD^^2
 check_describe B HEAD^^2^
-check_describe R-* HEAD^^^
+check_describe R-1-gHASH HEAD^^^
 
-check_describe c-* --tags HEAD
-check_describe c-* --tags HEAD^
-check_describe e-* --tags HEAD^^
-check_describe c-* --tags HEAD^^2
+check_describe c-7-gHASH --tags HEAD
+check_describe c-6-gHASH --tags HEAD^
+check_describe e-1-gHASH --tags HEAD^^
+check_describe c-2-gHASH --tags HEAD^^2
 check_describe B --tags HEAD^^2^
 check_describe e --tags HEAD^^^
 
 check_describe heads/main --all HEAD
-check_describe tags/c-* --all HEAD^
+check_describe tags/c-6-gHASH --all HEAD^
 check_describe tags/e --all HEAD^^^
 
-check_describe B-0-* --long HEAD^^2^
-check_describe A-3-* --long HEAD^^2
+check_describe B-0-gHASH --long HEAD^^2^
+check_describe A-3-gHASH --long HEAD^^2
 
-check_describe c-7-* --tags
-check_describe e-3-* --first-parent --tags
+check_describe c-7-gHASH --tags
+check_describe e-3-gHASH --first-parent --tags
 
 test_expect_success 'describe --contains defaults to HEAD without commit-ish' '
 	echo "A^0" >expect &&
@@ -92,20 +105,18 @@
 '
 
 check_describe tags/A --all A^0
-test_expect_success 'no warning was displayed for A' '
-	test_must_be_empty err.actual
-'
 
-test_expect_success 'rename tag A to Q locally' '
-	mv .git/refs/tags/A .git/refs/tags/Q
-'
-cat - >err.expect <<EOF
-warning: tag 'Q' is externally known as 'A'
-EOF
-check_describe A-* HEAD
-test_expect_success 'warning was displayed for Q' '
-	test_cmp err.expect err.actual
-'
+test_expect_success 'renaming tag A to Q locally produces a warning' "
+	git update-ref refs/tags/Q $(git rev-parse refs/tags/A) &&
+	git update-ref -d refs/tags/A &&
+	git describe HEAD 2>err >out &&
+	cat >expected <<-\EOF &&
+	warning: tag 'Q' is externally known as 'A'
+	EOF
+	test_cmp expected err &&
+	grep -E '^A-8-g[0-9a-f]+$' out
+"
+
 test_expect_success 'misnamed annotated tag forces long output' '
 	description=$(git describe --no-long Q^0) &&
 	expr "$description" : "A-0-g[0-9a-f]*$" &&
@@ -125,50 +136,51 @@
 '
 
 test_expect_success 'rename tag Q back to A' '
-	mv .git/refs/tags/Q .git/refs/tags/A
+	git update-ref refs/tags/A $(git rev-parse refs/tags/Q) &&
+	git update-ref -d refs/tags/Q
 '
 
 test_expect_success 'pack tag refs' 'git pack-refs'
-check_describe A-* HEAD
+check_describe A-8-gHASH HEAD
 
 test_expect_success 'describe works from outside repo using --git-dir' '
 	git clone --bare "$TRASH_DIRECTORY" "$TRASH_DIRECTORY/bare" &&
 	git --git-dir "$TRASH_DIRECTORY/bare" describe >out &&
-	grep -E "^A-[1-9][0-9]?-g[0-9a-f]+$" out
+	grep -E "^A-8-g[0-9a-f]+$" out
 '
 
-check_describe "A-*[0-9a-f]" --dirty
+check_describe "A-8-gHASH" --dirty
 
 test_expect_success 'describe --dirty with --work-tree' '
 	(
 		cd "$TEST_DIRECTORY" &&
 		git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
 	) &&
-	grep -E "^A-[1-9][0-9]?-g[0-9a-f]+$" out
+	grep -E "^A-8-g[0-9a-f]+$" out
 '
 
 test_expect_success 'set-up dirty work tree' '
 	echo >>file
 '
 
-check_describe "A-*[0-9a-f]-dirty" --dirty
-
 test_expect_success 'describe --dirty with --work-tree (dirty)' '
+	git describe --dirty >expected &&
 	(
 		cd "$TEST_DIRECTORY" &&
 		git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty >"$TRASH_DIRECTORY/out"
 	) &&
-	grep -E "^A-[1-9][0-9]?-g[0-9a-f]+-dirty$" out
+	grep -E "^A-8-g[0-9a-f]+-dirty$" out &&
+	test_cmp expected out
 '
 
-check_describe "A-*[0-9a-f].mod" --dirty=.mod
-
 test_expect_success 'describe --dirty=.mod with --work-tree (dirty)' '
+	git describe --dirty=.mod >expected &&
 	(
 		cd "$TEST_DIRECTORY" &&
 		git --git-dir "$TRASH_DIRECTORY/.git" --work-tree "$TRASH_DIRECTORY" describe --dirty=.mod >"$TRASH_DIRECTORY/out"
 	) &&
-	grep -E "^A-[1-9][0-9]?-g[0-9a-f]+.mod$" out
+	grep -E "^A-8-g[0-9a-f]+.mod$" out &&
+	test_cmp expected out
 '
 
 test_expect_success 'describe --dirty HEAD' '
@@ -191,21 +203,21 @@
 
 '
 
-check_describe "test-annotated-*" --match="test-*"
+check_describe "test-annotated-3-gHASH" --match="test-*"
 
-check_describe "test1-lightweight-*" --tags --match="test1-*"
+check_describe "test1-lightweight-2-gHASH" --tags --match="test1-*"
 
-check_describe "test2-lightweight-*" --tags --match="test2-*"
+check_describe "test2-lightweight-1-gHASH" --tags --match="test2-*"
 
-check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^
+check_describe "test2-lightweight-0-gHASH" --long --tags --match="test2-*" HEAD^
 
-check_describe "test2-lightweight-*" --long --tags --match="test1-*" --match="test2-*" HEAD^
+check_describe "test2-lightweight-0-gHASH" --long --tags --match="test1-*" --match="test2-*" HEAD^
 
-check_describe "test2-lightweight-*" --long --tags --match="test1-*" --no-match --match="test2-*" HEAD^
+check_describe "test2-lightweight-0-gHASH" --long --tags --match="test1-*" --no-match --match="test2-*" HEAD^
 
-check_describe "test1-lightweight-*" --long --tags --match="test1-*" --match="test3-*" HEAD
+check_describe "test1-lightweight-2-gHASH" --long --tags --match="test1-*" --match="test3-*" HEAD
 
-check_describe "test1-lightweight-*" --long --tags --match="test3-*" --match="test1-*" HEAD
+check_describe "test1-lightweight-2-gHASH" --long --tags --match="test3-*" --match="test1-*" HEAD
 
 test_expect_success 'set-up branches' '
 	git branch branch_A A &&
@@ -215,11 +227,11 @@
 	git update-ref refs/original/original_branch_A test-annotated~2
 '
 
-check_describe "heads/branch_A*" --all --match="branch_*" --exclude="branch_C" HEAD
+check_describe "heads/branch_A-11-gHASH" --all --match="branch_*" --exclude="branch_C" HEAD
 
-check_describe "remotes/origin/remote_branch_A*" --all --match="origin/remote_branch_*" --exclude="origin/remote_branch_C" HEAD
+check_describe "remotes/origin/remote_branch_A-11-gHASH" --all --match="origin/remote_branch_*" --exclude="origin/remote_branch_C" HEAD
 
-check_describe "original/original_branch_A*" --all test-annotated~1
+check_describe "original/original_branch_A-6-gHASH" --all test-annotated~1
 
 test_expect_success '--match does not work for other types' '
 	test_must_fail git describe --all --match="*original_branch_*" test-annotated~1
@@ -474,7 +486,7 @@
 #  o-----o---o----x
 #        A
 #
-test_expect_success 'describe commits with disjoint bases' '
+test_expect_success 'setup: describe commits with disjoint bases' '
 	git init disjoint1 &&
 	(
 		cd disjoint1 &&
@@ -487,19 +499,19 @@
 		git checkout --orphan branch && rm file &&
 		echo B > file2 && git add file2 && git commit -m B &&
 		git tag B -a -m B &&
-		git merge --no-ff --allow-unrelated-histories main -m x &&
-
-		check_describe "A-3-*" HEAD
+		git merge --no-ff --allow-unrelated-histories main -m x
 	)
 '
 
+check_describe -C disjoint1 "A-3-gHASH" HEAD
+
 #           B
 #   o---o---o------------.
 #                         \
 #                  o---o---x
 #                  A
 #
-test_expect_success 'describe commits with disjoint bases 2' '
+test_expect_success 'setup: describe commits with disjoint bases 2' '
 	git init disjoint2 &&
 	(
 		cd disjoint2 &&
@@ -513,10 +525,10 @@
 		echo o >> file2 && git add file2 && GIT_COMMITTER_DATE="2020-01-01 15:01" git commit -m o &&
 		echo B >> file2 && git add file2 && GIT_COMMITTER_DATE="2020-01-01 15:02" git commit -m B &&
 		git tag B -a -m B &&
-		git merge --no-ff --allow-unrelated-histories main -m x &&
-
-		check_describe "B-3-*" HEAD
+		git merge --no-ff --allow-unrelated-histories main -m x
 	)
 '
 
+check_describe -C disjoint2 "B-3-gHASH" HEAD
+
 test_done
diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh
index 9e02140..80679d5 100755
--- a/t/t6300-for-each-ref.sh
+++ b/t/t6300-for-each-ref.sh
@@ -59,18 +59,25 @@
 	# Automatically test "contents:size" atom after testing "contents"
 	if test "$2" = "contents"
 	then
-		case $(git cat-file -t "$ref") in
-		tag)
-			# We cannot use $3 as it expects sanitize_pgp to run
-			expect=$(git cat-file tag $ref | tail -n +6 | wc -c) ;;
-		tree | blob)
-			expect='' ;;
-		commit)
-			expect=$(printf '%s' "$3" | wc -c) ;;
-		esac
-		# Leave $expect unquoted to lose possible leading whitespaces
-		echo $expect >expected
+		# for commit leg, $3 is changed there
+		expect=$(printf '%s' "$3" | wc -c)
 		test_expect_${4:-success} $PREREQ "basic atom: $1 contents:size" '
+			type=$(git cat-file -t "$ref") &&
+			case $type in
+			tag)
+				# We cannot use $3 as it expects sanitize_pgp to run
+				git cat-file tag $ref >out &&
+				expect=$(tail -n +6 out | wc -c) &&
+				rm -f out ;;
+			tree | blob)
+				expect="" ;;
+			commit)
+				: "use the calculated expect" ;;
+			*)
+				BUG "unknown object type" ;;
+			esac &&
+			# Leave $expect unquoted to lose possible leading whitespaces
+			echo $expect >expected &&
 			git for-each-ref --format="%(contents:size)" "$ref" >actual &&
 			test_cmp expected actual
 		'
@@ -130,6 +137,8 @@
 test_atom head numparent 0
 test_atom head object ''
 test_atom head type ''
+test_atom head raw "$(git cat-file commit refs/heads/main)
+"
 test_atom head '*objectname' ''
 test_atom head '*objecttype' ''
 test_atom head author 'A U Thor <author@example.com> 1151968724 +0200'
@@ -221,6 +230,15 @@
 '
 test_atom tag HEAD ' '
 
+test_expect_success 'basic atom: refs/tags/testtag *raw' '
+	git cat-file commit refs/tags/testtag^{} >expected &&
+	git for-each-ref --format="%(*raw)" refs/tags/testtag >actual &&
+	sanitize_pgp <expected >expected.clean &&
+	echo >>expected.clean &&
+	sanitize_pgp <actual >actual.clean &&
+	test_cmp expected.clean actual.clean
+'
+
 test_expect_success 'Check invalid atoms names are errors' '
 	test_must_fail git for-each-ref --format="%(INVALID)" refs/heads
 '
@@ -686,6 +704,15 @@
 test_atom refs/tags/signed-empty contents:signature "$sig"
 test_atom refs/tags/signed-empty contents "$sig"
 
+test_expect_success GPG 'basic atom: refs/tags/signed-empty raw' '
+	git cat-file tag refs/tags/signed-empty >expected &&
+	git for-each-ref --format="%(raw)" refs/tags/signed-empty >actual &&
+	sanitize_pgp <expected >expected.clean &&
+	echo >>expected.clean &&
+	sanitize_pgp <actual >actual.clean &&
+	test_cmp expected.clean actual.clean
+'
+
 test_atom refs/tags/signed-short subject 'subject line'
 test_atom refs/tags/signed-short subject:sanitize 'subject-line'
 test_atom refs/tags/signed-short contents:subject 'subject line'
@@ -695,6 +722,15 @@
 test_atom refs/tags/signed-short contents "subject line
 $sig"
 
+test_expect_success GPG 'basic atom: refs/tags/signed-short raw' '
+	git cat-file tag refs/tags/signed-short >expected &&
+	git for-each-ref --format="%(raw)" refs/tags/signed-short >actual &&
+	sanitize_pgp <expected >expected.clean &&
+	echo >>expected.clean &&
+	sanitize_pgp <actual >actual.clean &&
+	test_cmp expected.clean actual.clean
+'
+
 test_atom refs/tags/signed-long subject 'subject line'
 test_atom refs/tags/signed-long subject:sanitize 'subject-line'
 test_atom refs/tags/signed-long contents:subject 'subject line'
@@ -708,6 +744,15 @@
 body contents
 $sig"
 
+test_expect_success GPG 'basic atom: refs/tags/signed-long raw' '
+	git cat-file tag refs/tags/signed-long >expected &&
+	git for-each-ref --format="%(raw)" refs/tags/signed-long >actual &&
+	sanitize_pgp <expected >expected.clean &&
+	echo >>expected.clean &&
+	sanitize_pgp <actual >actual.clean &&
+	test_cmp expected.clean actual.clean
+'
+
 test_expect_success 'set up refs pointing to tree and blob' '
 	git update-ref refs/mytrees/first refs/heads/main^{tree} &&
 	git update-ref refs/myblobs/first refs/heads/main:one
@@ -720,6 +765,16 @@
 test_atom refs/mytrees/first contents:signature ""
 test_atom refs/mytrees/first contents ""
 
+test_expect_success 'basic atom: refs/mytrees/first raw' '
+	git cat-file tree refs/mytrees/first >expected &&
+	echo >>expected &&
+	git for-each-ref --format="%(raw)" refs/mytrees/first >actual &&
+	test_cmp expected actual &&
+	git cat-file -s refs/mytrees/first >expected &&
+	git for-each-ref --format="%(raw:size)" refs/mytrees/first >actual &&
+	test_cmp expected actual
+'
+
 test_atom refs/myblobs/first subject ""
 test_atom refs/myblobs/first contents:subject ""
 test_atom refs/myblobs/first body ""
@@ -727,6 +782,189 @@
 test_atom refs/myblobs/first contents:signature ""
 test_atom refs/myblobs/first contents ""
 
+test_expect_success 'basic atom: refs/myblobs/first raw' '
+	git cat-file blob refs/myblobs/first >expected &&
+	echo >>expected &&
+	git for-each-ref --format="%(raw)" refs/myblobs/first >actual &&
+	test_cmp expected actual &&
+	git cat-file -s refs/myblobs/first >expected &&
+	git for-each-ref --format="%(raw:size)" refs/myblobs/first >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success 'set up refs pointing to binary blob' '
+	printf "a\0b\0c" >blob1 &&
+	printf "a\0c\0b" >blob2 &&
+	printf "\0a\0b\0c" >blob3 &&
+	printf "abc" >blob4 &&
+	printf "\0 \0 \0 " >blob5 &&
+	printf "\0 \0a\0 " >blob6 &&
+	printf "  " >blob7 &&
+	>blob8 &&
+	obj=$(git hash-object -w blob1) &&
+	git update-ref refs/myblobs/blob1 "$obj" &&
+	obj=$(git hash-object -w blob2) &&
+	git update-ref refs/myblobs/blob2 "$obj" &&
+	obj=$(git hash-object -w blob3) &&
+	git update-ref refs/myblobs/blob3 "$obj" &&
+	obj=$(git hash-object -w blob4) &&
+	git update-ref refs/myblobs/blob4 "$obj" &&
+	obj=$(git hash-object -w blob5) &&
+	git update-ref refs/myblobs/blob5 "$obj" &&
+	obj=$(git hash-object -w blob6) &&
+	git update-ref refs/myblobs/blob6 "$obj" &&
+	obj=$(git hash-object -w blob7) &&
+	git update-ref refs/myblobs/blob7 "$obj" &&
+	obj=$(git hash-object -w blob8) &&
+	git update-ref refs/myblobs/blob8 "$obj"
+'
+
+test_expect_success 'Verify sorts with raw' '
+	cat >expected <<-EOF &&
+	refs/myblobs/blob8
+	refs/myblobs/blob5
+	refs/myblobs/blob6
+	refs/myblobs/blob3
+	refs/myblobs/blob7
+	refs/mytrees/first
+	refs/myblobs/first
+	refs/myblobs/blob1
+	refs/myblobs/blob2
+	refs/myblobs/blob4
+	refs/heads/main
+	EOF
+	git for-each-ref --format="%(refname)" --sort=raw \
+		refs/heads/main refs/myblobs/ refs/mytrees/first >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success 'Verify sorts with raw:size' '
+	cat >expected <<-EOF &&
+	refs/myblobs/blob8
+	refs/myblobs/first
+	refs/myblobs/blob7
+	refs/heads/main
+	refs/myblobs/blob4
+	refs/myblobs/blob1
+	refs/myblobs/blob2
+	refs/myblobs/blob3
+	refs/myblobs/blob5
+	refs/myblobs/blob6
+	refs/mytrees/first
+	EOF
+	git for-each-ref --format="%(refname)" --sort=raw:size \
+		refs/heads/main refs/myblobs/ refs/mytrees/first >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success 'validate raw atom with %(if:equals)' '
+	cat >expected <<-EOF &&
+	not equals
+	not equals
+	not equals
+	not equals
+	not equals
+	not equals
+	refs/myblobs/blob4
+	not equals
+	not equals
+	not equals
+	not equals
+	not equals
+	EOF
+	git for-each-ref --format="%(if:equals=abc)%(raw)%(then)%(refname)%(else)not equals%(end)" \
+		refs/myblobs/ refs/heads/ >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success 'validate raw atom with %(if:notequals)' '
+	cat >expected <<-EOF &&
+	refs/heads/ambiguous
+	refs/heads/main
+	refs/heads/newtag
+	refs/myblobs/blob1
+	refs/myblobs/blob2
+	refs/myblobs/blob3
+	equals
+	refs/myblobs/blob5
+	refs/myblobs/blob6
+	refs/myblobs/blob7
+	refs/myblobs/blob8
+	refs/myblobs/first
+	EOF
+	git for-each-ref --format="%(if:notequals=abc)%(raw)%(then)%(refname)%(else)equals%(end)" \
+		refs/myblobs/ refs/heads/ >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success 'empty raw refs with %(if)' '
+	cat >expected <<-EOF &&
+	refs/myblobs/blob1 not empty
+	refs/myblobs/blob2 not empty
+	refs/myblobs/blob3 not empty
+	refs/myblobs/blob4 not empty
+	refs/myblobs/blob5 not empty
+	refs/myblobs/blob6 not empty
+	refs/myblobs/blob7 empty
+	refs/myblobs/blob8 empty
+	refs/myblobs/first not empty
+	EOF
+	git for-each-ref --format="%(refname) %(if)%(raw)%(then)not empty%(else)empty%(end)" \
+		refs/myblobs/ >actual &&
+	test_cmp expected actual
+'
+
+test_expect_success '%(raw) with --python must fail' '
+	test_must_fail git for-each-ref --format="%(raw)" --python
+'
+
+test_expect_success '%(raw) with --tcl must fail' '
+	test_must_fail git for-each-ref --format="%(raw)" --tcl
+'
+
+test_expect_success '%(raw) with --perl' '
+	git for-each-ref --format="\$name= %(raw);
+print \"\$name\"" refs/myblobs/blob1 --perl | perl >actual &&
+	cmp blob1 actual &&
+	git for-each-ref --format="\$name= %(raw);
+print \"\$name\"" refs/myblobs/blob3 --perl | perl >actual &&
+	cmp blob3 actual &&
+	git for-each-ref --format="\$name= %(raw);
+print \"\$name\"" refs/myblobs/blob8 --perl | perl >actual &&
+	cmp blob8 actual &&
+	git for-each-ref --format="\$name= %(raw);
+print \"\$name\"" refs/myblobs/first --perl | perl >actual &&
+	cmp one actual &&
+	git cat-file tree refs/mytrees/first > expected &&
+	git for-each-ref --format="\$name= %(raw);
+print \"\$name\"" refs/mytrees/first --perl | perl >actual &&
+	cmp expected actual
+'
+
+test_expect_success '%(raw) with --shell must fail' '
+	test_must_fail git for-each-ref --format="%(raw)" --shell
+'
+
+test_expect_success '%(raw) with --shell and --sort=raw must fail' '
+	test_must_fail git for-each-ref --format="%(raw)" --sort=raw --shell
+'
+
+test_expect_success '%(raw:size) with --shell' '
+	git for-each-ref --format="%(raw:size)" | while read line
+	do
+		echo "'\''$line'\''" >>expect
+	done &&
+	git for-each-ref --format="%(raw:size)" --shell >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'for-each-ref --format compare with cat-file --batch' '
+	git rev-parse refs/mytrees/first | git cat-file --batch >expected &&
+	git for-each-ref --format="%(objectname) %(objecttype) %(objectsize)
+%(raw)" refs/mytrees/first >actual &&
+	test_cmp expected actual
+'
+
 test_expect_success 'set up multiple-sort tags' '
 	for when in 100000 200000
 	do
@@ -980,6 +1218,10 @@
 	test_cmp expect actual.clean
 '
 
+test_expect_success 'basic atom: rest must fail' '
+	test_must_fail git for-each-ref --format="%(rest)" refs/heads/main
+'
+
 test_expect_success 'trailer parsing not fooled by --- line' '
 	git commit --allow-empty -F - <<-\EOF &&
 	this is the subject
diff --git a/t/t6400-merge-df.sh b/t/t6400-merge-df.sh
index 38700d2..57a67cf 100755
--- a/t/t6400-merge-df.sh
+++ b/t/t6400-merge-df.sh
@@ -82,13 +82,13 @@
 	git checkout delete^0 &&
 	test_must_fail git merge modify &&
 
-	test 5 -eq $(git ls-files -s | wc -l) &&
-	test 4 -eq $(git ls-files -u | wc -l) &&
+	test_stdout_line_count = 5 git ls-files -s &&
+	test_stdout_line_count = 4 git ls-files -u &&
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 0 -eq $(git ls-files -o | wc -l)
+		test_stdout_line_count = 0 git ls-files -o
 	else
-		test 1 -eq $(git ls-files -o | wc -l)
+		test_stdout_line_count = 1 git ls-files -o
 	fi &&
 
 	test_path_is_file letters/file &&
@@ -103,13 +103,13 @@
 
 	test_must_fail git merge delete &&
 
-	test 5 -eq $(git ls-files -s | wc -l) &&
-	test 4 -eq $(git ls-files -u | wc -l) &&
+	test_stdout_line_count = 5 git ls-files -s &&
+	test_stdout_line_count = 4 git ls-files -u &&
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 0 -eq $(git ls-files -o | wc -l)
+		test_stdout_line_count = 0 git ls-files -o
 	else
-		test 1 -eq $(git ls-files -o | wc -l)
+		test_stdout_line_count = 1 git ls-files -o
 	fi &&
 
 	test_path_is_file letters/file &&
diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
index 425dad9..3a32b1a 100755
--- a/t/t6402-merge-rename.sh
+++ b/t/t6402-merge-rename.sh
@@ -103,12 +103,10 @@
 test_expect_success 'pull renaming branch into unrenaming one' \
 '
 	git show-branch &&
-	test_expect_code 1 git pull . white &&
+	test_expect_code 1 git pull --no-rebase . white &&
 	git ls-files -s &&
-	git ls-files -u B >b.stages &&
-	test_line_count = 3 b.stages &&
-	git ls-files -s N >n.stages &&
-	test_line_count = 1 n.stages &&
+	test_stdout_line_count = 3 git ls-files -u B &&
+	test_stdout_line_count = 1 git ls-files -s N &&
 	sed -ne "/^g/{
 	p
 	q
@@ -121,11 +119,9 @@
 	rm -f B &&
 	git reset --hard &&
 	git checkout red &&
-	test_expect_code 1 git pull . white &&
-	git ls-files -u B >b.stages &&
-	test_line_count = 3 b.stages &&
-	git ls-files -s N >n.stages &&
-	test_line_count = 1 n.stages &&
+	test_expect_code 1 git pull --no-rebase . white &&
+	test_stdout_line_count = 3 git ls-files -u B &&
+	test_stdout_line_count = 1 git ls-files -s N &&
 	sed -ne "/^g/{
 	p
 	q
@@ -137,11 +133,9 @@
 '
 	git reset --hard &&
 	git show-branch &&
-	test_expect_code 1 git pull . main &&
-	git ls-files -u B >b.stages &&
-	test_line_count = 3 b.stages &&
-	git ls-files -s N >n.stages &&
-	test_line_count = 1 n.stages &&
+	test_expect_code 1 git pull --no-rebase . main &&
+	test_stdout_line_count = 3 git ls-files -u B &&
+	test_stdout_line_count = 1 git ls-files -s N &&
 	sed -ne "/^g/{
 	p
 	q
@@ -153,15 +147,11 @@
 '
 	git reset --hard &&
 	git show-branch &&
-	test_expect_code 1 git pull . blue &&
-	git ls-files -u A >a.stages &&
-	test_line_count = 1 a.stages &&
-	git ls-files -u B >b.stages &&
-	test_line_count = 1 b.stages &&
-	git ls-files -u C >c.stages &&
-	test_line_count = 1 c.stages &&
-	git ls-files -s N >n.stages &&
-	test_line_count = 1 n.stages &&
+	test_expect_code 1 git pull --no-rebase . blue &&
+	test_stdout_line_count = 1 git ls-files -u A &&
+	test_stdout_line_count = 1 git ls-files -u B &&
+	test_stdout_line_count = 1 git ls-files -u C &&
+	test_stdout_line_count = 1 git ls-files -s N &&
 	sed -ne "/^g/{
 	p
 	q
@@ -173,7 +163,7 @@
 	git reset --hard &&
 	git show-branch &&
 	echo >A this file should not matter &&
-	test_expect_code 1 git pull . white &&
+	test_expect_code 1 git pull --no-rebase . white &&
 	test_path_is_file A
 '
 
@@ -183,7 +173,7 @@
 	git show-branch &&
 	rm -f A &&
 	echo >A this file should not matter &&
-	test_expect_code 1 git pull . red &&
+	test_expect_code 1 git pull --no-rebase . red &&
 	test_path_is_file A
 '
 
@@ -193,7 +183,7 @@
 	git checkout -f main &&
 	git tag -f anchor &&
 	git show-branch &&
-	git pull . yellow &&
+	git pull --no-rebase . yellow &&
 	test_path_is_missing M &&
 	git reset --hard anchor
 '
@@ -220,7 +210,7 @@
 	echo >>M one line addition &&
 	cat M >M.saved &&
 	git update-index M &&
-	test_expect_code 128 git pull . yellow &&
+	test_expect_code 128 git pull --no-rebase . yellow &&
 	test_cmp M M.saved &&
 	rm -f M.saved
 '
@@ -232,7 +222,7 @@
 	git tag -f anchor &&
 	git show-branch &&
 	echo >M this file should not matter &&
-	git pull . main &&
+	git pull --no-rebase . main &&
 	test_path_is_file M &&
 	! {
 		git ls-files -s |
@@ -330,8 +320,8 @@
 		test_i18ngrep "Adding as dir~HEAD instead" output
 	fi &&
 
-	test 3 -eq "$(git ls-files -u | wc -l)" &&
-	test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
+	test_stdout_line_count = 3 git ls-files -u &&
+	test_stdout_line_count = 2 git ls-files -u dir/file-in-the-way &&
 
 	test_must_fail git diff --quiet &&
 	test_must_fail git diff --cached --quiet &&
@@ -357,8 +347,8 @@
 		test_i18ngrep "Adding as dir~renamed-file-has-no-conflicts instead" output
 	fi &&
 
-	test 3 -eq "$(git ls-files -u | wc -l)" &&
-	test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
+	test_stdout_line_count = 3 git ls-files -u &&
+	test_stdout_line_count = 2 git ls-files -u dir/file-in-the-way &&
 
 	test_must_fail git diff --quiet &&
 	test_must_fail git diff --cached --quiet &&
@@ -374,8 +364,8 @@
 	git checkout -q renamed-file-has-conflicts^0 &&
 	test_must_fail git merge --strategy=recursive dir-not-in-way &&
 
-	test 3 -eq "$(git ls-files -u | wc -l)" &&
-	test 3 -eq "$(git ls-files -u dir | wc -l)" &&
+	test_stdout_line_count = 3 git ls-files -u &&
+	test_stdout_line_count = 3 git ls-files -u dir &&
 
 	test_must_fail git diff --quiet &&
 	test_must_fail git diff --cached --quiet &&
@@ -409,14 +399,16 @@
 	git checkout -q renamed-file-has-conflicts^0 &&
 	test_must_fail git merge --strategy=recursive dir-in-way &&
 
-	test 5 -eq "$(git ls-files -u | wc -l)" &&
+	test_stdout_line_count = 5 git ls-files -u &&
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 3 -eq "$(git ls-files -u dir~HEAD | wc -l)"
+		test_stdout_line_count = 3 git ls-files -u dir~HEAD
 	else
-		test 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)"
+		git ls-files -u dir >out &&
+		test 3 -eq $(grep -v file-in-the-way out | wc -l) &&
+		rm -f out
 	fi &&
-	test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
+	test_stdout_line_count = 2 git ls-files -u dir/file-in-the-way &&
 
 	test_must_fail git diff --quiet &&
 	test_must_fail git diff --cached --quiet &&
@@ -432,14 +424,16 @@
 	git checkout -q dir-in-way^0 &&
 	test_must_fail git merge --strategy=recursive renamed-file-has-conflicts &&
 
-	test 5 -eq "$(git ls-files -u | wc -l)" &&
+	test_stdout_line_count = 5 git ls-files -u &&
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 3 -eq "$(git ls-files -u dir~renamed-file-has-conflicts | wc -l)"
+		test_stdout_line_count = 3 git ls-files -u dir~renamed-file-has-conflicts
 	else
-		test 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)"
+		git ls-files -u dir >out &&
+		test 3 -eq $(grep -v file-in-the-way out | wc -l) &&
+		rm -f out
 	fi &&
-	test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
+	test_stdout_line_count = 2 git ls-files -u dir/file-in-the-way &&
 
 	test_must_fail git diff --quiet &&
 	test_must_fail git diff --cached --quiet &&
@@ -496,9 +490,9 @@
 
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 2 -eq "$(git ls-files -u | wc -l)"
+		test_stdout_line_count = 2 git ls-files -u
 	else
-		test 1 -eq "$(git ls-files -u | wc -l)"
+		test_stdout_line_count = 1 git ls-files -u
 	fi &&
 
 	test_must_fail git diff --quiet &&
@@ -540,9 +534,9 @@
 		mkdir one &&
 		test_must_fail git merge --strategy=recursive rename-two &&
 
-		test 4 -eq "$(git ls-files -u | wc -l)" &&
-		test 2 -eq "$(git ls-files -u one | wc -l)" &&
-		test 2 -eq "$(git ls-files -u two | wc -l)" &&
+		test_stdout_line_count = 4 git ls-files -u &&
+		test_stdout_line_count = 2 git ls-files -u one &&
+		test_stdout_line_count = 2 git ls-files -u two &&
 
 		test_must_fail git diff --quiet &&
 
@@ -559,9 +553,9 @@
 		mkdir one &&
 		test_must_fail git merge --strategy=recursive rename-two &&
 
-		test 2 -eq "$(git ls-files -u | wc -l)" &&
-		test 1 -eq "$(git ls-files -u one | wc -l)" &&
-		test 1 -eq "$(git ls-files -u two | wc -l)" &&
+		test_stdout_line_count = 2 git ls-files -u &&
+		test_stdout_line_count = 1 git ls-files -u one &&
+		test_stdout_line_count = 1 git ls-files -u two &&
 
 		test_must_fail git diff --quiet &&
 
@@ -582,13 +576,13 @@
 
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 4 -eq "$(git ls-files -u | wc -l)" &&
-		test 2 -eq "$(git ls-files -u one | wc -l)" &&
-		test 2 -eq "$(git ls-files -u two | wc -l)"
+		test_stdout_line_count = 4 git ls-files -u &&
+		test_stdout_line_count = 2 git ls-files -u one &&
+		test_stdout_line_count = 2 git ls-files -u two
 	else
-		test 2 -eq "$(git ls-files -u | wc -l)" &&
-		test 1 -eq "$(git ls-files -u one | wc -l)" &&
-		test 1 -eq "$(git ls-files -u two | wc -l)"
+		test_stdout_line_count = 2 git ls-files -u &&
+		test_stdout_line_count = 1 git ls-files -u one &&
+		test_stdout_line_count = 1 git ls-files -u two
 	fi &&
 
 	test_must_fail git diff --quiet &&
@@ -631,19 +625,19 @@
 
 	if test "$GIT_TEST_MERGE_ALGORITHM" = ort
 	then
-		test 5 -eq "$(git ls-files -s | wc -l)" &&
-		test 3 -eq "$(git ls-files -u | wc -l)" &&
-		test 1 -eq "$(git ls-files -u one~HEAD | wc -l)" &&
-		test 1 -eq "$(git ls-files -u two~second-rename | wc -l)" &&
-		test 1 -eq "$(git ls-files -u original | wc -l)" &&
-		test 0 -eq "$(git ls-files -o | wc -l)"
+		test_stdout_line_count = 5 git ls-files -s &&
+		test_stdout_line_count = 3 git ls-files -u &&
+		test_stdout_line_count = 1 git ls-files -u one~HEAD &&
+		test_stdout_line_count = 1 git ls-files -u two~second-rename &&
+		test_stdout_line_count = 1 git ls-files -u original &&
+		test_stdout_line_count = 0 git ls-files -o
 	else
-		test 5 -eq "$(git ls-files -s | wc -l)" &&
-		test 3 -eq "$(git ls-files -u | wc -l)" &&
-		test 1 -eq "$(git ls-files -u one | wc -l)" &&
-		test 1 -eq "$(git ls-files -u two | wc -l)" &&
-		test 1 -eq "$(git ls-files -u original | wc -l)" &&
-		test 2 -eq "$(git ls-files -o | wc -l)"
+		test_stdout_line_count = 5 git ls-files -s &&
+		test_stdout_line_count = 3 git ls-files -u &&
+		test_stdout_line_count = 1 git ls-files -u one &&
+		test_stdout_line_count = 1 git ls-files -u two &&
+		test_stdout_line_count = 1 git ls-files -u original &&
+		test_stdout_line_count = 2 git ls-files -o
 	fi &&
 
 	test_path_is_file one/file &&
@@ -679,11 +673,11 @@
 	git checkout -q first-rename-redo^0 &&
 	test_must_fail git merge --strategy=recursive second-rename-redo &&
 
-	test 3 -eq "$(git ls-files -u | wc -l)" &&
-	test 1 -eq "$(git ls-files -u one | wc -l)" &&
-	test 1 -eq "$(git ls-files -u two | wc -l)" &&
-	test 1 -eq "$(git ls-files -u original | wc -l)" &&
-	test 0 -eq "$(git ls-files -o | wc -l)" &&
+	test_stdout_line_count = 3 git ls-files -u &&
+	test_stdout_line_count = 1 git ls-files -u one &&
+	test_stdout_line_count = 1 git ls-files -u two &&
+	test_stdout_line_count = 1 git ls-files -u original &&
+	test_stdout_line_count = 0 git ls-files -o &&
 
 	test_path_is_file one &&
 	test_path_is_file two &&
@@ -861,9 +855,11 @@
 test_expect_success 'merge rename + small change' '
 	git merge rename_branch &&
 
-	test 1 -eq $(git ls-files -s | wc -l) &&
-	test 0 -eq $(git ls-files -o | wc -l) &&
-	test $(git rev-parse HEAD:renamed_file) = $(git rev-parse HEAD~1:file)
+	test_stdout_line_count = 1 git ls-files -s &&
+	test_stdout_line_count = 0 git ls-files -o &&
+	newhash=$(git rev-parse HEAD:renamed_file) &&
+	oldhash=$(git rev-parse HEAD~1:file) &&
+	test $newhash = $oldhash
 '
 
 test_expect_success 'setup for use of extended merge markers' '
diff --git a/t/t6406-merge-attr.sh b/t/t6406-merge-attr.sh
index d5a4ac2..8494645 100755
--- a/t/t6406-merge-attr.sh
+++ b/t/t6406-merge-attr.sh
@@ -207,4 +207,22 @@
 	git merge main
 '
 
+test_expect_success 'binary files with union attribute' '
+	git checkout -b bin-main &&
+	printf "base\0" >bin.txt &&
+	echo "bin.txt merge=union" >.gitattributes &&
+	git add bin.txt .gitattributes &&
+	git commit -m base &&
+
+	printf "one\0" >bin.txt &&
+	git commit -am one &&
+
+	git checkout -b bin-side HEAD^ &&
+	printf "two\0" >bin.txt &&
+	git commit -am two &&
+
+	test_must_fail git merge bin-main 2>stderr &&
+	grep -i "warning.*cannot merge.*HEAD vs. bin-main" stderr
+'
+
 test_done
diff --git a/t/t6409-merge-subtree.sh b/t/t6409-merge-subtree.sh
index d406b23..ba7890e 100755
--- a/t/t6409-merge-subtree.sh
+++ b/t/t6409-merge-subtree.sh
@@ -100,7 +100,7 @@
 	git checkout -b topic_2 &&
 	git commit -m "update git-gui" &&
 	cd ../git &&
-	git pull -s subtree gui topic_2 &&
+	git pull --no-rebase -s subtree gui topic_2 &&
 	git ls-files -s >actual &&
 	(
 		echo "100644 $o3 0	git-gui/git-gui.sh" &&
@@ -129,7 +129,7 @@
 test_expect_success 'merge using explicit' '
 	cd ../git &&
 	git reset --hard topic_2 &&
-	git pull -Xsubtree=git-gui gui topic_2 &&
+	git pull --no-rebase -Xsubtree=git-gui gui topic_2 &&
 	git ls-files -s >actual &&
 	(
 		echo "100644 $o3 0	git-gui/git-gui.sh" &&
@@ -142,7 +142,7 @@
 test_expect_success 'merge2 using explicit' '
 	cd ../git &&
 	git reset --hard topic_2 &&
-	git pull -Xsubtree=git-gui2 gui topic_2 &&
+	git pull --no-rebase -Xsubtree=git-gui2 gui topic_2 &&
 	git ls-files -s >actual &&
 	(
 		echo "100644 $o1 0	git-gui/git-gui.sh" &&
diff --git a/t/t6417-merge-ours-theirs.sh b/t/t6417-merge-ours-theirs.sh
index ac9aee9..ec065d6 100755
--- a/t/t6417-merge-ours-theirs.sh
+++ b/t/t6417-merge-ours-theirs.sh
@@ -69,11 +69,11 @@
 '
 
 test_expect_success 'pull passes -X to underlying merge' '
-	git reset --hard main && git pull -s recursive -Xours . side &&
-	git reset --hard main && git pull -s recursive -X ours . side &&
-	git reset --hard main && git pull -s recursive -Xtheirs . side &&
-	git reset --hard main && git pull -s recursive -X theirs . side &&
-	git reset --hard main && test_must_fail git pull -s recursive -X bork . side
+	git reset --hard main && git pull --no-rebase -s recursive -Xours . side &&
+	git reset --hard main && git pull --no-rebase -s recursive -X ours . side &&
+	git reset --hard main && git pull --no-rebase -s recursive -Xtheirs . side &&
+	git reset --hard main && git pull --no-rebase -s recursive -X theirs . side &&
+	git reset --hard main && test_must_fail git pull --no-rebase -s recursive -X bork . side
 '
 
 test_expect_success SYMLINKS 'symlink with -Xours/-Xtheirs' '
diff --git a/t/t6421-merge-partial-clone.sh b/t/t6421-merge-partial-clone.sh
new file mode 100755
index 0000000..36bcd7c3
--- /dev/null
+++ b/t/t6421-merge-partial-clone.sh
@@ -0,0 +1,440 @@
+#!/bin/sh
+
+test_description="limiting blob downloads when merging with partial clones"
+# Uses a methodology similar to
+#   t6042: corner cases with renames but not criss-cross merges
+#   t6036: corner cases with both renames and criss-cross merges
+#   t6423: directory rename detection
+#
+# The setup for all of them, pictorially, is:
+#
+#      A
+#      o
+#     / \
+#  O o   ?
+#     \ /
+#      o
+#      B
+#
+# To help make it easier to follow the flow of tests, they have been
+# divided into sections and each test will start with a quick explanation
+# of what commits O, A, and B contain.
+#
+# Notation:
+#    z/{b,c}   means  files z/b and z/c both exist
+#    x/d_1     means  file x/d exists with content d1.  (Purpose of the
+#                     underscore notation is to differentiate different
+#                     files that might be renamed into each other's paths.)
+
+. ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-merge.sh
+
+test_setup_repo () {
+	test -d server && return
+	test_create_repo server &&
+	(
+		cd server &&
+
+		git config uploadpack.allowfilter 1 &&
+		git config uploadpack.allowanysha1inwant 1 &&
+
+		mkdir -p general &&
+		test_seq 2 9 >general/leap1 &&
+		cp general/leap1 general/leap2 &&
+		echo leap2 >>general/leap2 &&
+
+		mkdir -p basename &&
+		cp general/leap1 basename/numbers &&
+		cp general/leap1 basename/sequence &&
+		cp general/leap1 basename/values &&
+		echo numbers >>basename/numbers &&
+		echo sequence >>basename/sequence &&
+		echo values >>basename/values &&
+
+		mkdir -p dir/unchanged &&
+		mkdir -p dir/subdir/tweaked &&
+		echo a >dir/subdir/a &&
+		echo b >dir/subdir/b &&
+		echo c >dir/subdir/c &&
+		echo d >dir/subdir/d &&
+		echo e >dir/subdir/e &&
+		cp general/leap1 dir/subdir/Makefile &&
+		echo toplevel makefile >>dir/subdir/Makefile &&
+		echo f >dir/subdir/tweaked/f &&
+		echo g >dir/subdir/tweaked/g &&
+		echo h >dir/subdir/tweaked/h &&
+		echo subdirectory makefile >dir/subdir/tweaked/Makefile &&
+		for i in $(test_seq 1 88)
+		do
+			echo content $i >dir/unchanged/file_$i
+		done &&
+		git add . &&
+		git commit -m "O" &&
+
+		git branch O &&
+		git branch A &&
+		git branch B-single &&
+		git branch B-dir &&
+		git branch B-many &&
+
+		git switch A &&
+
+		git rm general/leap* &&
+		mkdir general/ &&
+		test_seq 1 9 >general/jump1 &&
+		cp general/jump1 general/jump2 &&
+		echo leap2 >>general/jump2 &&
+
+		rm basename/numbers basename/sequence basename/values &&
+		mkdir -p basename/subdir/
+		cp general/jump1 basename/subdir/numbers &&
+		cp general/jump1 basename/subdir/sequence &&
+		cp general/jump1 basename/subdir/values &&
+		echo numbers >>basename/subdir/numbers &&
+		echo sequence >>basename/subdir/sequence &&
+		echo values >>basename/subdir/values &&
+
+		git rm dir/subdir/tweaked/f &&
+		echo more >>dir/subdir/e &&
+		echo more >>dir/subdir/Makefile &&
+		echo more >>dir/subdir/tweaked/Makefile &&
+		mkdir dir/subdir/newsubdir &&
+		echo rust code >dir/subdir/newsubdir/newfile.rs &&
+		git mv dir/subdir/e dir/subdir/newsubdir/ &&
+		git mv dir folder &&
+		git add . &&
+		git commit -m "A" &&
+
+		git switch B-single &&
+		echo new first line >dir/subdir/Makefile &&
+		cat general/leap1 >>dir/subdir/Makefile &&
+		echo toplevel makefile >>dir/subdir/Makefile &&
+		echo perl code >general/newfile.pl &&
+		git add . &&
+		git commit -m "B-single" &&
+
+		git switch B-dir &&
+		echo java code >dir/subdir/newfile.java &&
+		echo scala code >dir/subdir/newfile.scala &&
+		echo groovy code >dir/subdir/newfile.groovy &&
+		git add . &&
+		git commit -m "B-dir" &&
+
+		git switch B-many &&
+		test_seq 2 10 >general/leap1 &&
+		rm general/leap2 &&
+		cp general/leap1 general/leap2 &&
+		echo leap2 >>general/leap2 &&
+
+		rm basename/numbers basename/sequence basename/values &&
+		mkdir -p basename/subdir/
+		cp general/leap1 basename/subdir/numbers &&
+		cp general/leap1 basename/subdir/sequence &&
+		cp general/leap1 basename/subdir/values &&
+		echo numbers >>basename/subdir/numbers &&
+		echo sequence >>basename/subdir/sequence &&
+		echo values >>basename/subdir/values &&
+
+		mkdir dir/subdir/newsubdir/ &&
+		echo c code >dir/subdir/newfile.c &&
+		echo python code >dir/subdir/newsubdir/newfile.py &&
+		git add . &&
+		git commit -m "B-many" &&
+
+		git switch A
+	)
+}
+
+# Testcase: Objects downloaded for single relevant rename
+#   Commit O:
+#              general/{leap1_O, leap2_O}
+#              basename/{numbers_O, sequence_O, values_O}
+#              dir/subdir/{a,b,c,d,e_O,Makefile_TOP_O}
+#              dir/subdir/tweaked/{f,g,h,Makefile_SUB_O}
+#              dir/unchanged/<LOTS OF FILES>
+#   Commit A:
+#     (Rename leap->jump, rename basename/ -> basename/subdir/, rename dir/
+#      -> folder/, move e into newsubdir, add newfile.rs, remove f, modify
+#      both both Makefiles and jumps)
+#              general/{jump1_A, jump2_A}
+#              basename/subdir/{numbers_A, sequence_A, values_A}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_A}
+#              folder/subdir/newsubdir/{e_A,newfile.rs}
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A}
+#              folder/unchanged/<LOTS OF FILES>
+#   Commit B(-single):
+#     (add newfile.pl, tweak Makefile_TOP)
+#              general/{leap1_O, leap2_O,newfile.pl}
+#              basename/{numbers_O, sequence_O, values_O}
+#              dir/{a,b,c,d,e_O,Makefile_TOP_B}
+#              dir/tweaked/{f,g,h,Makefile_SUB_O}
+#              dir/unchanged/<LOTS OF FILES>
+#   Expected:
+#              general/{jump1_A, jump2_A,newfile.pl}
+#              basename/subdir/{numbers_A, sequence_A, values_A}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_Merged}
+#              folder/subdir/newsubdir/{e_A,newfile.rs}
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A}
+#              folder/unchanged/<LOTS OF FILES>
+#
+# Objects that need to be fetched:
+#   Rename detection:
+#     Side1 (O->A):
+#       Basename-matches rename detection only needs to fetch these objects:
+#         Makefile_TOP_O, Makefile_TOP_A
+#         (Despite many renames, all others are content irrelevant.  They
+#          are also location irrelevant because newfile.rs was added on
+#          the side doing the directory rename, and newfile.pl was added to
+#          a directory that was not renamed on either side.)
+#       General rename detection only needs to fetch these objects:
+#         <None>
+#          (Even though newfile.rs, jump[12], basename/subdir/*, and e
+#          could all be used as destinations in rename detection, the
+#          basename detection for Makefile matches up all relevant
+#          sources, so these other files never end up needing to be
+#          used)
+#     Side2 (O->B):
+#       Basename-matches rename detection only needs to fetch these objects:
+#         <None>
+#         (there are no deleted files, so no possible sources)
+#       General rename detection only needs to fetch these objects:
+#         <None>
+#         (there are no deleted files, so no possible sources)
+#   Merge:
+#     3-way content merge needs to grab these objects:
+#       Makefile_TOP_B
+#   Nothing else needs to fetch objects
+#
+#   Summary: 2 fetches (1 for 2 objects, 1 for 1 object)
+#
+test_expect_merge_algorithm failure success 'Objects downloaded for single relevant rename' '
+	test_setup_repo &&
+	git clone --sparse --filter=blob:none "file://$(pwd)/server" objects-single &&
+	(
+		cd objects-single &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-before &&
+
+		git checkout -q origin/A &&
+
+		GIT_TRACE2_PERF="$(pwd)/trace.output" git \
+			-c merge.directoryRenames=true merge --no-stat \
+			--no-progress origin/B-single &&
+
+		# Check the number of objects we reported we would fetch
+		cat >expect <<-EOF &&
+		fetch_count:2
+		fetch_count:1
+		EOF
+		grep fetch_count trace.output | cut -d "|" -f 9 | tr -d " ." >actual &&
+		test_cmp expect actual &&
+
+		# Check the number of fetch commands exec-ed
+		grep d0.*fetch.negotiationAlgorithm trace.output >fetches &&
+		test_line_count = 2 fetches &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-after &&
+		comm -2 -3 missing-objects-before missing-objects-after >old &&
+		comm -1 -3 missing-objects-before missing-objects-after >new &&
+		# No new missing objects
+		test_must_be_empty new &&
+		# Fetched 2 + 1 = 3 objects
+		test_line_count = 3 old
+	)
+'
+
+# Testcase: Objects downloaded for directory rename
+#   Commit O:
+#              general/{leap1_O, leap2_O}
+#              basename/{numbers_O, sequence_O, values_O}
+#              dir/subdir/{a,b,c,d,e_O,Makefile_TOP_O}
+#              dir/subdir/tweaked/{f,g,h,Makefile_SUB_O}
+#              dir/unchanged/<LOTS OF FILES>
+#   Commit A:
+#     (Rename leap->jump, rename basename/ -> basename/subdir/, rename dir/ ->
+#      folder/, move e into newsubdir, add newfile.rs, remove f, modify
+#      both Makefiles and jumps)
+#              general/{jump1_A, jump2_A}
+#              basename/subdir/{numbers_A, sequence_A, values_A}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_A}
+#              folder/subdir/newsubdir/{e_A,newfile.rs}
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A}
+#              folder/unchanged/<LOTS OF FILES>
+#   Commit B(-dir):
+#     (add dir/subdir/newfile.{java,scala,groovy}
+#              general/{leap1_O, leap2_O}
+#              basename/{numbers_O, sequence_O, values_O}
+#              dir/subdir/{a,b,c,d,e_O,Makefile_TOP_O,
+#                          newfile.java,newfile.scala,newfile.groovy}
+#              dir/subdir/tweaked/{f,g,h,Makefile_SUB_O}
+#              dir/unchanged/<LOTS OF FILES>
+#   Expected:
+#              general/{jump1_A, jump2_A}
+#              basename/subdir/{numbers_A, sequence_A, values_A}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_A,
+#                             newfile.java,newfile.scala,newfile.groovy}
+#              folder/subdir/newsubdir/{e_A,newfile.rs}
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A}
+#              folder/unchanged/<LOTS OF FILES>
+#
+# Objects that need to be fetched:
+#   Makefile_TOP_O, Makefile_TOP_A
+#   Makefile_SUB_O, Makefile_SUB_A
+#   e_O, e_A
+#   * Despite A's rename of jump->leap, those renames are irrelevant.
+#   * Despite A's rename of basename/ -> basename/subdir/, those renames are
+#     irrelevant.
+#   * Because of A's rename of dir/ -> folder/ and B-dir's addition of
+#     newfile.* into dir/subdir/, we need to determine directory renames.
+#     (Technically, there are enough exact renames to determine directory
+#      rename detection, but the current implementation always does
+#      basename searching before directory rename detection.  Running it
+#      also before basename searching would mean doing directory rename
+#      detection twice, but it's a bit expensive to do that and cases like
+#      this are not all that common.)
+#   Summary: 1 fetches for 6 objects
+#
+test_expect_merge_algorithm failure success 'Objects downloaded when a directory rename triggered' '
+	test_setup_repo &&
+	git clone --sparse --filter=blob:none "file://$(pwd)/server" objects-dir &&
+	(
+		cd objects-dir &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-before &&
+
+		git checkout -q origin/A &&
+
+		GIT_TRACE2_PERF="$(pwd)/trace.output" git \
+			-c merge.directoryRenames=true merge --no-stat \
+			--no-progress origin/B-dir &&
+
+		# Check the number of objects we reported we would fetch
+		cat >expect <<-EOF &&
+		fetch_count:6
+		EOF
+		grep fetch_count trace.output | cut -d "|" -f 9 | tr -d " ." >actual &&
+		test_cmp expect actual &&
+
+		# Check the number of fetch commands exec-ed
+		grep d0.*fetch.negotiationAlgorithm trace.output >fetches &&
+		test_line_count = 1 fetches &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-after &&
+		comm -2 -3 missing-objects-before missing-objects-after >old &&
+		comm -1 -3 missing-objects-before missing-objects-after >new &&
+		# No new missing objects
+		test_must_be_empty new &&
+		# Fetched 6 objects
+		test_line_count = 6 old
+	)
+'
+
+# Testcase: Objects downloaded with lots of renames and modifications
+#   Commit O:
+#              general/{leap1_O, leap2_O}
+#              basename/{numbers_O, sequence_O, values_O}
+#              dir/subdir/{a,b,c,d,e_O,Makefile_TOP_O}
+#              dir/subdir/tweaked/{f,g,h,Makefile_SUB_O}
+#              dir/unchanged/<LOTS OF FILES>
+#   Commit A:
+#     (Rename leap->jump, rename basename/ -> basename/subdir/, rename dir/
+#      -> folder/, move e into newsubdir, add newfile.rs, remove f, modify
+#      both both Makefiles and jumps)
+#              general/{jump1_A, jump2_A}
+#              basename/subdir/{numbers_A, sequence_A, values_A}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_A}
+#              folder/subdir/newsubdir/{e_A,newfile.rs}
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A}
+#              folder/unchanged/<LOTS OF FILES>
+#   Commit B(-minimal):
+#     (modify both leaps, rename basename/ -> basename/subdir/, add
+#      newfile.{c,py})
+#              general/{leap1_B, leap2_B}
+#              basename/subdir/{numbers_B, sequence_B, values_B}
+#              dir/{a,b,c,d,e_O,Makefile_TOP_O,newfile.c}
+#              dir/tweaked/{f,g,h,Makefile_SUB_O,newfile.py}
+#              dir/unchanged/<LOTS OF FILES>
+#   Expected:
+#              general/{jump1_Merged, jump2_Merged}
+#              basename/subdir/{numbers_Merged, sequence_Merged, values_Merged}
+#              folder/subdir/{a,b,c,d,Makefile_TOP_A,newfile.c}
+#              folder/subdir/newsubdir/e_A
+#              folder/subdir/tweaked/{g,h,Makefile_SUB_A,newfile.py}
+#              folder/unchanged/<LOTS OF FILES>
+#
+# Objects that need to be fetched:
+#   Rename detection:
+#     Side1 (O->A):
+#       Basename-matches rename detection only needs to fetch these objects:
+#         numbers_O, numbers_A
+#         sequence_O, sequence_A
+#         values_O, values_A
+#         Makefile_TOP_O, Makefile_TOP_A
+#         Makefile_SUB_O, Makefile_SUB_A
+#         e_O, e_A
+#       General rename detection only needs to fetch these objects:
+#         leap1_O, leap2_O
+#         jump1_A, jump2_A, newfile.rs
+#         (only need remaining relevant sources, but any relevant sources need
+#          to be matched against all possible unpaired destinations)
+#     Side2 (O->B):
+#       Basename-matches rename detection only needs to fetch these objects:
+#         numbers_B
+#         sequence_B
+#         values_B
+#       (because numbers_O, sequence_O, and values_O already fetched above)
+#       General rename detection only needs to fetch these objects:
+#         <None>
+#   Merge:
+#     3-way content merge needs to grab these objects:
+#       leap1_B
+#       leap2_B
+#   Nothing else needs to fetch objects
+#
+#   Summary: 4 fetches (1 for 6 objects, 1 for 8, 1 for 3, 1 for 2)
+#
+test_expect_merge_algorithm failure success 'Objects downloaded with lots of renames and modifications' '
+	test_setup_repo &&
+	git clone --sparse --filter=blob:none "file://$(pwd)/server" objects-many &&
+	(
+		cd objects-many &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-before &&
+
+		git checkout -q origin/A &&
+
+		GIT_TRACE2_PERF="$(pwd)/trace.output" git \
+			-c merge.directoryRenames=true merge --no-stat \
+			--no-progress origin/B-many &&
+
+		# Check the number of objects we reported we would fetch
+		cat >expect <<-EOF &&
+		fetch_count:12
+		fetch_count:5
+		fetch_count:3
+		fetch_count:2
+		EOF
+		grep fetch_count trace.output | cut -d "|" -f 9 | tr -d " ." >actual &&
+		test_cmp expect actual &&
+
+		# Check the number of fetch commands exec-ed
+		grep d0.*fetch.negotiationAlgorithm trace.output >fetches &&
+		test_line_count = 4 fetches &&
+
+		git rev-list --objects --all --missing=print |
+			grep "^?" | sort >missing-objects-after &&
+		comm -2 -3 missing-objects-before missing-objects-after >old &&
+		comm -1 -3 missing-objects-before missing-objects-after >new &&
+		# No new missing objects
+		test_must_be_empty new &&
+		# Fetched 12 + 5 + 3 + 2 = 22 objects
+		test_line_count = 22 old
+	)
+'
+
+test_done
diff --git a/t/t6423-merge-rename-directories.sh b/t/t6423-merge-rename-directories.sh
index be84d22..5b81a13 100755
--- a/t/t6423-merge-rename-directories.sh
+++ b/t/t6423-merge-rename-directories.sh
@@ -454,7 +454,7 @@
 #   the directory renamed, but the files within it. (see 1b)
 #
 #   If renames split a directory into two or more others, the directory
-#   with the most renames, "wins" (see 1c).  However, see the testcases
+#   with the most renames, "wins" (see 1f).  However, see the testcases
 #   in section 2, plus testcases 3a and 4a.
 ###########################################################################
 
@@ -4797,7 +4797,7 @@
 	)
 }
 
-test_expect_merge_algorithm failure failure '12f: Trivial directory resolve, caching, all kinds of fun' '
+test_expect_merge_algorithm failure success '12f: Trivial directory resolve, caching, all kinds of fun' '
 	test_setup_12f &&
 	(
 		cd 12f &&
@@ -5024,6 +5024,181 @@
 	)
 '
 
+# Testcase 12i, Directory rename causes rename-to-self
+#   Commit O: source/{subdir/foo, bar, baz_1}
+#   Commit A: source/{foo, bar, baz_1}
+#   Commit B: source/{subdir/{foo, bar}, baz_2}
+#   Expected: source/{foo, bar, baz_2}, with conflicts on
+#                source/bar vs. source/subdir/bar
+
+test_setup_12i () {
+	test_create_repo 12i &&
+	(
+		cd 12i &&
+
+		mkdir -p source/subdir &&
+		echo foo >source/subdir/foo &&
+		echo bar >source/bar &&
+		echo baz >source/baz &&
+		git add source &&
+		git commit -m orig &&
+
+		git branch O &&
+		git branch A &&
+		git branch B &&
+
+		git switch A &&
+		git mv source/subdir/foo source/foo &&
+		git commit -m A &&
+
+		git switch B &&
+		git mv source/bar source/subdir/bar &&
+		echo more baz >>source/baz &&
+		git commit -m B
+	)
+}
+
+test_expect_success '12i: Directory rename causes rename-to-self' '
+	test_setup_12i &&
+	(
+		cd 12i &&
+
+		git checkout A^0 &&
+
+		test_must_fail git -c merge.directoryRenames=conflict merge -s recursive B^0 &&
+
+		test_path_is_missing source/subdir &&
+		test_path_is_file source/bar &&
+		test_path_is_file source/baz &&
+
+		git ls-files | uniq >tracked &&
+		test_line_count = 3 tracked &&
+
+		git status --porcelain -uno >actual &&
+		cat >expect <<-\EOF &&
+		UU source/bar
+		 M source/baz
+		EOF
+		test_cmp expect actual
+	)
+'
+
+# Testcase 12j, Directory rename to root causes rename-to-self
+#   Commit O: {subdir/foo, bar, baz_1}
+#   Commit A: {foo, bar, baz_1}
+#   Commit B: {subdir/{foo, bar}, baz_2}
+#   Expected: {foo, bar, baz_2}, with conflicts on bar vs. subdir/bar
+
+test_setup_12j () {
+	test_create_repo 12j &&
+	(
+		cd 12j &&
+
+		mkdir -p subdir &&
+		echo foo >subdir/foo &&
+		echo bar >bar &&
+		echo baz >baz &&
+		git add . &&
+		git commit -m orig &&
+
+		git branch O &&
+		git branch A &&
+		git branch B &&
+
+		git switch A &&
+		git mv subdir/foo foo &&
+		git commit -m A &&
+
+		git switch B &&
+		git mv bar subdir/bar &&
+		echo more baz >>baz &&
+		git commit -m B
+	)
+}
+
+test_expect_success '12j: Directory rename to root causes rename-to-self' '
+	test_setup_12j &&
+	(
+		cd 12j &&
+
+		git checkout A^0 &&
+
+		test_must_fail git -c merge.directoryRenames=conflict merge -s recursive B^0 &&
+
+		test_path_is_missing subdir &&
+		test_path_is_file bar &&
+		test_path_is_file baz &&
+
+		git ls-files | uniq >tracked &&
+		test_line_count = 3 tracked &&
+
+		git status --porcelain -uno >actual &&
+		cat >expect <<-\EOF &&
+		UU bar
+		 M baz
+		EOF
+		test_cmp expect actual
+	)
+'
+
+# Testcase 12k, Directory rename with sibling causes rename-to-self
+#   Commit O: dirB/foo, dirA/{bar, baz_1}
+#   Commit A: dirA/{foo, bar, baz_1}
+#   Commit B: dirB/{foo, bar}, dirA/baz_2
+#   Expected: dirA/{foo, bar, baz_2}, with conflicts on dirA/bar vs. dirB/bar
+
+test_setup_12k () {
+	test_create_repo 12k &&
+	(
+		cd 12k &&
+
+		mkdir dirA dirB &&
+		echo foo >dirB/foo &&
+		echo bar >dirA/bar &&
+		echo baz >dirA/baz &&
+		git add . &&
+		git commit -m orig &&
+
+		git branch O &&
+		git branch A &&
+		git branch B &&
+
+		git switch A &&
+		git mv dirB/* dirA/ &&
+		git commit -m A &&
+
+		git switch B &&
+		git mv dirA/bar dirB/bar &&
+		echo more baz >>dirA/baz &&
+		git commit -m B
+	)
+}
+
+test_expect_success '12k: Directory rename with sibling causes rename-to-self' '
+	test_setup_12k &&
+	(
+		cd 12k &&
+
+		git checkout A^0 &&
+
+		test_must_fail git -c merge.directoryRenames=conflict merge -s recursive B^0 &&
+
+		test_path_is_missing dirB &&
+		test_path_is_file dirA/bar &&
+		test_path_is_file dirA/baz &&
+
+		git ls-files | uniq >tracked &&
+		test_line_count = 3 tracked &&
+
+		git status --porcelain -uno >actual &&
+		cat >expect <<-\EOF &&
+		UU dirA/bar
+		 M dirA/baz
+		EOF
+		test_cmp expect actual
+	)
+'
+
 ###########################################################################
 # SECTION 13: Checking informational and conflict messages
 #
diff --git a/t/t6500-gc.sh b/t/t6500-gc.sh
index 60d961b..c202126 100755
--- a/t/t6500-gc.sh
+++ b/t/t6500-gc.sh
@@ -95,6 +95,52 @@
 	)
 '
 
+test_expect_success 'pre-auto-gc hook can stop auto gc' '
+	cat >err.expect <<-\EOF &&
+	no gc for you
+	EOF
+
+	git init pre-auto-gc-hook &&
+	(
+		cd pre-auto-gc-hook &&
+		write_script ".git/hooks/pre-auto-gc" <<-\EOF &&
+		echo >&2 no gc for you &&
+		exit 1
+		EOF
+
+		git config gc.auto 3 &&
+		git config gc.autoDetach false &&
+
+		# We need to create two object whose sha1s start with 17
+		# since this is what git gc counts.  As it happens, these
+		# two blobs will do so.
+		test_commit "$(test_oid obj1)" &&
+		test_commit "$(test_oid obj2)" &&
+
+		git gc --auto >../out.actual 2>../err.actual
+	) &&
+	test_must_be_empty out.actual &&
+	test_cmp err.expect err.actual &&
+
+	cat >err.expect <<-\EOF &&
+	will gc for you
+	Auto packing the repository for optimum performance.
+	See "git help gc" for manual housekeeping.
+	EOF
+
+	(
+		cd pre-auto-gc-hook &&
+		write_script ".git/hooks/pre-auto-gc" <<-\EOF &&
+		echo >&2 will gc for you &&
+		exit 0
+		EOF
+		git gc --auto >../out.actual 2>../err.actual
+	) &&
+
+	test_must_be_empty out.actual &&
+	test_cmp err.expect err.actual
+'
+
 test_expect_success 'auto gc with too many loose objects does not attempt to create bitmaps' '
 	test_config gc.auto 3 &&
 	test_config gc.autodetach false &&
@@ -195,7 +241,7 @@
 
 	# create a ref whose loose presence we can use to detect a pack-refs run
 	git update-ref refs/heads/should-be-loose HEAD &&
-	test_path_is_file .git/refs/heads/should-be-loose &&
+	(ls -1 .git/refs/heads .git/reftable >expect || true) &&
 
 	# now fake a concurrent gc that holds the lock; we can use our
 	# shell pid so that it looks valid.
@@ -212,7 +258,8 @@
 
 	# our gc should exit zero without doing anything
 	run_and_wait_for_auto_gc &&
-	test_path_is_file .git/refs/heads/should-be-loose
+	(ls -1 .git/refs/heads .git/reftable >actual || true) &&
+	test_cmp expect actual
 '
 
 # DO NOT leave a detached auto gc process running near the end of the
diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
index 1349e5b..e18a218 100755
--- a/t/t7003-filter-branch.sh
+++ b/t/t7003-filter-branch.sh
@@ -395,8 +395,11 @@
 test_expect_success '--prune-empty is able to prune entire branch' '
 	git branch prune-entire B &&
 	git filter-branch -f --prune-empty --index-filter "git update-index --remove A.t B.t" prune-entire &&
-	test_path_is_missing .git/refs/heads/prune-entire &&
-	test_must_fail git reflog exists refs/heads/prune-entire
+	test_must_fail git rev-parse refs/heads/prune-entire &&
+	if test_have_prereq REFFILES
+	then
+		test_must_fail git reflog exists refs/heads/prune-entire
+	fi
 '
 
 test_expect_success '--remap-to-ancestor with filename filters' '
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index 2f72c5c..082be85 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -1998,6 +1998,10 @@
 	test_cmp expect actual
 '
 
+test_expect_success 'git tag -l with --format="%(rest)" must fail' '
+	test_must_fail git tag -l --format="%(rest)" "v1*"
+'
+
 test_expect_success "set up color tests" '
 	echo "<RED>v1.0<RESET>" >expect.color &&
 	echo "v1.0" >expect.bare &&
diff --git a/t/t7030-verify-tag.sh b/t/t7030-verify-tag.sh
index 3cefde9..10faa64 100755
--- a/t/t7030-verify-tag.sh
+++ b/t/t7030-verify-tag.sh
@@ -194,6 +194,10 @@
 	test_cmp expect actual
 '
 
+test_expect_success GPG 'verifying tag with --format="%(rest)" must fail' '
+	test_must_fail git verify-tag --format="%(rest)" "fourth-signed"
+'
+
 test_expect_success GPG 'verifying a forged tag with --format should fail silently' '
 	test_must_fail git verify-tag --format="tagname : %(tag)" $(cat forged1.tag) >actual-forged &&
 	test_must_be_empty actual-forged
diff --git a/t/t7064-wtstatus-pv2.sh b/t/t7064-wtstatus-pv2.sh
index 4613882..eeb0534 100755
--- a/t/t7064-wtstatus-pv2.sh
+++ b/t/t7064-wtstatus-pv2.sh
@@ -373,10 +373,7 @@
 
 		## Test upstream-gone case. Fake this by pointing
 		## origin/initial-branch at a non-existing commit.
-		OLD=$(git rev-parse origin/initial-branch) &&
-		NEW=$ZERO_OID &&
-		mv .git/packed-refs .git/old-packed-refs &&
-		sed "s/$OLD/$NEW/g" <.git/old-packed-refs >.git/packed-refs &&
+		git update-ref -d refs/remotes/origin/initial-branch &&
 
 		HUF=$(git rev-parse HEAD) &&
 
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index a924fdb..cb1b8e3 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -51,7 +51,7 @@
 
 test_expect_success 'add aborts on repository with no commits' '
 	cat >expect <<-\EOF &&
-	'"'repo-no-commits'"' does not have a commit checked out
+	fatal: '"'repo-no-commits'"' does not have a commit checked out
 	EOF
 	git init repo-no-commits &&
 	test_must_fail git submodule add ../a ./repo-no-commits 2>actual &&
@@ -196,6 +196,17 @@
 	)
 '
 
+test_expect_success 'submodule add to path with tracked content fails' '
+	(
+		cd addtest &&
+		echo "fatal: '\''dir-tracked'\'' already exists in the index" >expect &&
+		mkdir dir-tracked &&
+		test_commit foo dir-tracked/bar &&
+		test_must_fail git submodule add "$submodurl" dir-tracked >actual 2>&1 &&
+		test_cmp expect actual
+	)
+'
+
 test_expect_success 'submodule add to reconfigure existing submodule with --force' '
 	(
 		cd addtest-ignore &&
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index f4f61fe..11cccbb 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -448,7 +448,7 @@
 '
 
 cat << EOF >expect
-Execution of 'false $submodulesha1' failed in submodule path 'submodule'
+fatal: Execution of 'false $submodulesha1' failed in submodule path 'submodule'
 EOF
 
 test_expect_success 'submodule update - command in .git/config catches failure' '
@@ -465,7 +465,7 @@
 '
 
 cat << EOF >expect
-Execution of 'false $submodulesha1' failed in submodule path '../submodule'
+fatal: Execution of 'false $submodulesha1' failed in submodule path '../submodule'
 EOF
 
 test_expect_success 'submodule update - command in .git/config catches failure -- subdirectory' '
@@ -484,7 +484,7 @@
 
 test_expect_success 'submodule update - command run for initial population of submodule' '
 	cat >expect <<-EOF &&
-	Execution of '\''false $submodulesha1'\'' failed in submodule path '\''submodule'\''
+	fatal: Execution of '\''false $submodulesha1'\'' failed in submodule path '\''submodule'\''
 	EOF
 	rm -rf super/submodule &&
 	test_must_fail git -C super submodule update 2>actual &&
@@ -493,8 +493,8 @@
 '
 
 cat << EOF >expect
-Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
-Failed to recurse into submodule path '../super'
+fatal: Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
+fatal: Failed to recurse into submodule path '../super'
 EOF
 
 test_expect_success 'recursive submodule update - command in .git/config catches failure -- subdirectory' '
diff --git a/t/t7500-commit-template-squash-signoff.sh b/t/t7500-commit-template-squash-signoff.sh
index 7d02f79..8dd0f98 100755
--- a/t/t7500-commit-template-squash-signoff.sh
+++ b/t/t7500-commit-template-squash-signoff.sh
@@ -270,7 +270,7 @@
 
 test_expect_success 'commit --fixup provides correct one-line commit message' '
 	commit_for_rebase_autosquash_setup &&
-	git commit --fixup HEAD~1 &&
+	EDITOR="echo ignored >>" git commit --fixup HEAD~1 &&
 	commit_msg_is "fixup! target message subject line"
 '
 
@@ -281,6 +281,13 @@
 
 extra"
 '
+test_expect_success 'commit --fixup --edit' '
+	commit_for_rebase_autosquash_setup &&
+	EDITOR="printf \"something\nextra\" >>" git commit --fixup HEAD~1 --edit &&
+	commit_msg_is "fixup! target message subject linesomething
+extra"
+'
+
 get_commit_msg () {
 	rev="$1" &&
 	git log -1 --pretty=format:"%B" "$rev"
@@ -498,7 +505,7 @@
 cat >expected-template <<EOF
 
 # Please enter the commit message for your changes. Lines starting
-# with '#' will be ignored, and an empty message aborts the commit.
+# with '#' will be ignored.
 #
 # Author:    A U Thor <author@example.com>
 #
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index 2b72451..05c6c02 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -882,7 +882,7 @@
 	git clone upstream downstream &&
 	git -C downstream checkout @{u} &&
 	git -C downstream status >actual &&
-	test_i18ngrep "HEAD detached at [0-9a-f]\\+" actual
+	grep -E "HEAD detached at [0-9a-f]+" actual
 '
 
 test_expect_success 'setup status submodule summary' '
diff --git a/t/t7509-commit-authorship.sh b/t/t7509-commit-authorship.sh
index ee6c474..d568593 100755
--- a/t/t7509-commit-authorship.sh
+++ b/t/t7509-commit-authorship.sh
@@ -147,7 +147,7 @@
 	test_tick &&
 	git commit -am "cherry-pick 1" --author="Cherry <cherry@pick.er>" &&
 	git tag cherry-pick-head &&
-	git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD &&
+	git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) &&
 	echo "This is a MERGE_MSG" >.git/MERGE_MSG &&
 	echo "cherry-pick 1b" >>foo &&
 	test_tick &&
@@ -162,7 +162,7 @@
 '
 
 test_expect_success '--reset-author with CHERRY_PICK_HEAD' '
-	git rev-parse cherry-pick-head >.git/CHERRY_PICK_HEAD &&
+	git update-ref CHERRY_PICK_HEAD $(git rev-parse cherry-pick-head) &&
 	echo "cherry-pick 2" >>foo &&
 	test_tick &&
 	git commit -am "cherry-pick 2" --reset-author &&
diff --git a/t/t7519-status-fsmonitor.sh b/t/t7519-status-fsmonitor.sh
index 637391c..deea88d 100755
--- a/t/t7519-status-fsmonitor.sh
+++ b/t/t7519-status-fsmonitor.sh
@@ -73,6 +73,7 @@
 	expect*
 	actual*
 	marker*
+	trace2*
 	EOF
 '
 
@@ -383,4 +384,52 @@
 	)
 '
 
+# Usage:
+# check_sparse_index_behavior [!]
+# If "!" is supplied, then we verify that we do not call ensure_full_index
+# during a call to 'git status'. Otherwise, we verify that we _do_ call it.
+check_sparse_index_behavior () {
+	git status --porcelain=v2 >expect &&
+	git sparse-checkout init --cone --sparse-index &&
+	git sparse-checkout set dir1 dir2 &&
+	GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
+		git status --porcelain=v2 >actual &&
+	test_region $1 index ensure_full_index trace2.txt &&
+	test_region fsm_hook query trace2.txt &&
+	test_cmp expect actual &&
+	rm trace2.txt &&
+	git sparse-checkout disable
+}
+
+test_expect_success 'status succeeds with sparse index' '
+	git reset --hard &&
+
+	test_config core.fsmonitor "$TEST_DIRECTORY/t7519/fsmonitor-all" &&
+	check_sparse_index_behavior ! &&
+
+	write_script .git/hooks/fsmonitor-test<<-\EOF &&
+		printf "last_update_token\0"
+	EOF
+	git config core.fsmonitor .git/hooks/fsmonitor-test &&
+	check_sparse_index_behavior ! &&
+
+	write_script .git/hooks/fsmonitor-test<<-\EOF &&
+		printf "last_update_token\0"
+		printf "dir1/modified\0"
+	EOF
+	check_sparse_index_behavior ! &&
+
+	cp -r dir1 dir1a &&
+	git add dir1a &&
+	git commit -m "add dir1a" &&
+
+	# This one modifies outside the sparse-checkout definition
+	# and hence we expect to expand the sparse-index.
+	write_script .git/hooks/fsmonitor-test<<-\EOF &&
+		printf "last_update_token\0"
+		printf "dir1a/modified\0"
+	EOF
+	check_sparse_index_behavior
+'
+
 test_done
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index 1cbc971..2ef39d3 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -122,6 +122,8 @@
 	c0=$(git rev-parse HEAD) &&
 	cp file.1 file &&
 	git add file &&
+	cp file.1 other &&
+	git add other &&
 	test_tick &&
 	git commit -m "commit 1" &&
 	git tag c1 &&
@@ -711,6 +713,15 @@
 	test_cmp result.1-5 file
 '
 
+test_expect_success 'failed fast-forward merge with --autostash' '
+	git reset --hard c0 &&
+	git merge-file file file.orig file.5 &&
+	cp file.5 other &&
+	test_must_fail git merge --autostash c1 2>err &&
+	test_i18ngrep "Applied autostash." err &&
+	test_cmp file.5 file
+'
+
 test_expect_success 'octopus merge with --autostash' '
 	git reset --hard c1 &&
 	git merge-file file file.orig file.3 &&
@@ -721,6 +732,14 @@
 	test_cmp result.1-3-5-9 file
 '
 
+test_expect_success 'failed merge (exit 2) with --autostash' '
+	git reset --hard c1 &&
+	git merge-file file file.orig file.5 &&
+	test_must_fail git merge -s recursive --autostash c2 c3 2>err &&
+	test_i18ngrep "Applied autostash." err &&
+	test_cmp result.1-5 file
+'
+
 test_expect_success 'conflicted merge with --autostash, --abort restores stash' '
 	git reset --hard c3 &&
 	cp file.1 file &&
diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
index 52e8ccc..1f652f4 100755
--- a/t/t7601-merge-pull-config.sh
+++ b/t/t7601-merge-pull-config.sh
@@ -27,120 +27,324 @@
 	git tag c3
 '
 
-test_expect_success 'pull.rebase not set' '
+test_expect_success 'pull.rebase not set, ff possible' '
 	git reset --hard c0 &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=true' '
 	git reset --hard c0 &&
 	test_config pull.ff true &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=false' '
 	git reset --hard c0 &&
 	test_config pull.ff false &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=only' '
 	git reset --hard c0 &&
 	test_config pull.ff only &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --rebase given' '
 	git reset --hard c0 &&
 	git pull --rebase . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --no-rebase given' '
 	git reset --hard c0 &&
 	git pull --no-rebase . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --ff given' '
 	git reset --hard c0 &&
 	git pull --ff . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --no-ff given' '
 	git reset --hard c0 &&
 	git pull --no-ff . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --ff-only given' '
 	git reset --hard c0 &&
 	git pull --ff-only . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set (not-fast-forward)' '
 	git reset --hard c2 &&
-	git -c color.advice=always pull . c1 2>err &&
+	test_must_fail git -c color.advice=always pull . c1 2>err &&
 	test_decode_color <err >decoded &&
 	test_i18ngrep "<YELLOW>hint: " decoded &&
-	test_i18ngrep "Pulling without specifying how to reconcile" decoded
+	test_i18ngrep "You have divergent branches" decoded
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=true (not-fast-forward)' '
 	git reset --hard c2 &&
 	test_config pull.ff true &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=false (not-fast-forward)' '
 	git reset --hard c2 &&
 	test_config pull.ff false &&
 	git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=only (not-fast-forward)' '
 	git reset --hard c2 &&
 	test_config pull.ff only &&
 	test_must_fail git pull . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --rebase given (not-fast-forward)' '
 	git reset --hard c2 &&
 	git pull --rebase . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --no-rebase given (not-fast-forward)' '
 	git reset --hard c2 &&
 	git pull --no-rebase . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --ff given (not-fast-forward)' '
 	git reset --hard c2 &&
 	git pull --ff . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --no-ff given (not-fast-forward)' '
 	git reset --hard c2 &&
 	git pull --no-ff . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
 '
 
 test_expect_success 'pull.rebase not set and --ff-only given (not-fast-forward)' '
 	git reset --hard c2 &&
 	test_must_fail git pull --ff-only . c1 2>err &&
-	test_i18ngrep ! "Pulling without specifying how to reconcile" err
+	test_i18ngrep ! "You have divergent branches" err
+'
+
+test_does_rebase () {
+	git reset --hard c2 &&
+	git "$@" . c1 &&
+	# Check that we actually did a rebase
+	git rev-list --count HEAD >actual &&
+	git rev-list --merges --count HEAD >>actual &&
+	test_write_lines 3 0 >expect &&
+	test_cmp expect actual &&
+	rm actual expect
+}
+
+# Prefers merge over fast-forward
+test_does_merge_when_ff_possible () {
+	git reset --hard c0 &&
+	git "$@" . c1 &&
+	# Check that we actually did a merge
+	git rev-list --count HEAD >actual &&
+	git rev-list --merges --count HEAD >>actual &&
+	test_write_lines 3 1 >expect &&
+	test_cmp expect actual &&
+	rm actual expect
+}
+
+# Prefers fast-forward over merge or rebase
+test_does_fast_forward () {
+	git reset --hard c0 &&
+	git "$@" . c1 &&
+
+	# Check that we did not get any merges
+	git rev-list --count HEAD >actual &&
+	git rev-list --merges --count HEAD >>actual &&
+	test_write_lines 2 0 >expect &&
+	test_cmp expect actual &&
+
+	# Check that we ended up at c1
+	git rev-parse HEAD >actual &&
+	git rev-parse c1^{commit} >expect &&
+	test_cmp actual expect &&
+
+	# Remove temporary files
+	rm actual expect
+}
+
+# Doesn't fail when fast-forward not possible; does a merge
+test_falls_back_to_full_merge () {
+	git reset --hard c2 &&
+	git "$@" . c1 &&
+	# Check that we actually did a merge
+	git rev-list --count HEAD >actual &&
+	git rev-list --merges --count HEAD >>actual &&
+	test_write_lines 4 1 >expect &&
+	test_cmp expect actual &&
+	rm actual expect
+}
+
+# Attempts fast forward, which is impossible, and bails
+test_attempts_fast_forward () {
+	git reset --hard c2 &&
+	test_must_fail git "$@" . c1 2>err &&
+	test_i18ngrep "Not possible to fast-forward, aborting" err
+}
+
+#
+# Group 1: Interaction of --ff-only with --[no-]rebase
+# (And related interaction of pull.ff=only with pull.rebase)
+#
+test_expect_success '--ff-only overrides --rebase' '
+	test_attempts_fast_forward pull --rebase --ff-only
+'
+
+test_expect_success '--ff-only overrides --rebase even if first' '
+	test_attempts_fast_forward pull --ff-only --rebase
+'
+
+test_expect_success '--ff-only overrides --no-rebase' '
+	test_attempts_fast_forward pull --ff-only --no-rebase
+'
+
+test_expect_success 'pull.ff=only overrides pull.rebase=true' '
+	test_attempts_fast_forward -c pull.ff=only -c pull.rebase=true pull
+'
+
+test_expect_success 'pull.ff=only overrides pull.rebase=false' '
+	test_attempts_fast_forward -c pull.ff=only -c pull.rebase=false pull
+'
+
+# Group 2: --rebase=[!false] overrides --no-ff and --ff
+# (And related interaction of pull.rebase=!false and pull.ff=!only)
+test_expect_success '--rebase overrides --no-ff' '
+	test_does_rebase pull --rebase --no-ff
+'
+
+test_expect_success '--rebase overrides --ff' '
+	test_does_rebase pull --rebase --ff
+'
+
+test_expect_success '--rebase fast-forwards when possible' '
+	test_does_fast_forward pull --rebase --ff
+'
+
+test_expect_success 'pull.rebase=true overrides pull.ff=false' '
+	test_does_rebase -c pull.rebase=true -c pull.ff=false pull
+'
+
+test_expect_success 'pull.rebase=true overrides pull.ff=true' '
+	test_does_rebase -c pull.rebase=true -c pull.ff=true pull
+'
+
+# Group 3: command line flags take precedence over config
+test_expect_success '--ff-only takes precedence over pull.rebase=true' '
+	test_attempts_fast_forward -c pull.rebase=true pull --ff-only
+'
+
+test_expect_success '--ff-only takes precedence over pull.rebase=false' '
+	test_attempts_fast_forward -c pull.rebase=false pull --ff-only
+'
+
+test_expect_success '--no-rebase takes precedence over pull.ff=only' '
+	test_falls_back_to_full_merge -c pull.ff=only pull --no-rebase
+'
+
+test_expect_success '--rebase takes precedence over pull.ff=only' '
+	test_does_rebase -c pull.ff=only pull --rebase
+'
+
+test_expect_success '--rebase overrides pull.ff=true' '
+	test_does_rebase -c pull.ff=true pull --rebase
+'
+
+test_expect_success '--rebase overrides pull.ff=false' '
+	test_does_rebase -c pull.ff=false pull --rebase
+'
+
+test_expect_success '--rebase overrides pull.ff unset' '
+	test_does_rebase pull --rebase
+'
+
+# Group 4: --no-rebase heeds pull.ff=!only or explict --ff or --no-ff
+
+test_expect_success '--no-rebase works with --no-ff' '
+	test_does_merge_when_ff_possible pull --no-rebase --no-ff
+'
+
+test_expect_success '--no-rebase works with --ff' '
+	test_does_fast_forward pull --no-rebase --ff
+'
+
+test_expect_success '--no-rebase does ff if pull.ff unset' '
+	test_does_fast_forward pull --no-rebase
+'
+
+test_expect_success '--no-rebase heeds pull.ff=true' '
+	test_does_fast_forward -c pull.ff=true pull --no-rebase
+'
+
+test_expect_success '--no-rebase heeds pull.ff=false' '
+	test_does_merge_when_ff_possible -c pull.ff=false pull --no-rebase
+'
+
+# Group 5: pull.rebase=!false in combination with --no-ff or --ff
+test_expect_success 'pull.rebase=true and --no-ff' '
+	test_does_rebase -c pull.rebase=true pull --no-ff
+'
+
+test_expect_success 'pull.rebase=true and --ff' '
+	test_does_rebase -c pull.rebase=true pull --ff
+'
+
+test_expect_success 'pull.rebase=false and --no-ff' '
+	test_does_merge_when_ff_possible -c pull.rebase=false pull --no-ff
+'
+
+test_expect_success 'pull.rebase=false and --ff, ff possible' '
+	test_does_fast_forward -c pull.rebase=false pull --ff
+'
+
+test_expect_success 'pull.rebase=false and --ff, ff not possible' '
+	test_falls_back_to_full_merge -c pull.rebase=false pull --ff
+'
+
+# End of groupings for conflicting merge vs. rebase flags/options
+
+test_expect_success 'Multiple heads warns about inability to fast forward' '
+	git reset --hard c1 &&
+	test_must_fail git pull . c2 c3 2>err &&
+	test_i18ngrep "You have divergent branches" err
+'
+
+test_expect_success 'Multiple can never be fast forwarded' '
+	git reset --hard c0 &&
+	test_must_fail git -c pull.ff=only pull . c1 c2 c3 2>err &&
+	test_i18ngrep ! "You have divergent branches" err &&
+	# In addition to calling out "cannot fast-forward", we very much
+	# want the "multiple branches" piece to be called out to users.
+	test_i18ngrep "Cannot fast-forward to multiple branches" err
+'
+
+test_expect_success 'Cannot rebase with multiple heads' '
+	git reset --hard c0 &&
+	test_must_fail git -c pull.rebase=true pull . c1 c2 c3 2>err &&
+	test_i18ngrep ! "You have divergent branches" err &&
+	test_i18ngrep "Cannot rebase onto multiple branches." err
 '
 
 test_expect_success 'merge c1 with c2' '
diff --git a/t/t7603-merge-reduce-heads.sh b/t/t7603-merge-reduce-heads.sh
index 9894895..27cd94a 100755
--- a/t/t7603-merge-reduce-heads.sh
+++ b/t/t7603-merge-reduce-heads.sh
@@ -68,7 +68,7 @@
 
 test_expect_success 'pull c2, c3, c4, c5 into c1' '
 	git reset --hard c1 &&
-	git pull . c2 c3 c4 c5 &&
+	git pull --no-rebase . c2 c3 c4 c5 &&
 	test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
 	test "$(git rev-parse c1)" = "$(git rev-parse HEAD^1)" &&
 	test "$(git rev-parse c2)" = "$(git rev-parse HEAD^2)" &&
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index 3e041e8..a173f56 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -770,7 +770,7 @@
 	echo 4 >4 &&
 	git add 1 2 4 &&
 	git commit -a -m "124" &&
-	git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output&&
+	git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output &&
 	cat >expect <<-\EOF &&
 	2
 	4
diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh
index 5830733..6b6423a 100755
--- a/t/t7810-grep.sh
+++ b/t/t7810-grep.sh
@@ -11,6 +11,13 @@
 
 . ./test-lib.sh
 
+test_invalid_grep_expression() {
+	params="$@" &&
+	test_expect_success "invalid expression: grep $params" '
+		test_must_fail git grep $params -- nonexisting
+	'
+}
+
 cat >hello.c <<EOF
 #include <assert.h>
 #include <stdio.h>
@@ -89,6 +96,8 @@
 	test_must_fail git grep "("
 '
 
+test_invalid_grep_expression --and -e A
+
 for H in HEAD ''
 do
 	case "$H" in
diff --git a/t/t7816-grep-binary-pattern.sh b/t/t7816-grep-binary-pattern.sh
index 60bab29..9d67a5f 100755
--- a/t/t7816-grep-binary-pattern.sh
+++ b/t/t7816-grep-binary-pattern.sh
@@ -59,7 +59,7 @@
 	git commit -m.
 "
 
-# Simple fixed-string matching that can use kwset (no -i && non-ASCII)
+# Simple fixed-string matching
 nul_match P P P '-F' 'yQf'
 nul_match P P P '-F' 'yQx'
 nul_match P P P '-Fi' 'YQf'
@@ -78,7 +78,7 @@
 nul_match P P P '-F' 'æQ[ð]'
 nul_match P P P '-F' '[æ]Qð'
 
-# The -F kwset codepath can't handle -i && non-ASCII...
+# Matching pattern and subject case with -i
 nul_match P 1 1 '-i' '[æ]Qð'
 
 # ...PCRE v2 only matches non-ASCII with -i casefolding under UTF-8
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index b93ae01..fc16ac2 100755
--- a/t/t7900-maintenance.sh
+++ b/t/t7900-maintenance.sh
@@ -356,8 +356,6 @@
 	done &&
 	GIT_TRACE2_EVENT="$(pwd)/pack-refs.txt" \
 		git maintenance run --task=pack-refs &&
-	ls .git/refs/heads/ >after &&
-	test_must_be_empty after &&
 	test_subcommand git pack-refs --all --prune <pack-refs.txt
 '
 
@@ -584,6 +582,23 @@
 	test_line_count = 0 actual
 '
 
+test_expect_success 'use launchctl list to prevent extra work' '
+	# ensure we are registered
+	GIT_TEST_MAINT_SCHEDULER=launchctl:./print-args git maintenance start &&
+
+	# do it again on a fresh args file
+	rm -f args &&
+	GIT_TEST_MAINT_SCHEDULER=launchctl:./print-args git maintenance start &&
+
+	ls "$HOME/Library/LaunchAgents" >actual &&
+	cat >expect <<-\EOF &&
+	list org.git-scm.git.hourly
+	list org.git-scm.git.daily
+	list org.git-scm.git.weekly
+	EOF
+	test_cmp expect args
+'
+
 test_expect_success 'start and stop Windows maintenance' '
 	write_script print-args <<-\EOF &&
 	echo $* >>args
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 30eff72..9022074 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -1368,6 +1368,16 @@
 	! grep "X-Mailer" stdout
 '
 
+test_expect_success $PREREQ 'sendemail.identity: bool variable without a value' '
+	git -c sendemail.xmailer \
+		send-email \
+		--dry-run \
+		--from="nobody@example.com" \
+		$patches >stdout &&
+	grep "To: default@example.com" stdout &&
+	grep "X-Mailer" stdout
+'
+
 test_expect_success $PREREQ '--no-to overrides sendemail.to' '
 	git send-email \
 		--dry-run \
@@ -1829,7 +1839,7 @@
 	grep "^!somebody@example\.org!$" commandline1
 '
 
-test_expect_success $PREREQ 'sendemail.aliasfile=~/.mailrc' '
+test_expect_success $PREREQ 'sendemail.aliasesfile=~/.mailrc' '
 	clean_fake_sendmail &&
 	echo "alias sbd  someone@example.org" >"$HOME/.mailrc" &&
 	git config --replace-all sendemail.aliasesfile "~/.mailrc" &&
@@ -2092,6 +2102,18 @@
 	do_xmailer_test 1 "--xmailer"
 '
 
+test_expect_success $PREREQ '--[no-]xmailer with sendemail.xmailer' '
+	test_when_finished "test_unconfig sendemail.xmailer" &&
+	cat >>.git/config <<-\EOF &&
+	[sendemail]
+		xmailer
+	EOF
+	test_config sendemail.xmailer true &&
+	do_xmailer_test 1 "" &&
+	do_xmailer_test 0 "--no-xmailer" &&
+	do_xmailer_test 1 "--xmailer"
+'
+
 test_expect_success $PREREQ '--[no-]xmailer with sendemail.xmailer=false' '
 	test_config sendemail.xmailer false &&
 	do_xmailer_test 0 "" &&
@@ -2099,6 +2121,13 @@
 	do_xmailer_test 1 "--xmailer"
 '
 
+test_expect_success $PREREQ '--[no-]xmailer with sendemail.xmailer=' '
+	test_config sendemail.xmailer "" &&
+	do_xmailer_test 0 "" &&
+	do_xmailer_test 0 "--no-xmailer" &&
+	do_xmailer_test 1 "--xmailer"
+'
+
 test_expect_success $PREREQ 'setup expected-list' '
 	git send-email \
 	--dry-run \
@@ -2169,7 +2198,7 @@
 
 test_expect_success $PREREQ 'test using command name with --sendmail-cmd' '
 	clean_fake_sendmail &&
-	PATH="$(pwd):$PATH" \
+	PATH="$PWD:$PATH" \
 	git send-email \
 		--from="Example <nobody@example.com>" \
 		--to=nobody@example.com \
@@ -2198,6 +2227,51 @@
 	test_path_is_file commandline1
 '
 
+test_expect_success $PREREQ 'set up in-reply-to/references patches' '
+	cat >has-reply.patch <<-\EOF &&
+	From: A U Thor <author@example.com>
+	Subject: patch with in-reply-to
+	Message-ID: <patch.with.in.reply.to@example.com>
+	In-Reply-To: <replied.to@example.com>
+	References: <replied.to@example.com>
+
+	This is the body.
+	EOF
+	cat >no-reply.patch <<-\EOF
+	From: A U Thor <author@example.com>
+	Subject: patch without in-reply-to
+	Message-ID: <patch.without.in.reply.to@example.com>
+
+	This is the body.
+	EOF
+'
+
+test_expect_success $PREREQ 'patch reply headers correct with --no-thread' '
+	clean_fake_sendmail &&
+	git send-email \
+		--no-thread \
+		--to=nobody@example.com \
+		--smtp-server="$(pwd)/fake.sendmail" \
+		has-reply.patch no-reply.patch &&
+	grep "In-Reply-To: <replied.to@example.com>" msgtxt1 &&
+	grep "References: <replied.to@example.com>" msgtxt1 &&
+	! grep replied.to@example.com msgtxt2
+'
+
+test_expect_success $PREREQ 'cmdline in-reply-to used with --no-thread' '
+	clean_fake_sendmail &&
+	git send-email \
+		--no-thread \
+		--in-reply-to="<cmdline.reply@example.com>" \
+		--to=nobody@example.com \
+		--smtp-server="$(pwd)/fake.sendmail" \
+		has-reply.patch no-reply.patch &&
+	grep "In-Reply-To: <cmdline.reply@example.com>" msgtxt1 &&
+	grep "References: <cmdline.reply@example.com>" msgtxt1 &&
+	grep "In-Reply-To: <cmdline.reply@example.com>" msgtxt2 &&
+	grep "References: <cmdline.reply@example.com>" msgtxt2
+'
+
 test_expect_success $PREREQ 'invoke hook' '
 	mkdir -p .git/hooks &&
 
diff --git a/t/t9002-column.sh b/t/t9002-column.sh
index 8998352..6d3dbde 100755
--- a/t/t9002-column.sh
+++ b/t/t9002-column.sh
@@ -42,6 +42,24 @@
 	test_cmp expected actual
 '
 
+test_expect_success '--nl' '
+	cat >expected <<\EOF &&
+oneZ
+twoZ
+threeZ
+fourZ
+fiveZ
+sixZ
+sevenZ
+eightZ
+nineZ
+tenZ
+elevenZ
+EOF
+	git column --nl="Z$LF" --mode=plain <lista >actual &&
+	test_cmp expected actual
+'
+
 test_expect_success '80 columns' '
 	cat >expected <<\EOF &&
 one    two    three  four   five   six    seven  eight  nine   ten    eleven
diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh
index 1d3fdcc..fea41b3 100755
--- a/t/t9100-git-svn-basic.sh
+++ b/t/t9100-git-svn-basic.sh
@@ -4,21 +4,13 @@
 #
 
 test_description='git svn basic tests'
-GIT_SVN_LC_ALL=${LC_ALL:-$LANG}
 
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./lib-git-svn.sh
 
-case "$GIT_SVN_LC_ALL" in
-*.UTF-8)
-	test_set_prereq UTF8
-	;;
-*)
-	say "# UTF-8 locale not set, some tests skipped ($GIT_SVN_LC_ALL)"
-	;;
-esac
+prepare_utf8_locale
 
 test_expect_success 'git svn --version works anywhere' '
 	nongit git svn --version
@@ -187,8 +179,8 @@
 	test ! -h "$SVN_TREE"/exec-2.sh &&
 	test_cmp help "$SVN_TREE"/exec-2.sh'
 
-name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL"
-LC_ALL="$GIT_SVN_LC_ALL"
+name="commit with UTF-8 message: locale: $GIT_TEST_UTF8_LOCALE"
+LC_ALL="$GIT_TEST_UTF8_LOCALE"
 export LC_ALL
 # This test relies on the previous test, hence requires POSIXPERM,SYMLINKS
 test_expect_success UTF8,POSIXPERM,SYMLINKS "$name" "
@@ -330,7 +322,7 @@
 	git svn fetch ) &&
 	rm -rf bare-repo
 	'
-test_expect_success 'git-svn works in in a repository with a gitdir: link' '
+test_expect_success 'git-svn works in a repository with a gitdir: link' '
 	mkdir worktree gitdir &&
 	( cd worktree &&
 	git svn init "$svnrepo" &&
diff --git a/t/t9115-git-svn-dcommit-funky-renames.sh b/t/t9115-git-svn-dcommit-funky-renames.sh
index 9b44a44..743fbe1 100755
--- a/t/t9115-git-svn-dcommit-funky-renames.sh
+++ b/t/t9115-git-svn-dcommit-funky-renames.sh
@@ -93,9 +93,9 @@
 # > ... All of the above characters, except for the backslash, are converted
 # > to special UNICODE characters in the range 0xf000 to 0xf0ff (the
 # > "Private use area") when creating or accessing files.
-prepare_a_utf8_locale
+prepare_utf8_locale
 test_expect_success UTF8,!MINGW,!UTF8_NFD_TO_NFC 'svn.pathnameencoding=cp932 new file on dcommit' '
-	LC_ALL=$a_utf8_locale &&
+	LC_ALL=$GIT_TEST_UTF8_LOCALE &&
 	export LC_ALL &&
 	neq=$(printf "\201\202") &&
 	git config svn.pathnameencoding cp932 &&
@@ -107,7 +107,7 @@
 
 # See the comment on the above test for setting of LC_ALL.
 test_expect_success !MINGW,!UTF8_NFD_TO_NFC 'svn.pathnameencoding=cp932 rename on dcommit' '
-	LC_ALL=$a_utf8_locale &&
+	LC_ALL=$GIT_TEST_UTF8_LOCALE &&
 	export LC_ALL &&
 	inf=$(printf "\201\207") &&
 	git config svn.pathnameencoding cp932 &&
diff --git a/t/t9129-git-svn-i18n-commitencoding.sh b/t/t9129-git-svn-i18n-commitencoding.sh
index 2c213ae..01e1e8a 100755
--- a/t/t9129-git-svn-i18n-commitencoding.sh
+++ b/t/t9129-git-svn-i18n-commitencoding.sh
@@ -14,12 +14,12 @@
 	test_cmp current "$1"
 }
 
-prepare_a_utf8_locale
+prepare_utf8_locale
 
 compare_svn_head_with () {
 	# extract just the log message and strip out committer info.
 	# don't use --limit here since svn 1.1.x doesn't have it,
-	LC_ALL="$a_utf8_locale" svn log $(git svn info --url) | perl -w -e '
+	LC_ALL="$GIT_TEST_UTF8_LOCALE" svn log $(git svn info --url) | perl -w -e '
 		use bytes;
 		$/ = ("-"x72) . "\n";
 		my @x = <STDIN>;
diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh
index 5c47ac4..aa55b41 100755
--- a/t/t9300-fast-import.sh
+++ b/t/t9300-fast-import.sh
@@ -392,7 +392,7 @@
 		git gc
 		git prune" &&
 	git fast-import <input &&
-	test -f .git/TEMP_TAG &&
+	test $(test-tool ref-store main resolve-ref TEMP_TAG 0 | cut -f1 -d " " ) != "$ZERO_OID" &&
 	test $(git rev-parse main) = $(git rev-parse TEMP_TAG^)
 '
 
@@ -1538,7 +1538,6 @@
 	commit refs/heads/O1
 	# -- ignore all of this text
 	committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
-	# $GIT_COMMITTER_NAME has inserted here for his benefit.
 	data <<COMMIT
 	dirty directory copy
 	COMMIT
diff --git a/t/t9351-fast-export-anonymize.sh b/t/t9351-fast-export-anonymize.sh
index 1c6e6fc..77047e2 100755
--- a/t/t9351-fast-export-anonymize.sh
+++ b/t/t9351-fast-export-anonymize.sh
@@ -18,7 +18,8 @@
 	git update-index --add --cacheinfo 160000,$fake_commit,link1 &&
 	git update-index --add --cacheinfo 160000,$fake_commit,link2 &&
 	git commit -m "add gitlink" &&
-	git tag -m "annotated tag" mytag
+	git tag -m "annotated tag" mytag &&
+	git tag -m "annotated tag with long message" longtag
 '
 
 test_expect_success 'export anonymized stream' '
@@ -55,7 +56,8 @@
 
 test_expect_success 'stream omits other refnames' '
 	! grep main stream &&
-	! grep mytag stream
+	! grep mytag stream &&
+	! grep longtag stream
 '
 
 test_expect_success 'stream omits identities' '
@@ -118,9 +120,9 @@
 	test_line_count = 1 commits
 '
 
-test_expect_success 'tag points to branch tip' '
+test_expect_success 'all tags point to branch tip' '
 	git rev-parse $other_branch >expect &&
-	git for-each-ref --format="%(*objectname)" | grep . >actual &&
+	git for-each-ref --format="%(*objectname)" | grep . | uniq >actual &&
 	test_cmp expect actual
 '
 
diff --git a/t/t9802-git-p4-filetype.sh b/t/t9802-git-p4-filetype.sh
index 94edebe2..19073c6 100755
--- a/t/t9802-git-p4-filetype.sh
+++ b/t/t9802-git-p4-filetype.sh
@@ -263,7 +263,7 @@
 	(
 		cd "$git" &&
 		test -L symlink &&
-		test $(readlink symlink) = symlink-target
+		test $(test_readlink symlink) = symlink-target
 	)
 '
 
@@ -329,7 +329,7 @@
 	git p4 clone --dest="$git" //depot@all &&
 	(
 		cd "$git" &&
-		test $(readlink empty-symlink) = target2
+		test $(test_readlink empty-symlink) = target2
 	)
 '
 
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index cb057ef..5decc3b 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -540,6 +540,15 @@
 	EOF
 '
 
+test_expect_success '__gitcomp - equal skip' '
+	test_gitcomp "--option=" "--option=" <<-\EOF &&
+
+	EOF
+	test_gitcomp "option=" "option=" <<-\EOF
+
+	EOF
+'
+
 test_expect_success '__gitcomp - doesnt fail because of invalid variable name' '
 	__gitcomp "$invalid_variable_name"
 '
@@ -2380,6 +2389,12 @@
 	EOF
 '
 
+test_expect_success 'options with value' '
+	test_completion "git merge -X diff-algorithm=" <<-\EOF
+
+	EOF
+'
+
 test_expect_success 'sourcing the completion script clears cached commands' '
 	__git_compute_all_commands &&
 	verbose test -n "$__git_all_commands" &&
@@ -2404,6 +2419,19 @@
 	verbose test -z "$__gitcomp_builtin_notes_edit"
 '
 
+test_expect_success 'option aliases are not shown by default' '
+	test_completion "git clone --recurs" "--recurse-submodules "
+'
+
+test_expect_success 'option aliases are shown with GIT_COMPLETION_SHOW_ALL' '
+	. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" &&
+	GIT_COMPLETION_SHOW_ALL=1 && export GIT_COMPLETION_SHOW_ALL &&
+	test_completion "git clone --recurs" <<-\EOF
+	--recurse-submodules Z
+	--recursive Z
+	EOF
+'
+
 test_expect_success '__git_complete' '
 	unset -f __git_wrap__git_main &&
 
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index f0448da..e28411b 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -845,6 +845,32 @@
 	fi
 }
 
+# SYNOPSIS:
+# 	test_stdout_line_count <bin-ops> <value> <cmd> [<args>...]
+#
+# test_stdout_line_count checks that the output of a command has the number
+# of lines it ought to. For example:
+#
+# test_stdout_line_count = 3 git ls-files -u
+# test_stdout_line_count -gt 10 ls
+test_stdout_line_count () {
+	local ops val trashdir &&
+	if test "$#" -le 3
+	then
+		BUG "expect 3 or more arguments"
+	fi &&
+	ops="$1" &&
+	val="$2" &&
+	shift 2 &&
+	if ! trashdir="$(git rev-parse --git-dir)/trash"; then
+		BUG "expect to be run inside a worktree"
+	fi &&
+	mkdir -p "$trashdir" &&
+	"$@" >"$trashdir/output" &&
+	test_line_count "$ops" "$val" "$trashdir/output"
+}
+
+
 test_file_size () {
 	test "$#" -ne 1 && BUG "1 param"
 	test-tool path-utils file-size "$1"
@@ -1453,46 +1479,24 @@
 	)
 } 7>&2 2>&4
 
-# convert function arguments or stdin (if not arguments given) to pktline
-# representation. If multiple arguments are given, they are separated by
-# whitespace and put in a single packet. Note that data containing NULs must be
-# given on stdin, and that empty input becomes an empty packet, not a flush
-# packet (for that you can just print 0000 yourself).
+# These functions are historical wrappers around "test-tool pkt-line"
+# for older tests. Use "test-tool pkt-line" itself in new tests.
 packetize () {
 	if test $# -gt 0
 	then
 		packet="$*"
 		printf '%04x%s' "$((4 + ${#packet}))" "$packet"
 	else
-		perl -e '
-			my $packet = do { local $/; <STDIN> };
-			printf "%04x%s", 4 + length($packet), $packet;
-		'
+		test-tool pkt-line pack
 	fi
 }
 
-# Parse the input as a series of pktlines, writing the result to stdout.
-# Sideband markers are removed automatically, and the output is routed to
-# stderr if appropriate.
-#
-# NUL bytes are converted to "\\0" for ease of parsing with text tools.
+packetize_raw () {
+	test-tool pkt-line pack-raw-stdin
+}
+
 depacketize () {
-	perl -e '
-		while (read(STDIN, $len, 4) == 4) {
-			if ($len eq "0000") {
-				print "FLUSH\n";
-			} else {
-				read(STDIN, $buf, hex($len) - 4);
-				$buf =~ s/\0/\\0/g;
-				if ($buf =~ s/^[\x2\x3]//) {
-					print STDERR $buf;
-				} else {
-					$buf =~ s/^\x1//;
-					print $buf;
-				}
-			}
-		}
-	'
+	test-tool pkt-line unpack
 }
 
 # Converts base-16 data into base-8. The output is given as a sequence of
@@ -1708,3 +1712,9 @@
 
 	return 0
 }
+
+# Print the destination of symlink(s) provided as arguments. Basically
+# the same as the readlink command, but it's not available everywhere.
+test_readlink () {
+	perl -le 'print readlink($_) for @ARGV' "$@"
+}
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 54938c6..fc1e521 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -57,6 +57,15 @@
 . "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
 export PERL_PATH SHELL_PATH
 
+# In t0000, we need to override test directories of nested testcases. In case
+# the developer has TEST_OUTPUT_DIRECTORY part of his build options, then we'd
+# reset this value to instead contain what the developer has specified. We thus
+# have this knob to allow overriding the directory.
+if test -n "${TEST_OUTPUT_DIRECTORY_OVERRIDE}"
+then
+	TEST_OUTPUT_DIRECTORY="${TEST_OUTPUT_DIRECTORY_OVERRIDE}"
+fi
+
 # Disallow the use of abbreviated options in the test suite by default
 if test -z "${GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS}"
 then
@@ -400,20 +409,27 @@
 	verbose=t
 fi
 
+# Since bash 5.0, checkwinsize is enabled by default which does
+# update the COLUMNS variable every time a non-builtin command
+# completes, even for non-interactive shells.
+# Disable that since we are aiming for repeatability.
+test -n "$BASH_VERSION" && shopt -u checkwinsize 2>/dev/null
+
 # For repeatability, reset the environment to known value.
 # TERM is sanitized below, after saving color control sequences.
 LANG=C
 LC_ALL=C
 PAGER=cat
 TZ=UTC
-export LANG LC_ALL PAGER TZ
+COLUMNS=80
+export LANG LC_ALL PAGER TZ COLUMNS
 EDITOR=:
 
 # A call to "unset" with no arguments causes at least Solaris 10
 # /usr/xpg4/bin/sh and /bin/ksh to bail out.  So keep the unsets
 # deriving from the command substitution clustered with the other
 # ones.
-unset VISUAL EMAIL LANGUAGE COLUMNS $("$PERL_PATH" -e '
+unset VISUAL EMAIL LANGUAGE $("$PERL_PATH" -e '
 	my @env = keys %ENV;
 	my $ok = join("|", qw(
 		TRACE
@@ -732,14 +748,24 @@
 	arg="$1"
 	shift
 	test -z "$*" && return 1
-	for pattern_
-	do
-		case "$arg" in
-		$pattern_)
-			return 0
-		esac
-	done
-	return 1
+	# We need to use "$*" to get field-splitting, but we want to
+	# disable globbing, since we are matching against an arbitrary
+	# $arg, not what's in the filesystem. Using "set -f" accomplishes
+	# that, but we must do it in a subshell to avoid impacting the
+	# rest of the script. The exit value of the subshell becomes
+	# the function's return value.
+	(
+		set -f
+		for pattern_ in $*
+		do
+			case "$arg" in
+			$pattern_)
+				exit 0
+				;;
+			esac
+		done
+		exit 1
+	)
 }
 
 match_test_selector_list () {
@@ -848,7 +874,7 @@
 last_verbose=t
 maybe_setup_verbose () {
 	test -z "$verbose_only" && return
-	if match_pattern_list $test_count $verbose_only
+	if match_pattern_list $test_count "$verbose_only"
 	then
 		exec 4>&2 3>&1
 		# Emit a delimiting blank line when going from
@@ -878,7 +904,7 @@
 		return
 	fi
 	GIT_VALGRIND_ENABLED=
-	if match_pattern_list $test_count $valgrind_only
+	if match_pattern_list $test_count "$valgrind_only"
 	then
 		GIT_VALGRIND_ENABLED=t
 	fi
@@ -1006,7 +1032,7 @@
 test_skip () {
 	to_skip=
 	skipped_reason=
-	if match_pattern_list $this_test.$test_count $GIT_SKIP_TESTS
+	if match_pattern_list $this_test.$test_count "$GIT_SKIP_TESTS"
 	then
 		to_skip=t
 		skipped_reason="GIT_SKIP_TESTS"
@@ -1317,7 +1343,8 @@
 GIT_TEMPLATE_DIR="$GIT_BUILD_DIR"/templates/blt
 GIT_CONFIG_NOSYSTEM=1
 GIT_ATTR_NOSYSTEM=1
-export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_ATTR_NOSYSTEM
+GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/.."
+export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_ATTR_NOSYSTEM GIT_CEILING_DIRECTORIES
 
 if test -z "$GIT_TEST_CMP"
 then
@@ -1346,7 +1373,7 @@
 remove_trash=
 this_test=${0##*/}
 this_test=${this_test%%-*}
-if match_pattern_list "$this_test" $GIT_SKIP_TESTS
+if match_pattern_list "$this_test" "$GIT_SKIP_TESTS"
 then
 	say_color info >&3 "skipping test $this_test altogether"
 	skip_all="skip all tests in $this_test"
@@ -1498,6 +1525,8 @@
 	;;
 esac
 
+test_set_prereq REFFILES
+
 ( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1
 test -z "$NO_PERL" && test_set_prereq PERL
 test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
@@ -1523,6 +1552,12 @@
 	ln -s x y && test -h y
 '
 
+test_lazy_prereq SYMLINKS_WINDOWS '
+	# test whether symbolic links are enabled on Windows
+	test_have_prereq MINGW &&
+	cmd //c "mklink y x" &> /dev/null && test -h y
+'
+
 test_lazy_prereq FILEMODE '
 	test "$(git config --bool core.filemode)" = true
 '
diff --git a/trace2.c b/trace2.c
index 256120c..b9b154a 100644
--- a/trace2.c
+++ b/trace2.c
@@ -260,6 +260,19 @@
 			tgt_j->pfn_command_path_fl(file, line, pathname);
 }
 
+void trace2_cmd_ancestry_fl(const char *file, int line, const char **parent_names)
+{
+	struct tr2_tgt *tgt_j;
+	int j;
+
+	if (!trace2_enabled)
+		return;
+
+	for_each_wanted_builtin (j, tgt_j)
+		if (tgt_j->pfn_command_ancestry_fl)
+			tgt_j->pfn_command_ancestry_fl(file, line, parent_names);
+}
+
 void trace2_cmd_name_fl(const char *file, int line, const char *name)
 {
 	struct tr2_tgt *tgt_j;
diff --git a/trace2.h b/trace2.h
index ede18c2..9b7286c 100644
--- a/trace2.h
+++ b/trace2.h
@@ -134,6 +134,16 @@
 #define trace2_cmd_path(p) trace2_cmd_path_fl(__FILE__, __LINE__, (p))
 
 /*
+ * Emit an 'ancestry' event with the process name of the current process's
+ * parent process.
+ * This gives post-processors a way to determine what invoked the command and
+ * learn more about usage patterns.
+ */
+void trace2_cmd_ancestry_fl(const char *file, int line, const char **parent_names);
+
+#define trace2_cmd_ancestry(v) trace2_cmd_ancestry_fl(__FILE__, __LINE__, (v))
+
+/*
  * Emit a 'cmd_name' event with the canonical name of the command.
  * This gives post-processors a simple field to identify the command
  * without having to parse the argv.
@@ -492,13 +502,7 @@
 	TRACE2_PROCESS_INFO_EXIT,
 };
 
-#if defined(GIT_WINDOWS_NATIVE)
 void trace2_collect_process_info(enum trace2_process_info_reason reason);
-#else
-#define trace2_collect_process_info(reason) \
-	do {                                \
-	} while (0)
-#endif
 
 const char *trace2_session_id(void);
 
diff --git a/trace2/tr2_tgt.h b/trace2/tr2_tgt.h
index 7b90469..1f66fd6 100644
--- a/trace2/tr2_tgt.h
+++ b/trace2/tr2_tgt.h
@@ -27,6 +27,8 @@
 
 typedef void(tr2_tgt_evt_command_path_fl_t)(const char *file, int line,
 					    const char *command_path);
+typedef void(tr2_tgt_evt_command_ancestry_fl_t)(const char *file, int line,
+						const char **parent_names);
 typedef void(tr2_tgt_evt_command_name_fl_t)(const char *file, int line,
 					    const char *name,
 					    const char *hierarchy);
@@ -108,6 +110,7 @@
 	tr2_tgt_evt_atexit_t                    *pfn_atexit;
 	tr2_tgt_evt_error_va_fl_t               *pfn_error_va_fl;
 	tr2_tgt_evt_command_path_fl_t           *pfn_command_path_fl;
+	tr2_tgt_evt_command_ancestry_fl_t	*pfn_command_ancestry_fl;
 	tr2_tgt_evt_command_name_fl_t           *pfn_command_name_fl;
 	tr2_tgt_evt_command_mode_fl_t           *pfn_command_mode_fl;
 	tr2_tgt_evt_alias_fl_t                  *pfn_alias_fl;
diff --git a/trace2/tr2_tgt_event.c b/trace2/tr2_tgt_event.c
index 6353e8a..578a9a5 100644
--- a/trace2/tr2_tgt_event.c
+++ b/trace2/tr2_tgt_event.c
@@ -261,6 +261,26 @@
 	jw_release(&jw);
 }
 
+static void fn_command_ancestry_fl(const char *file, int line, const char **parent_names)
+{
+	const char *event_name = "cmd_ancestry";
+	const char *parent_name = NULL;
+	struct json_writer jw = JSON_WRITER_INIT;
+
+	jw_object_begin(&jw, 0);
+	event_fmt_prepare(event_name, file, line, NULL, &jw);
+	jw_object_inline_begin_array(&jw, "ancestry");
+
+	while ((parent_name = *parent_names++))
+		jw_array_string(&jw, parent_name);
+
+	jw_end(&jw); /* 'ancestry' array */
+	jw_end(&jw); /* event object */
+
+	tr2_dst_write_line(&tr2dst_event, &jw.json);
+	jw_release(&jw);
+}
+
 static void fn_command_name_fl(const char *file, int line, const char *name,
 			       const char *hierarchy)
 {
@@ -584,6 +604,7 @@
 	fn_atexit,
 	fn_error_va_fl,
 	fn_command_path_fl,
+	fn_command_ancestry_fl,
 	fn_command_name_fl,
 	fn_command_mode_fl,
 	fn_alias_fl,
diff --git a/trace2/tr2_tgt_normal.c b/trace2/tr2_tgt_normal.c
index 31b602c..a5751c8 100644
--- a/trace2/tr2_tgt_normal.c
+++ b/trace2/tr2_tgt_normal.c
@@ -160,6 +160,24 @@
 	strbuf_release(&buf_payload);
 }
 
+static void fn_command_ancestry_fl(const char *file, int line, const char **parent_names)
+{
+	const char *parent_name = NULL;
+	struct strbuf buf_payload = STRBUF_INIT;
+
+	/* cmd_ancestry parent <- grandparent <- great-grandparent */
+	strbuf_addstr(&buf_payload, "cmd_ancestry ");
+	while ((parent_name = *parent_names++)) {
+		strbuf_addstr(&buf_payload, parent_name);
+		/* if we'll write another one after this, add a delimiter */
+		if (parent_names && *parent_names)
+			strbuf_addstr(&buf_payload, " <- ");
+	}
+
+	normal_io_write_fl(file, line, &buf_payload);
+	strbuf_release(&buf_payload);
+}
+
 static void fn_command_name_fl(const char *file, int line, const char *name,
 			       const char *hierarchy)
 {
@@ -306,6 +324,7 @@
 	fn_atexit,
 	fn_error_va_fl,
 	fn_command_path_fl,
+	fn_command_ancestry_fl,
 	fn_command_name_fl,
 	fn_command_mode_fl,
 	fn_alias_fl,
diff --git a/trace2/tr2_tgt_perf.c b/trace2/tr2_tgt_perf.c
index a8018f1..af4d65a 100644
--- a/trace2/tr2_tgt_perf.c
+++ b/trace2/tr2_tgt_perf.c
@@ -253,6 +253,21 @@
 	strbuf_release(&buf_payload);
 }
 
+static void fn_command_ancestry_fl(const char *file, int line, const char **parent_names)
+{
+	const char *event_name = "cmd_ancestry";
+	struct strbuf buf_payload = STRBUF_INIT;
+
+	strbuf_addstr(&buf_payload, "ancestry:[");
+	/* It's not an argv but the rules are basically the same. */
+	sq_append_quote_argv_pretty(&buf_payload, parent_names);
+	strbuf_addch(&buf_payload, ']');
+
+	perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,
+			 &buf_payload);
+	strbuf_release(&buf_payload);
+}
+
 static void fn_command_name_fl(const char *file, int line, const char *name,
 			       const char *hierarchy)
 {
@@ -532,6 +547,7 @@
 	fn_atexit,
 	fn_error_va_fl,
 	fn_command_path_fl,
+	fn_command_ancestry_fl,
 	fn_command_name_fl,
 	fn_command_mode_fl,
 	fn_alias_fl,
diff --git a/transport.c b/transport.c
index 50f5830..17e9629 100644
--- a/transport.c
+++ b/transport.c
@@ -147,9 +147,11 @@
 	transport->hash_algo = data->header.hash_algo;
 
 	for (i = 0; i < data->header.references.nr; i++) {
-		struct ref_list_entry *e = data->header.references.list + i;
-		struct ref *ref = alloc_ref(e->name);
-		oidcpy(&ref->old_oid, &e->oid);
+		struct string_list_item *e = data->header.references.items + i;
+		const char *name = e->string;
+		struct ref *ref = alloc_ref(name);
+		struct object_id *oid = e->util;
+		oidcpy(&ref->old_oid, oid);
 		ref->next = result;
 		result = ref;
 	}
@@ -175,6 +177,7 @@
 	struct bundle_transport_data *data = transport->data;
 	if (data->fd > 0)
 		close(data->fd);
+	bundle_header_release(&data->header);
 	free(data);
 	return 0;
 }
@@ -1052,7 +1055,7 @@
 	struct transport *ret = xcalloc(1, sizeof(*ret));
 
 	ret->progress = isatty(2);
-	string_list_init(&ret->pack_lockfiles, 1);
+	string_list_init_dup(&ret->pack_lockfiles);
 
 	if (!remote)
 		BUG("No remote provided to transport_get()");
@@ -1081,6 +1084,7 @@
 		die(_("git-over-rsync is no longer supported"));
 	} else if (url_is_local_not_ssh(url) && is_file(url) && is_bundle(url, 1)) {
 		struct bundle_transport_data *data = xcalloc(1, sizeof(*data));
+		bundle_header_init(&data->header);
 		transport_check_allowed("file");
 		ret->data = data;
 		ret->vtable = &bundle_vtable;
diff --git a/unpack-trees.c b/unpack-trees.c
index f88a69f..a903e71 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -111,17 +111,17 @@
 	strvec_init(&opts->msgs_to_free);
 
 	if (!strcmp(cmd, "checkout"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("Your local changes to the following files would be overwritten by checkout:\n%%s"
 			  "Please commit your changes or stash them before you switch branches.")
 		      : _("Your local changes to the following files would be overwritten by checkout:\n%%s");
 	else if (!strcmp(cmd, "merge"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("Your local changes to the following files would be overwritten by merge:\n%%s"
 			  "Please commit your changes or stash them before you merge.")
 		      : _("Your local changes to the following files would be overwritten by merge:\n%%s");
 	else
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("Your local changes to the following files would be overwritten by %s:\n%%s"
 			  "Please commit your changes or stash them before you %s.")
 		      : _("Your local changes to the following files would be overwritten by %s:\n%%s");
@@ -132,17 +132,17 @@
 		_("Updating the following directories would lose untracked files in them:\n%s");
 
 	if (!strcmp(cmd, "checkout"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be removed by checkout:\n%%s"
 			  "Please move or remove them before you switch branches.")
 		      : _("The following untracked working tree files would be removed by checkout:\n%%s");
 	else if (!strcmp(cmd, "merge"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be removed by merge:\n%%s"
 			  "Please move or remove them before you merge.")
 		      : _("The following untracked working tree files would be removed by merge:\n%%s");
 	else
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be removed by %s:\n%%s"
 			  "Please move or remove them before you %s.")
 		      : _("The following untracked working tree files would be removed by %s:\n%%s");
@@ -150,17 +150,17 @@
 		strvec_pushf(&opts->msgs_to_free, msg, cmd, cmd);
 
 	if (!strcmp(cmd, "checkout"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be overwritten by checkout:\n%%s"
 			  "Please move or remove them before you switch branches.")
 		      : _("The following untracked working tree files would be overwritten by checkout:\n%%s");
 	else if (!strcmp(cmd, "merge"))
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be overwritten by merge:\n%%s"
 			  "Please move or remove them before you merge.")
 		      : _("The following untracked working tree files would be overwritten by merge:\n%%s");
 	else
-		msg = advice_commit_before_merge
+		msg = advice_enabled(ADVICE_COMMIT_BEFORE_MERGE)
 		      ? _("The following untracked working tree files would be overwritten by %s:\n%%s"
 			  "Please move or remove them before you %s.")
 		      : _("The following untracked working tree files would be overwritten by %s:\n%%s");
@@ -392,6 +392,11 @@
 	string_list_clear(&list, 0);
 }
 
+static int must_checkout(const struct cache_entry *ce)
+{
+	return ce->ce_flags & CE_UPDATE;
+}
+
 static int check_updates(struct unpack_trees_options *o,
 			 struct index_state *index)
 {
@@ -442,28 +447,12 @@
 	if (should_update_submodules())
 		load_gitmodules_file(index, &state);
 
-	if (has_promisor_remote()) {
+	if (has_promisor_remote())
 		/*
 		 * Prefetch the objects that are to be checked out in the loop
 		 * below.
 		 */
-		struct oid_array to_fetch = OID_ARRAY_INIT;
-		for (i = 0; i < index->cache_nr; i++) {
-			struct cache_entry *ce = index->cache[i];
-
-			if (!(ce->ce_flags & CE_UPDATE) ||
-			    S_ISGITLINK(ce->ce_mode))
-				continue;
-			if (!oid_object_info_extended(the_repository, &ce->oid,
-						      NULL,
-						      OBJECT_INFO_FOR_PREFETCH))
-				continue;
-			oid_array_append(&to_fetch, &ce->oid);
-		}
-		promisor_remote_get_direct(the_repository,
-					   to_fetch.oid, to_fetch.nr);
-		oid_array_clear(&to_fetch);
-	}
+		prefetch_cache_entries(index, must_checkout);
 
 	get_parallel_checkout_configs(&pc_workers, &pc_threshold);
 
@@ -473,7 +462,7 @@
 	for (i = 0; i < index->cache_nr; i++) {
 		struct cache_entry *ce = index->cache[i];
 
-		if (ce->ce_flags & CE_UPDATE) {
+		if (must_checkout(ce)) {
 			size_t last_pc_queue_size = pc_queue_size();
 
 			if (ce->ce_flags & CE_WT_REMOVE)
@@ -490,7 +479,7 @@
 		errs |= run_parallel_checkout(&state, pc_workers, pc_threshold,
 					      progress, &cnt);
 	stop_progress(&progress);
-	errs |= finish_delayed_checkout(&state, NULL);
+	errs |= finish_delayed_checkout(&state, NULL, o->verbose_update);
 	git_attr_set_direction(GIT_ATTR_CHECKIN);
 
 	if (o->clone)
@@ -600,6 +589,13 @@
 {
 	ce->ce_flags |= CE_UNPACKED;
 
+	/*
+	 * If this is a sparse directory, don't advance cache_bottom.
+	 * That will be advanced later using the cache-tree data.
+	 */
+	if (S_ISSPARSEDIR(ce->ce_mode))
+		return;
+
 	if (o->cache_bottom < o->src_index->cache_nr &&
 	    o->src_index->cache[o->cache_bottom] == ce) {
 		int bottom = o->cache_bottom;
@@ -797,7 +793,7 @@
 		BUG("We need cache-tree to do this optimization");
 
 	/*
-	 * Do what unpack_callback() and unpack_nondirectories() normally
+	 * Do what unpack_callback() and unpack_single_entry() normally
 	 * do. But we walk all paths in an iterative loop instead.
 	 *
 	 * D/F conflicts and higher stage entries are not a concern
@@ -976,6 +972,7 @@
 	int pathlen, ce_len;
 	const char *ce_name;
 	int cmp;
+	unsigned ce_mode;
 
 	/*
 	 * If we have not precomputed the traverse path, it is quicker
@@ -998,7 +995,8 @@
 	ce_len -= pathlen;
 	ce_name = ce->name + pathlen;
 
-	return df_name_compare(ce_name, ce_len, S_IFREG, name, namelen, mode);
+	ce_mode = S_ISSPARSEDIR(ce->ce_mode) ? S_IFDIR : S_IFREG;
+	return df_name_compare(ce_name, ce_len, ce_mode, name, namelen, mode);
 }
 
 static int compare_entry(const struct cache_entry *ce, const struct traverse_info *info, const struct name_entry *n)
@@ -1008,6 +1006,16 @@
 		return cmp;
 
 	/*
+	 * At this point, we know that we have a prefix match. If ce
+	 * is a sparse directory, then allow an exact match. This only
+	 * works when the input name is a directory, since ce->name
+	 * ends in a directory separator.
+	 */
+	if (S_ISSPARSEDIR(ce->ce_mode) &&
+	    ce->ce_namelen == traverse_path_len(info, tree_entry_len(n)) + 1)
+		return 0;
+
+	/*
 	 * Even if the beginning compared identically, the ce should
 	 * compare as bigger than a directory leading up to it!
 	 */
@@ -1033,13 +1041,15 @@
 	const struct name_entry *n,
 	int stage,
 	struct index_state *istate,
-	int is_transient)
+	int is_transient,
+	int is_sparse_directory)
 {
 	size_t len = traverse_path_len(info, tree_entry_len(n));
+	size_t alloc_len = is_sparse_directory ? len + 1 : len;
 	struct cache_entry *ce =
 		is_transient ?
-		make_empty_transient_cache_entry(len, NULL) :
-		make_empty_cache_entry(istate, len);
+		make_empty_transient_cache_entry(alloc_len, NULL) :
+		make_empty_cache_entry(istate, alloc_len);
 
 	ce->ce_mode = create_ce_mode(n->mode);
 	ce->ce_flags = create_ce_flags(stage);
@@ -1048,6 +1058,13 @@
 	/* len+1 because the cache_entry allocates space for NUL */
 	make_traverse_path(ce->name, len + 1, info, n->path, n->pathlen);
 
+	if (is_sparse_directory) {
+		ce->name[len] = '/';
+		ce->name[len + 1] = '\0';
+		ce->ce_namelen++;
+		ce->ce_flags |= CE_SKIP_WORKTREE;
+	}
+
 	return ce;
 }
 
@@ -1056,21 +1073,28 @@
  * without actually calling it. If you change the logic here you may need to
  * check and change there as well.
  */
-static int unpack_nondirectories(int n, unsigned long mask,
-				 unsigned long dirmask,
-				 struct cache_entry **src,
-				 const struct name_entry *names,
-				 const struct traverse_info *info)
+static int unpack_single_entry(int n, unsigned long mask,
+			       unsigned long dirmask,
+			       struct cache_entry **src,
+			       const struct name_entry *names,
+			       const struct traverse_info *info)
 {
 	int i;
 	struct unpack_trees_options *o = info->data;
 	unsigned long conflicts = info->df_conflicts | dirmask;
 
-	/* Do we have *only* directories? Nothing to do */
 	if (mask == dirmask && !src[0])
 		return 0;
 
 	/*
+	 * When we have a sparse directory entry for src[0],
+	 * then this isn't necessarily a directory-file conflict.
+	 */
+	if (mask == dirmask && src[0] &&
+	    S_ISSPARSEDIR(src[0]->ce_mode))
+		conflicts = 0;
+
+	/*
 	 * Ok, we've filled in up to any potential index entry in src[0],
 	 * now do the rest.
 	 */
@@ -1099,7 +1123,9 @@
 		 * not stored in the index.  otherwise construct the
 		 * cache entry from the index aware logic.
 		 */
-		src[i + o->merge] = create_ce_entry(info, names + i, stage, &o->result, o->merge);
+		src[i + o->merge] = create_ce_entry(info, names + i, stage,
+						    &o->result, o->merge,
+						    bit & dirmask);
 	}
 
 	if (o->merge) {
@@ -1203,16 +1229,71 @@
 	return -1;
 }
 
+/*
+ * Given a sparse directory entry 'ce', compare ce->name to
+ * info->name + '/' + p->path + '/' if info->name is non-empty.
+ * Compare ce->name to p->path + '/' otherwise. Note that
+ * ce->name must end in a trailing '/' because it is a sparse
+ * directory entry.
+ */
+static int sparse_dir_matches_path(const struct cache_entry *ce,
+				   struct traverse_info *info,
+				   const struct name_entry *p)
+{
+	assert(S_ISSPARSEDIR(ce->ce_mode));
+	assert(ce->name[ce->ce_namelen - 1] == '/');
+
+	if (info->namelen)
+		return ce->ce_namelen == info->namelen + p->pathlen + 2 &&
+		       ce->name[info->namelen] == '/' &&
+		       !strncmp(ce->name, info->name, info->namelen) &&
+		       !strncmp(ce->name + info->namelen + 1, p->path, p->pathlen);
+	return ce->ce_namelen == p->pathlen + 1 &&
+	       !strncmp(ce->name, p->path, p->pathlen);
+}
+
 static struct cache_entry *find_cache_entry(struct traverse_info *info,
 					    const struct name_entry *p)
 {
+	struct cache_entry *ce;
 	int pos = find_cache_pos(info, p->path, p->pathlen);
 	struct unpack_trees_options *o = info->data;
 
 	if (0 <= pos)
 		return o->src_index->cache[pos];
-	else
+
+	/*
+	 * Check for a sparse-directory entry named "path/".
+	 * Due to the input p->path not having a trailing
+	 * slash, the negative 'pos' value overshoots the
+	 * expected position, hence "-2" instead of "-1".
+	 */
+	pos = -pos - 2;
+
+	if (pos < 0 || pos >= o->src_index->cache_nr)
 		return NULL;
+
+	/*
+	 * Due to lexicographic sorting and sparse directory
+	 * entries ending with a trailing slash, our path as a
+	 * sparse directory (e.g "subdir/") and	our path as a
+	 * file (e.g. "subdir") might be separated by other
+	 * paths (e.g. "subdir-").
+	 */
+	while (pos >= 0) {
+		ce = o->src_index->cache[pos];
+
+		if (strncmp(ce->name, p->path, p->pathlen))
+			return NULL;
+
+		if (S_ISSPARSEDIR(ce->ce_mode) &&
+		    sparse_dir_matches_path(ce, info, p))
+			return ce;
+
+		pos--;
+	}
+
+	return NULL;
 }
 
 static void debug_path(struct traverse_info *info)
@@ -1248,6 +1329,21 @@
 }
 
 /*
+ * Returns true if and only if the given cache_entry is a
+ * sparse-directory entry that matches the given name_entry
+ * from the tree walk at the given traverse_info.
+ */
+static int is_sparse_directory_entry(struct cache_entry *ce,
+				     struct name_entry *name,
+				     struct traverse_info *info)
+{
+	if (!ce || !name || !S_ISSPARSEDIR(ce->ce_mode))
+		return 0;
+
+	return sparse_dir_matches_path(ce, info, name);
+}
+
+/*
  * Note that traverse_by_cache_tree() duplicates some logic in this function
  * without actually calling it. If you change the logic here you may need to
  * check and change there as well.
@@ -1303,7 +1399,7 @@
 		}
 	}
 
-	if (unpack_nondirectories(n, mask, dirmask, src, names, info) < 0)
+	if (unpack_single_entry(n, mask, dirmask, src, names, info) < 0)
 		return -1;
 
 	if (o->merge && src[0]) {
@@ -1333,9 +1429,12 @@
 			}
 		}
 
-		if (traverse_trees_recursive(n, dirmask, mask & ~dirmask,
-					     names, info) < 0)
+		if (!is_sparse_directory_entry(src[0], names, info) &&
+		    traverse_trees_recursive(n, dirmask, mask & ~dirmask,
+						    names, info) < 0) {
 			return -1;
+		}
+
 		return mask;
 	}
 
@@ -2509,6 +2608,17 @@
 			 same(current, oldtree) && !same(current, newtree)) {
 			/* 20 or 21 */
 			return merged_entry(newtree, current, o);
+		} else if (current && !oldtree && newtree &&
+			   S_ISSPARSEDIR(current->ce_mode) != S_ISSPARSEDIR(newtree->ce_mode) &&
+			   ce_stage(current) == 0) {
+			/*
+			 * This case is a directory/file conflict across the sparse-index
+			 * boundary. When we are changing from one path to another via
+			 * 'git checkout', then we want to replace one entry with another
+			 * via merged_entry(). If there are staged changes, then we should
+			 * reject the merge instead.
+			 */
+			return merged_entry(newtree, current, o);
 		} else
 			return reject_merge(current, o);
 	}
diff --git a/upload-pack.c b/upload-pack.c
index 297b76f..6ce0723 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -1417,21 +1417,25 @@
 			  struct string_list *wanted_refs,
 			  struct object_array *want_obj)
 {
-	const char *arg;
-	if (skip_prefix(line, "want-ref ", &arg)) {
+	const char *refname_nons;
+	if (skip_prefix(line, "want-ref ", &refname_nons)) {
 		struct object_id oid;
 		struct string_list_item *item;
 		struct object *o;
+		struct strbuf refname = STRBUF_INIT;
 
-		if (read_ref(arg, &oid)) {
-			packet_writer_error(writer, "unknown ref %s", arg);
-			die("unknown ref %s", arg);
+		strbuf_addf(&refname, "%s%s", get_git_namespace(), refname_nons);
+		if (ref_is_hidden(refname_nons, refname.buf) ||
+		    read_ref(refname.buf, &oid)) {
+			packet_writer_error(writer, "unknown ref %s", refname_nons);
+			die("unknown ref %s", refname_nons);
 		}
+		strbuf_release(&refname);
 
-		item = string_list_append(wanted_refs, arg);
+		item = string_list_append(wanted_refs, refname_nons);
 		item->util = oiddup(&oid);
 
-		o = parse_object_or_die(&oid, arg);
+		o = parse_object_or_die(&oid, refname_nons);
 		if (!(o->flags & WANTED)) {
 			o->flags |= WANTED;
 			add_object_array(o, NULL, want_obj);
diff --git a/userdiff.c b/userdiff.c
index 3c3bbe3..af02b18 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -13,6 +13,16 @@
 #define IPATTERN(name, pattern, word_regex)			\
 	{ name, NULL, -1, { pattern, REG_EXTENDED | REG_ICASE }, \
 	  word_regex "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+" }
+
+/*
+ * Built-in drivers for various languages, sorted by their names
+ * (except that the "default" is left at the end).
+ *
+ * When writing or updating patterns, assume that the contents these
+ * patterns are applied to are syntactically correct.  The patterns
+ * can be simple without implementing all syntactical corner cases, as
+ * long as they are sufficiently permissive.
+ */
 static struct userdiff_driver builtin_drivers[] = {
 IPATTERN("ada",
 	 "!^(.*[ \t])?(is[ \t]+new|renames|is[ \t]+separate)([ \t].*)?$\n"
@@ -65,7 +75,7 @@
 	 /* Properties */
 	 "^[ \t]*(((static|public|internal|private|protected|new|virtual|sealed|override|unsafe)[ \t]+)*[][<>@.~_[:alnum:]]+[ \t]+[@._[:alnum:]]+)[ \t]*$\n"
 	 /* Type definitions */
-	 "^[ \t]*(((static|public|internal|private|protected|new|unsafe|sealed|abstract|partial)[ \t]+)*(class|enum|interface|struct)[ \t]+.*)$\n"
+	 "^[ \t]*(((static|public|internal|private|protected|new|unsafe|sealed|abstract|partial)[ \t]+)*(class|enum|interface|struct|record)[ \t]+.*)$\n"
 	 /* Namespace */
 	 "^[ \t]*(namespace[ \t]+.*)$",
 	 /* -- */
@@ -142,7 +152,11 @@
 	 "[^<>= \t]+"),
 PATTERNS("java",
 	 "!^[ \t]*(catch|do|for|if|instanceof|new|return|switch|throw|while)\n"
-	 "^[ \t]*(([A-Za-z_][A-Za-z_0-9]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$",
+	 /* Class, enum, and interface declarations */
+	 "^[ \t]*(([a-z]+[ \t]+)*(class|enum|interface)[ \t]+[A-Za-z][A-Za-z0-9_$]*[ \t]+.*)$\n"
+	 /* Method definitions; note that constructor signatures are not */
+	 /* matched because they are indistinguishable from method calls. */
+	 "^[ \t]*(([A-Za-z_<>&][][?&<>.,A-Za-z_0-9]*[ \t]+)+[A-Za-z_][A-Za-z_0-9]*[ \t]*\\([^;]*)$",
 	 /* -- */
 	 "[a-zA-Z_][a-zA-Z0-9_]*"
 	 "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?"
@@ -214,7 +228,7 @@
 	 "|<<|<>|<=>|>>"),
 PATTERNS("php",
 	 "^[\t ]*(((public|protected|private|static|abstract|final)[\t ]+)*function.*)$\n"
-	 "^[\t ]*((((final|abstract)[\t ]+)?class|interface|trait).*)$",
+	 "^[\t ]*((((final|abstract)[\t ]+)?class|enum|interface|trait).*)$",
 	 /* -- */
 	 "[a-zA-Z_][a-zA-Z0-9_]*"
 	 "|[-+0-9.e]+|0[xXbB]?[0-9a-fA-F]+"
diff --git a/worktree.c b/worktree.c
index 237517b..092a4f9 100644
--- a/worktree.c
+++ b/worktree.c
@@ -265,6 +265,7 @@
 }
 
 /* convenient wrapper to deal with NULL strbuf */
+__attribute__((format (printf, 2, 3)))
 static void strbuf_addf_gently(struct strbuf *buf, const char *fmt, ...)
 {
 	va_list params;
diff --git a/wrapper.c b/wrapper.c
index 563ad59..7c6586a 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -193,7 +193,9 @@
 		if (errno == EINTR)
 			continue;
 
-		if ((oflag & O_RDWR) == O_RDWR)
+		if ((oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
+			die_errno(_("unable to create '%s'"), path);
+		else if ((oflag & O_RDWR) == O_RDWR)
 			die_errno(_("could not open '%s' for reading and writing"), path);
 		else if ((oflag & O_WRONLY) == O_WRONLY)
 			die_errno(_("could not open '%s' for writing"), path);
diff --git a/wt-status.c b/wt-status.c
index 42b6735..e4f29b2 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -639,7 +639,7 @@
 		 * mode by passing a command line option we do not ignore any
 		 * changed submodule SHA-1s when comparing index and HEAD, no
 		 * matter what is configured. Otherwise the user won't be
-		 * shown any submodules she manually added (and which are
+		 * shown any submodules manually added (and which are
 		 * staged to be committed), which would be really confusing.
 		 */
 		handle_ignore_submodules_arg(&rev.diffopt, "dirty");
@@ -657,6 +657,36 @@
 	clear_pathspec(&rev.prune_data);
 }
 
+static int add_file_to_list(const struct object_id *oid,
+			    struct strbuf *base, const char *path,
+			    unsigned int mode, void *context)
+{
+	struct string_list_item *it;
+	struct wt_status_change_data *d;
+	struct wt_status *s = context;
+	struct strbuf full_name = STRBUF_INIT;
+
+	if (S_ISDIR(mode))
+		return READ_TREE_RECURSIVE;
+
+	strbuf_add(&full_name, base->buf, base->len);
+	strbuf_addstr(&full_name, path);
+	it = string_list_insert(&s->change, full_name.buf);
+	d = it->util;
+	if (!d) {
+		CALLOC_ARRAY(d, 1);
+		it->util = d;
+	}
+
+	d->index_status = DIFF_STATUS_ADDED;
+	/* Leave {mode,oid}_head zero for adds. */
+	d->mode_index = mode;
+	oidcpy(&d->oid_index, oid);
+	s->committable = 1;
+	strbuf_release(&full_name);
+	return 0;
+}
+
 static void wt_status_collect_changes_initial(struct wt_status *s)
 {
 	struct index_state *istate = s->repo->index;
@@ -671,6 +701,27 @@
 			continue;
 		if (ce_intent_to_add(ce))
 			continue;
+		if (S_ISSPARSEDIR(ce->ce_mode)) {
+			/*
+			 * This is a sparse directory entry, so we want to collect all
+			 * of the added files within the tree. This requires recursively
+			 * expanding the trees to find the elements that are new in this
+			 * tree and marking them with DIFF_STATUS_ADDED.
+			 */
+			struct strbuf base = STRBUF_INIT;
+			struct pathspec ps = { 0 };
+			struct tree *tree = lookup_tree(istate->repo, &ce->oid);
+
+			ps.recursive = 1;
+			ps.has_wildcard = 1;
+			ps.max_depth = -1;
+
+			strbuf_add(&base, ce->name, ce->ce_namelen);
+			read_tree_at(istate->repo, tree, &base, &ps,
+				     add_file_to_list, s);
+			continue;
+		}
+
 		it = string_list_insert(&s->change, ce->name);
 		d = it->util;
 		if (!d) {
@@ -699,14 +750,13 @@
 static void wt_status_collect_untracked(struct wt_status *s)
 {
 	int i;
-	struct dir_struct dir;
+	struct dir_struct dir = DIR_INIT;
 	uint64_t t_begin = getnanotime();
 	struct index_state *istate = s->repo->index;
 
 	if (!s->show_untracked_files)
 		return;
 
-	dir_init(&dir);
 	if (s->show_untracked_files != SHOW_ALL_UNTRACKED_FILES)
 		dir.flags |=
 			DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES;
@@ -737,7 +787,7 @@
 
 	dir_clear(&dir);
 
-	if (advice_status_u_option)
+	if (advice_enabled(ADVICE_STATUS_U_OPTION))
 		s->untracked_in_ms = (getnanotime() - t_begin) / 1000000;
 }
 
@@ -1108,7 +1158,7 @@
 	if (!format_tracking_info(branch, &sb, s->ahead_behind_flags))
 		return;
 
-	if (advice_status_ahead_behind_warning &&
+	if (advice_enabled(ADVICE_STATUS_AHEAD_BEHIND_WARNING) &&
 	    s->ahead_behind_flags == AHEAD_BEHIND_FULL) {
 		uint64_t t_delta_in_ms = (getnanotime() - t_begin) / 1000000;
 		if (t_delta_in_ms > AB_DELAY_WARNING_IN_MS) {
@@ -1493,9 +1543,12 @@
 	if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_DISABLED)
 		return;
 
-	status_printf_ln(s, color,
-			 _("You are in a sparse checkout with %d%% of tracked files present."),
-			 s->state.sparse_checkout_percentage);
+	if (s->state.sparse_checkout_percentage == SPARSE_CHECKOUT_SPARSE_INDEX)
+		status_printf_ln(s, color, _("You are in a sparse checkout."));
+	else
+		status_printf_ln(s, color,
+				_("You are in a sparse checkout with %d%% of tracked files present."),
+				s->state.sparse_checkout_percentage);
 	wt_longstatus_print_trailer(s);
 }
 
@@ -1653,6 +1706,11 @@
 		return;
 	}
 
+	if (r->index->sparse_index) {
+		state->sparse_checkout_percentage = SPARSE_CHECKOUT_SPARSE_INDEX;
+		return;
+	}
+
 	for (i = 0; i < r->index->cache_nr; i++) {
 		struct cache_entry *ce = r->index->cache[i];
 		if (ce_skip_worktree(ce))
@@ -1787,7 +1845,7 @@
 		wt_longstatus_print_other(s, &s->untracked, _("Untracked files"), "add");
 		if (s->show_ignored_mode)
 			wt_longstatus_print_other(s, &s->ignored, _("Ignored files"), "add -f");
-		if (advice_status_u_option && 2000 < s->untracked_in_ms) {
+		if (advice_enabled(ADVICE_STATUS_U_OPTION) && 2000 < s->untracked_in_ms) {
 			status_printf_ln(s, GIT_COLOR_NORMAL, "%s", "");
 			status_printf_ln(s, GIT_COLOR_NORMAL,
 					 _("It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
diff --git a/wt-status.h b/wt-status.h
index 0d32799b..ab9cc9d 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -78,6 +78,7 @@
 };
 
 #define SPARSE_CHECKOUT_DISABLED -1
+#define SPARSE_CHECKOUT_SPARSE_INDEX -2
 
 struct wt_status_state {
 	int merge_in_progress;
diff --git a/xdiff-interface.c b/xdiff-interface.c
index 609615d..75b32ae 100644
--- a/xdiff-interface.c
+++ b/xdiff-interface.c
@@ -31,29 +31,36 @@
 	return 0;
 }
 
-static void consume_one(void *priv_, char *s, unsigned long size)
+static int consume_one(void *priv_, char *s, unsigned long size)
 {
 	struct xdiff_emit_state *priv = priv_;
 	char *ep;
 	while (size) {
 		unsigned long this_size;
+		int ret;
 		ep = memchr(s, '\n', size);
 		this_size = (ep == NULL) ? size : (ep - s + 1);
-		priv->line_fn(priv->consume_callback_data, s, this_size);
+		ret = priv->line_fn(priv->consume_callback_data, s, this_size);
+		if (ret)
+			return ret;
 		size -= this_size;
 		s += this_size;
 	}
+	return 0;
 }
 
 static int xdiff_outf(void *priv_, mmbuffer_t *mb, int nbuf)
 {
 	struct xdiff_emit_state *priv = priv_;
 	int i;
+	int stop = 0;
 
 	if (!priv->line_fn)
 		return 0;
 
 	for (i = 0; i < nbuf; i++) {
+		if (stop)
+			return 1;
 		if (mb[i].ptr[mb[i].size-1] != '\n') {
 			/* Incomplete line */
 			strbuf_add(&priv->remainder, mb[i].ptr, mb[i].size);
@@ -62,17 +69,21 @@
 
 		/* we have a complete line */
 		if (!priv->remainder.len) {
-			consume_one(priv, mb[i].ptr, mb[i].size);
+			stop = consume_one(priv, mb[i].ptr, mb[i].size);
 			continue;
 		}
 		strbuf_add(&priv->remainder, mb[i].ptr, mb[i].size);
-		consume_one(priv, priv->remainder.buf, priv->remainder.len);
+		stop = consume_one(priv, priv->remainder.buf, priv->remainder.len);
 		strbuf_reset(&priv->remainder);
 	}
+	if (stop)
+		return -1;
 	if (priv->remainder.len) {
-		consume_one(priv, priv->remainder.buf, priv->remainder.len);
+		stop = consume_one(priv, priv->remainder.buf, priv->remainder.len);
 		strbuf_reset(&priv->remainder);
 	}
+	if (stop)
+		return -1;
 	return 0;
 }
 
@@ -115,12 +126,6 @@
 	return xdl_diff(&a, &b, xpp, xecfg, xecb);
 }
 
-void discard_hunk_line(void *priv,
-		       long ob, long on, long nb, long nn,
-		       const char *func, long funclen)
-{
-}
-
 int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
 		  xdiff_emit_hunk_fn hunk_fn,
 		  xdiff_emit_line_fn line_fn,
diff --git a/xdiff-interface.h b/xdiff-interface.h
index 93df269..4301a7e 100644
--- a/xdiff-interface.h
+++ b/xdiff-interface.h
@@ -11,7 +11,28 @@
  */
 #define MAX_XDIFF_SIZE (1024UL * 1024 * 1023)
 
-typedef void (*xdiff_emit_line_fn)(void *, char *, unsigned long);
+/**
+ * The `xdiff_emit_line_fn` function can return 1 to abort early, or 0
+ * to continue processing. Note that doing so is an all-or-nothing
+ * affair, as returning 1 will return all the way to the top-level,
+ * e.g. the xdi_diff_outf() call to generate the diff.
+ *
+ * Thus returning 1 means you won't be getting any more diff lines. If
+ * you need something in-between those two options you'll to use
+ * `xdl_emit_hunk_consume_func_t` and implement your own version of
+ * xdl_emit_diff().
+ *
+ * We may extend the interface in the future to understand other more
+ * granular return values. While you should return 1 to exit early,
+ * doing so will currently make your early return indistinguishable
+ * from an error internal to xdiff, xdiff itself will see that
+ * non-zero return and translate it to -1.
+ *
+ * See "diff_grep" in diffcore-pickaxe.c for a trick to work around
+ * this, i.e. using the "consume_callback_data" to note the desired
+ * early return.
+ */
+typedef int (*xdiff_emit_line_fn)(void *, char *, unsigned long);
 typedef void (*xdiff_emit_hunk_fn)(void *data,
 				   long old_begin, long old_nr,
 				   long new_begin, long new_nr,
@@ -33,14 +54,6 @@
 extern int git_xmerge_style;
 
 /*
- * Can be used as a no-op hunk_fn for xdi_diff_outf(), since a NULL
- * one just sends the hunk line to the line_fn callback).
- */
-void discard_hunk_line(void *priv,
-		       long ob, long on, long nb, long nn,
-		       const char *func, long funclen);
-
-/*
  * Compare the strings l1 with l2 which are of size s1 and s2 respectively.
  * Returns 1 if the strings are deemed equal, 0 otherwise.
  * The `flags` given as XDF_WHITESPACE_FLAGS determine how white spaces
diff --git a/xdiff/xdiff.h b/xdiff/xdiff.h
index 7a04605..b29deca 100644
--- a/xdiff/xdiff.h
+++ b/xdiff/xdiff.h
@@ -50,6 +50,7 @@
 
 /* xdemitconf_t.flags */
 #define XDL_EMIT_FUNCNAMES (1 << 0)
+#define XDL_EMIT_NO_HUNK_HDR (1 << 1)
 #define XDL_EMIT_FUNCCONTEXT (1 << 2)
 
 /* merge simplification levels */
diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
index 380eb72..a4542c0 100644
--- a/xdiff/xdiffi.c
+++ b/xdiff/xdiffi.c
@@ -796,12 +796,6 @@
 	}
 }
 
-static void xdl_bug(const char *msg)
-{
-	fprintf(stderr, "BUG: %s\n", msg);
-	exit(1);
-}
-
 /*
  * Move back and forward change groups for a consistent and pretty diff output.
  * This also helps in finding joinable change groups and reducing the diff
@@ -841,7 +835,7 @@
 			/* Shift the group backward as much as possible: */
 			while (!group_slide_up(xdf, &g, flags))
 				if (group_previous(xdfo, &go))
-					xdl_bug("group sync broken sliding up");
+					BUG("group sync broken sliding up");
 
 			/*
 			 * This is this highest that this group can be shifted.
@@ -857,7 +851,7 @@
 				if (group_slide_down(xdf, &g, flags))
 					break;
 				if (group_next(xdfo, &go))
-					xdl_bug("group sync broken sliding down");
+					BUG("group sync broken sliding down");
 
 				if (go.end > go.start)
 					end_matching_other = g.end;
@@ -882,9 +876,9 @@
 			 */
 			while (go.end == go.start) {
 				if (group_slide_up(xdf, &g, flags))
-					xdl_bug("match disappeared");
+					BUG("match disappeared");
 				if (group_previous(xdfo, &go))
-					xdl_bug("group sync broken sliding to match");
+					BUG("group sync broken sliding to match");
 			}
 		} else if (flags & XDF_INDENT_HEURISTIC) {
 			/*
@@ -925,9 +919,9 @@
 
 			while (g.end > best_shift) {
 				if (group_slide_up(xdf, &g, flags))
-					xdl_bug("best shift unreached");
+					BUG("best shift unreached");
 				if (group_previous(xdfo, &go))
-					xdl_bug("group sync broken sliding to blank line");
+					BUG("group sync broken sliding to blank line");
 			}
 		}
 
@@ -936,11 +930,11 @@
 		if (group_next(xdf, &g))
 			break;
 		if (group_next(xdfo, &go))
-			xdl_bug("group sync broken moving to next group");
+			BUG("group sync broken moving to next group");
 	}
 
 	if (!group_next(xdfo, &go))
-		xdl_bug("group sync broken at end of file");
+		BUG("group sync broken at end of file");
 
 	return 0;
 }
diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index 9d7d6c5..1cbf2b9 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -278,7 +278,8 @@
 				      s1 - 1, funclineprev);
 			funclineprev = s1 - 1;
 		}
-		if (xdl_emit_hunk_hdr(s1 + 1, e1 - s1, s2 + 1, e2 - s2,
+		if (!(xecfg->flags & XDL_EMIT_NO_HUNK_HDR) &&
+		    xdl_emit_hunk_hdr(s1 + 1, e1 - s1, s2 + 1, e2 - s2,
 				      func_line.buf, func_line.len, ecb) < 0)
 			return -1;